機械学習
ナビゲーションに移動
検索に移動
| TensorFlow | Docker | Ubuntu | 数学 | 統計 | ベイズ統計 | データ解析 | R |
目次
機械学習
3種類の機械学習
教師あり学習(supervised learning)
- ラベル付された'訓練データ'(training data)からモデルを学習し、未知のデータを予測できるようにする
- 離散値のクラスラベルを持つ教師あり学習は'分類'(classification)とも呼ばれる
- 教師あり学習の回帰(regression)サブフィールドの場合、出力信号は連続値となる
クラスラベルの予測(分類)
- 分類は新しいインスタンスを対象としてクラスラベルを予測することが目標
- インスタンスの所属関係(group membership)として解釈できる
- メールスパムフィルタは、二値分類(binary classification)の典型例
- ’陰性クラス(negative class)と陽性クラス(positive class)を区別する決定境界(decision boundary)を学習すれば分類できる
基礎
- 未定義の値はパラメータ、説明はモデル
- 典型的には、学習と推論の2段階でアルゴリズムを調べる
- 学習段階での目的は、特徴モデルと呼ばれるデータを記述し、モデルに要約すること
- 特徴ベクトルは、実際のデータを単純化したもの、学習・推論のステップはデータそのものではなく、特徴ベクトルに依存
- 測定する値とどの測定値を比較すべきかの設計は、特徴量設計と呼ばれる
- 調べる特徴の数が多すぎるとパフォーマンスが低下する可能性(次元の呪い)
- 同一性は構成されている特徴に分解される
学習アプローチ
- 訓練データ
- 特徴ベクトル
- 学習アルゴリズム
- モデル
推論アプローチ
- テストデータ
- 特徴ベクトル
- モデル
- 予測
距離の測定
学習のタイプ
教師あり学習
- モデルと呼ばれるラベル付きデータを必要とする
- 訓練データセットと呼ばれる例の集まりを使用する
教師なし学習
強化学習
- 環境が行動によりどう反応するかを観察することで収集される情報を訓練する
- どのような行動の組み合わせが最も有利な結果をもたらすかを知るため
アルゴリズム
アルゴリズム | 用途 | 備考 |
---|---|---|
線形回帰 | トレンドの予測 | |
ロジスティクス回帰 | データを2つのカテゴリに分類し、データセットを分割する最善の方法を見つける | |
多クラスタロジスティクス回帰 | データを複数のカテゴリに分類する | |
隠れマルコフモデル(ビタビ) | 最も可能性の高い隠れた理由を見出す | |
k平均法 | 固定数のカテゴリにクラスタリングし、自動的に分割 | |
自己組織化マップ | 任意のカテゴリにクラスタリングし、高次元データを2次元平面上へ非線形写像する | |
オートエンコーダ | 入力されたデータを一度圧縮し、重要な特徴量だけを残した後、再度もとの次元に復元 | |
Qポリシーニューラルネットワーク | ニューラルネットワークを用いた環境での強化学習 | |
パーセプトロン | 教師ありニューラルネットワークを用いたデータの分類 | |
畳み込みニューラルネットワーク | 教師ありニューラルネットワークを用いた次世界画像の分類 | |
リカレントニューラルネットワーク | ニューラルネットワークを使用して観測に一致するパターンを生成 | |
シーエンス変換(Seq2seq)モデル | 自然言語の問い合わせに対する自然言語応答の予測 | |
順位付け | 効用の学習によって項目を順位付けするための学習 |
線形回帰
バリアンスとバイアス
- バイアスとバリアンス(偏りと分散)のトレードオフ(Bias-Variance Tradeoff)とは?
- バイアス(偏り:Bias)とは、予測値と真の値(=正解値)とのズレ(つまり「偏り誤差:Bias error」)を指す
- バイアス(偏り誤差)が大きすぎる場合、そのモデルは入力と出力の関係性を正確に表現できていない(=訓練データでさえも正確に予測できない)といえる。いわゆる「学習不足(=過少適合:under-fitting)」の状態
- バリアンス(分散:Variance)とは、予測値の広がり(つまり「ばらつき誤差:Variance error」)を指す。この予測誤差は、訓練データの揺らぎから生じる
- バリアンス(ばらつき誤差)が大きすぎる場合、そのモデルは訓練データのノイズまで学習してしまっている(=テストデータなど未知のデータでは正確に予測できない)。いわゆる「過学習(=過剰適合:over-fitting)」の状態
import matplotlib matplotlib.use("WebAgg") import numpy as np import matplotlib.pyplot as plt x_train = np.linspace(-1, 1, 101) y_train = 2 * x_train + np.random.randn(*x_train.shape) * 0.33 plt.scatter(x_train, y_train) plt.show()
TensorFlow
© 2006 矢木浩人