機械学習とは
機械学習(Machine Learning)は
蓄積されたデータを解析し有用なルール、規則、判断基準などを抽出する技術、手法
の総称です。
機械学習は目的に応じて大きく2つに分類できます。
- 教師あり学習: 「入力」と「対応する出力」のデータから入出力関係を求める
- 教師なし学習: データから背後に潜む構造を抽出する
時々、「教師なし学習の方が教師例がなくても良いので優れている」や「教師あり学習の方が高精度で優れている」といった比較を見かけますが、あくまで解きたい課題に応じて使い分けるものです。
また、「深層学習(Deep Learning)」を「機械学習の進化版」や「深層学習こそがAIであって機械学習はAIではない」といった意見を見かけますが、技術的には
- 教師あり学習の1手法であるNeural Networkを多層化したものがDeep Neural Network(DNN)
- DNNの設計、学習手法の総称が深層学習
と捉えるのが自然なので、ここでは「教師あり学習」の一部と捉えます。
教師あり学習の代表的手法
教師あり学習(Supervised Learning)は「入力」と「対応する出力」のデータから入出力関係を求める手法です。一般には[math]N[/math]個の入出力データ
- 入力: [math]n[/math]次元のベクトル[math]\mathbf{x}_i\in \mathbb{R}^n[/math]
- 出力: [math]y_i\in \mathbb{R}[/math]
の組[math](\mathbf{x}_i,\ y_i),\ (i=1,2,\dots,N)[/math]から入出力関係をうまく「近似」する関数[math]f[/math]
[math]
y_i \approx f(p; \mathbf{x}_i)\quad i=1,2,\dots,N
[/math]
を求める問題として定式化されます。この関数[math]f[/math]を「機械学習モデル」や単に「モデル」と呼び、関数[math]f[/math]やそのパラメタ[math]p[/math]を求める計算方法を「学習アルゴリズム」と呼びます。
関数[math]f[/math]の候補や「近似」のものさしをどうするかで様々な手法があります。
- 線形回帰: 入力データ[math]\mathbf{x}[/math]の線形結合で近似
- 決定木/回帰木: 入力データ[math]\mathbf{x}[/math]のIf-thenルールで近似
- Neural Network: 入力データ[math]\mathbf{x}[/math]の線形結合と活性化関数の組合せで近似
- Support Vector Machine: 入力データをカーネル関数で変換し線型結合で近似
最近では決定木/回帰木を多数組合せた「Random Forest」、「eXtreme Gradient Boosting」や複数のモデルを組合せたアンサンブル学習も人気があります。
高精度な機械学習モデルを作るには
- 手法の前提、動作、計算量や結果の解釈方法
- 手法の前提や動作に合わせた入力データの加工
- 未知データに対する精度評価
を理解しておく必要があります。本ブログでも
- 各手法の考え方と特徴
- 特徴量エンジニアリング
- モデル評価方法
をこちらのページで紹介していく予定です。
教師なし学習の代表的手法
教師なし学習(Unsupervised Learning)はデータから背後に潜む構造を抽出する手法です。求めたい「背後に潜む構造」に応じて以下の手法があります。
- クラスタリング: データ内の「似たグループ」を抽出
- K平均法: データをK個のグループに分割
- デンドログラム: データを階層的にグループ化
- 次元圧縮: 多数の変数で表現されるデータを少数の変数で表現
- 主成分分析: 少数の主成分ベクトルの線型結合で表現
- 自己組織化マップ: Neural Networkを使ってデータを低次元に変換
教師なし学習はデータを概観したい場合や教師あり学習の類似する入力データを集約し、学習しやすくする際などに用いられます。