MotoJapan's Tech-Memo

技術めも

【機械学習】超雑メモ2 (サポートベクターマシン(SVM)、決定木(Decision Tree))

続き
motojapan.hateblo.jp

サポートベクターマシン(SVM)

  • マージン最大化により得られる超平面で分類/回帰
  • カーネルトリックを使った非線形分離が可能
    • カーネル」=「2サンプル間の類似性を表現する関数」
    • [python] 例えば、kernel=rbf
    • ハイパーパラメータ C/γを調整
      • C = 誤差分類ペナルティ : マージン幅を制御可能
        • 大きい程、誤差を許さない
      • γ = 1 / σ^2 (分散の逆数)
        • 小さい程、トレーニングサンプルの影響が大きくなり、決定境界が滑らかになる
  • ハイパーパラメータはグリッドサーチで最適解を求める
    • [python] from sklearn.grid_search import GridSearchCV が便利

決定木(Decision Tree)

  • 情報利得最大化となる特徴量でデータを分割
    • 情報利得:分割された集合のばらつきの減少
  • 葉が純粋(すべて同じクラス)になるまで分割
  • ただし、決定木の深さ=過学習と検索速度
  • 分割条件は3つ
    • エントロピー (entropy)
      • 各クラスの相互依存度を最大化するという条件(それぞれのノードの各クラスのばらつきを最小化)
      • IH(t) = - \sum_{i=1}^{C}(p(i|t)log2(p(i|t)))
      • p(i|t) : 特定ノードtにおいてクラスiに属するサンプルの割合

f:id:motojapan:20170607003010p:plain

    • ジニ不純度 (Gini impurity)
      • 不純度を最小化(誤分類確率の最小化)するという条件
      • IG(t) =  \sum_{i=1}^{C}(p(i|t)(1-p(i|t)) = 1 - \sum_{i=1}^{C}p(i|t)^2
      • 二値分類でこれが最大化するのは、p(i|t)=0.5 : IG(t) = 0.5

f:id:motojapan:20170607005322p:plain

    • 分類誤差 (classification error)
      • IE(t) =  1 - \max[p(i|t)]
  • Random Forest
    • Decision Treeのアンサンブル学習
    • トレーニングデータセットとして、ブーストラップ標本を用いる
    • 汎化性能向上と過学習回避、Decision Tree noiseに強い
    • Decision Treeの数だけ計算コスト大
    • 各分割の特徴量数 {\sqrt{m}} :
    •  m:トレーニングデータセットの特徴量個数