machine learning, week 7

サポートベクターマシン(SVM)について学ぶ

SVMのコスト関数は

 \displaystyle J(\theta)=C \sum_{i=1}^{m} y^{(i)} cost_1(\theta ^T x^{(i)})+(1-y^{(i)})cost_0(\theta ^T x^{(i)}) +\dfrac{1}{2}\sum_{j=1}^{m}\Theta_j^2

と定義されるが,このcost関数は

-\log{\dfrac{1}{1+e^{-z}}} によく似た,漸近直線を組み合わせたような形状をしている.Screen Shot 2017-04-02 at 8.12.44

…本当か!?

ng先生が言うんだからそうなんだろう.SVMで株価予測するかー

さて,話を戻すと

Cは\frac{1}{\lambda}のようなもので,Cを大きくするとオーバーフィッティングする.すなわち,Cの値が大きいほど外れ値の影響を強く受ける.

SVMはいわばラージマージン分類器である.データと決定境界の間のマージンを大きくとるような境界を出力する.

線形分類できない問題に対しては,カーネルを用いる.カーネルは入力値を利用して新たな特徴fを定義し,それを用いて仮説を構築する.

具体的にはランドマークと呼ばれる,入力値に近似を行うポイントを用意し,このランドマークからの近似値をfと定義する.この近似値を求める関数を数学的にはカーネルという.

  • 線形カーネル
    特徴量が多くてトレーニングデータが少ない時,十分なデータがないとオーバーフィッティングしやすいので,線形カーネルを使用する(カーネルを使用しない)
  • ガウシアンカーネル
    特徴量が少なくトレーニングデータが多い時にはガウシアンカーネルを使用する.
    この場合はパラメータ\sigmaを決定する必要があり,この値はバイアスとバリアンスのトレードオフになる.

Screen Shot 2017-04-06 at 5.09.33

SVMを使うのはどう言う時か

特徴量の数とサンプル数に従って,選択する手法は次のようになる.

Screen Shot 2017-04-06 at 23.16.03

ロジスティック回帰と線形SVMは似たような挙動をする(コスト関数が似ているから!)

SVMの真価は非線形境界を決定するガウシアンカーネルであり,これが使える条件が整っていることを使用前に確認しておく.

ちなみに,この全ての場合でニューラルネットワークは使えるが,場合によっては遅いので,そう言う時にはSVMに頼る.

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中