2017-06-07 【機械学習】超雑メモ2 (サポートベクターマシン(SVM)、決定木(Decision Tree)) 機械学習 続き motojapan.hateblo.jp サポートベクターマシン(SVM) マージン最大化により得られる超平面で分類/回帰 [python] sklearn でいうところの SVC/SVR カーネルトリックを使った非線形分離が可能 「カーネル」=「2サンプル間の類似性を表現する関数」 [python] 例えば、kernel=rbf ハイパーパラメータ C/γを調整 C = 誤差分類ペナルティ : マージン幅を制御可能 大きい程、誤差を許さない (分散の逆数) 小さい程、トレーニングサンプルの影響が大きくなり、決定境界が滑らかになる ハイパーパラメータはグリッドサーチで最適解を求める [python] from sklearn.grid_search import GridSearchCV が便利 決定木(Decision Tree) 情報利得最大化となる特徴量でデータを分割 情報利得:分割された集合のばらつきの減少 葉が純粋(すべて同じクラス)になるまで分割 ただし、決定木の深さ=過学習と検索速度 分割条件は3つ エントロピー (entropy) 各クラスの相互依存度を最大化するという条件(それぞれのノードの各クラスのばらつきを最小化) : 特定ノードtにおいてクラスiに属するサンプルの割合 ジニ不純度 (Gini impurity) 不純度を最小化(誤分類確率の最小化)するという条件 二値分類でこれが最大化するのは、 分類誤差 (classification error) Random Forest Decision Treeのアンサンブル学習 トレーニングデータセットとして、ブーストラップ標本を用いる 汎化性能向上と過学習回避、Decision Tree noiseに強い Decision Treeの数だけ計算コスト大 各分割の特徴量数 : :トレーニングデータセットの特徴量個数