Machine Learning Algorithms pros and cons
Machine Learning at Google scale(https://bit.ly/2uNVuun)
はじめに
統計学 vs. 機械学習
統計モデルはデータの説明・傾向を掴むのが得意. 機械学習はデータによって学習し,ソフトウェアの一部として分類・タスクそのものを実行する.
統計モデルの核は、「確率分布」.データをその分布を明らかにすることによって、未知のデータモデルの生成を可能にしている. 一般的には回帰モデルが得意で、複数の予測変数の影響度を切り離して考えることができる.
機械学習は典型的な記述統計パラメーター(平均値、分布)を使わずに、アルゴリズム的なアプローチをとる. 分類タスクやパターン認識が得意. 説明変数と目的変数間にある関係や構造への配慮がそれほどない.
つまり、機械学習は既存の統計学から大きく離れているわけではない. より大きな変化や機械学習の論点はどこか?
- 非構造化データの処理: 単純作業の代替「プログラムが目を持った」
- ディープラーニングとそれを支える計算量の増加
- いかに機械学習のアルゴリズムを既存のソフトウェアのアーキテクチャに組み込むか?
上記のような議論がピントになると思う.
TL;DR
ロジスティック回帰から始めて、次にアンサンブル学習木(バギング、ブースティング)、最後にNeural Networksを試そう!とのこと.
アルゴリズムリスト
- 線形回帰
- ロジスティック回帰
- SVM(サポートベクトルマシン)
- 決定木
- ランダムフォレスト
- 勾配ブースティング木
- ナイーブベイズ
- K-Means
- K-NN
- NN
- CNN
- LSTM
項目リスト
- Task
- Keyword
- Pros
- Cons
- General Information
多変量線形回帰
データの分布や傾向を線によって表現できる線形モデル
Task:
- 回帰(連続値)
Keyword:
- 最小二乗法: モデルのoutputと観測値が最も近似するようにする
- 最尤推定: データからそれが従う確率分布の母数を点推定する
- 相関係数: 2つの確率変数の間にある線形な関係の強弱を測る指標
Pros:
- どの説明変数が目的変数に与える影響が大きいかがわかる
Cons:
- 多重共線性を処理する必要がある
General Information:
- 計算コスト: 低
- 説明可能性: ○
- 好みの分布: 正規分布
- データ量: 少量が向いている
- データの質: 連続値
ロジスティック回帰
ベルヌーイ分布に従う変数の統計的回帰モデルの一種であり、二項分類が得意な線形モデル
Task:
- バイナリ分類(マルチクラスも可能)
Keyword:
- 発生確率(シグモイド関数:0~1): 信頼区間
- オッズ比: Aのオッズ比 A:勝ち/負け // B:勝ち/負け = A/B
- 正則化: 正則化項を用いてモデルの複雑さに罰則を科す
Pros:
- 多重共線性を処理する必要がない
- ほとんどの非線形特徴量を線形特徴量に簡単にエンジニアリングできる
- オンライン勾配降下法: モデルを簡単に更新して新しいデータを取り込むことができる
Cons:
- ソフトマージン:外れ値などに過剰反応しやすい
- 過学習を防ぐために正則化が必要
- カテゴリーデータをうまく処理できない
General Information:
- 計算コスト: 低
- 説明可能性: ○
- 好みの分布: ベルヌーイ分布
- データ量: 少量が向いている
- データの質: 連続値
SVM(サポートベクトルマシン)
教師あり学習を用いるパターン認識を可能とするロバストな非線形モデル
Task:
- 分類、回帰(バイナリ分類がメイン)
Keyword:
- マージン最大化: ハードマージン、ロバスト、過学習に強い
- カーネル法: 次元追加(特徴ベクトルの内積をカーネル関数に置き換える)
Pros:
- 非常に高次元なデータ(数十万次元)に対応(テキスト分類などに適す)
- 欠損値(スパースなデータ)に強い
- ロバスト性: 異常値とノイズを非常にうまく処理する
- 多重共線性を気にしなくていい
Cons:
- ハイパーパラメータが多いため、調整がめんどくさい
- 訓練するには非効率的で、メモリを大量に消費
- データ量が少ないものに適し、ビッグデータを用いたビジネスアプリケーションには向かない
General Information:
- 損失関数: LRとは異なる損失関数(ヒンジ)を使用
- 計算コスト: 高
- 説明可能性: ×
- 好みの分布: ?
- データ量: 少ない、非常に大きなデータセット(数十万以上の例)を扱うのは得意でない
- データの質: 連続値、カテゴリ
決定木
木構造を用いて分類や回帰を行うグリーディーな非線形モデル
Task:
- 分類、回帰
Keyword:
- エントロピー(小さい順から): 各ノードの特徴を決める(argmax(分割前の不純度-分割後の不純度))
- 閾値: 0 if x > 0.22
Pros:
- 目的変数に無関係な変数を自動で削除(ジニ係数)
- 早い、精度が高い
- 欠損値や外れ値に強い
Cons:
- 木の深さを指定して、過学習を防ぐ必要がある
- グリーディーで最適化までは保証しない
General Information:
- 損失関数: ?
- 計算コスト: 高
- 説明可能性: ○
- 好みの分布: ?
- データ量: 少ない、非常に大きなデータセット(数十万以上の例)を扱うのは得意でない
- データの質: カテゴリーデータ
ランダムフォレスト
バギングによる決定木のアンサンブル学習. 非線形モデル.
Task:
- 分類、回帰
Keyword:
- バギング:アンサンブル学習
- 多数決(分類)と平均(回帰)
- ブートストラップ: 一部のデータ(not feature)で木を作る
Pros:
- 多くの場合で精度とFスコアが高い(決定木よりもはほぼ確定)
- 高次元データに対応
- 欠損値や外れ値に強い
Cons:
- モデルが完全にブラックボックス
- 木の数や深さ、各ノードの特徴の数を指定して、過学習を防ぐ必要がある
- 計算時間がめっちゃかかる(並列または分散コンピューティングに適している)
General Information:
- 損失関数: ?
- 計算コスト: 高
- 説明可能性: ×
- 好みの分布: ?
- データ量: 少ない、非常に大きなデータセット(数十万以上の例)を扱うのは得意でない
- データの質: カテゴリーデータ
勾配ブースティング木
直前の学習結果に基づいて次の訓練を行う逐次的な決定木のアンサンブル学習. 非線形モデル.
Task:
- 分類、回帰
Keyword:
- ブースティング:逐次的なアンサンブル学習
- エラー率とラベリング: 誤分類に重みをかける
- ブートストラップ: 一部のデータ(not feature)で木を作る
Pros:
- 非常に精度が高い(ランダムフォレストよりも)
- 高次元データに対応
- 欠損値や外れ値に強い
- 損失関数の選択肢に柔軟性があり, タスクの特性に合わせて調整できる
Cons:
- モデルが完全にブラックボックス
- ハイパーパラメータの調整が難しい: 木の数、木の深さ、および学習率
- 計算時間がめっちゃかかる(並列または分散コンピューティングに適している)
- 容易に過剰適合する傾向がある
General Information:
- 損失関数: バラエティ
- 計算コスト: 高
- 説明可能性: ×
- 好みの分布: ?
- データ量:
- データの質: カテゴリーデータ
ナイーブベイズ(単純ベイズ分類器)
説明変数が独立に予測対象に影響を与えていると仮定して、ベイズの定理を活用し、最もその分類が発生する確率が高いものを予測とする非線形モデル.
Task:
- 分類(テキストデータ)
Keyword:
- ベイズの定理: 条件付き確率と加法定理, 同時確率
- 事前確率と事後確率
Pros:
- 必要なトレーニングデータが少ない
- 計算速度が早い: 条件付き独立仮定の下で、識別モデルよりも速く収束する
Cons:
- 訓練データで仮定したデータの分布が異なる場合不能
- ゼロ頻度問題: あらかじめ出現回数に +1する
General Information:
- 損失関数:
- 計算コスト: 低
- 説明可能性: ×
- 好みの分布: ガウス分布, ベルヌーイ分布, 多項分布
- データ量: 少なくていい
- データの質: カテゴリーデータ、テキストデータ
Leave a Comment