本日のまとめ

正則化による過学習への対処

  • 過学習とは、トレーニングデータに適合しているが、テストデータではうまく適応できない問題のこと データに対して、パラメータの数が多すぎて、モデルが複雑なときに起こりうる。(高バリアンス)

  • バリアンスが高いと、データセットによって、予測結果がばらついてしまう。

  • 逆に、モデルがシンプルすぎて、学習不足に陥ることもある。バイアスが高い(高バイアス)ともいう。系統誤差の計測値ともとれる。

  • 誤差は、系統誤差と、偶然誤差に大別される。系統誤差は、同じ方法を用いて測定し、「真の値」に対して、系統的にずれる誤差。偶然誤差は測定のたびにばらつく誤差

  • バイアスとバリアンスのトレードオフを探る方法として、正則化に基づいて複雑さを調整することがある。

  • 正則化は、共線性を処理する手法で、ノイズを取り除き、過学習を防ぐ。

  • モデルの汎化誤差 = (バイアス)2 + バリアンス + ノイズ。両方小さいほうがいいが、どちらかを小さくすると、どちらかが大きくなるトレードオフの関係にあると知られている。

  • 共線性とは、特徴量の間の相関の高さのこと。

  • 極端なパラメータの重みにペナルティを科すための追加情報の導入である。最も一般的な正則化は、L2正則化(L2 regularization) である。

  • 
    \frac{\lambda}{2}  || {\omega} || ^2 = \frac{\lambda}{2}  \sum_{j=1}^{m}  {\omega_i}^{2}
    
    
  • 上記の式を、コスト関数に加えることで、極端に大きな重みをもつ場合は、コストが大きくなる
  • scikit learnのLogistic Regressionに実装されているパラメータCは、正則化パラメータを表している。
  • 
    C = \frac{1}{\lambda}
    
    

  • 
    J(w) = C * (誤差によるコスト) + \frac{\lambda}{2}  || {\omega} || ^2
    
    

  • Cが小さいと、正則化の項の寄与が大きくなり→正則化を強めることになる

サポートベクトルマシン(Support Vector Machine)による最大マージン分類

  • 参考
  • 境界がノンパラメトリック
  • スラック変数は、回帰における正則化のようなもの(バイアスとバリアンスのトレードオフ
  • SVMとロジスティック回帰の結果は似た者になるが、SVMの方が、決定境界に近い。また、ロジスティック回帰は、条件付尤度の最大化を考えているため、外れ値の影響を受けやすい
  • サポートベクトルマシンはマージンを考える
  • マージンとは、超平面(決定境界)と、超平面に最も近いサンプルとの距離
  • SVMの最適化は、マージンを最大化すること

  • マージンが小さい→過学習、マージンが大きい→汎化誤差が小さい

  • マージンは次の式であらわされる(詳細は略)

カーネルSVMを使った非線形問題の求解

  • ある次元のデータセットで、線形分離が不可能ものを、射影関数を使って、別の高次元空間へ射影して、 線形分離できるようにする
  • 射影関数の例

φ( x_1 , x_2 ) = (z_1 , z_2 , z_3 ) = ( x_1 , x_2 , {x_1}^2 , {x_2}^2 )

  • SVMを使って、非線形問題の解を求めるには、射影関数φを使ってより高い次元の特徴空間に変換し、この新しい特徴空間でデータを分類するための線形SVMモデルをトレーニングする
  • ただし、新しい特徴量を生成する必要があるので、計算コストが高くなる
  • そこで、2つのサンプル間の類似性を表すものとして、カーネルを定義する。
  • 最も広く使用されているカーネルは、動径基底関数カーネル(Radial Basis Function)である  参考
  • scikit-learnでは、SVCオブジェクトの生成時に、kernel='rbf'でRBFを指定できる。(linear)なら通常のサポートベクタマシン