機械学習-サポートベクターマシンSVM

1.背景

分類には多くの方法があります。

  • デシジョンツリー
    • インスタンスの属性は名目上のデータです
    • 目的関数は離散的です
  • K最近傍
    • インスタンスは(egEuclidean)空間内のポイントです
  • サポートベクターマシン
    • インスタンスは(egEuclidean)空間内のポイントです
    • 最大マージンクラシエとして知られています
    • もともと分類のために提案され、すぐに回帰と時系列予測に適用されました。
    • 最も効果的な教師あり学習方法の1つ
    • テキスト処理アプローチの強力なベースラインとして使用されています。

2.線形サポートベクターマシン

2.1最大マージン線形分類器

2.1.1問題:

一連のトレーニングサンプル{ }が与えられた場合 (x_1、y_1)、...(x_n、y_n)y_i = 1、-1

分類超平面を定義し ます。平面より上にあるものは正の例として分類され、平面より下にあるものは負の例として分類されます。

2.1.2線形分類器:

線形超平面 w_1x_1 + w_2x_2 + ... w_nx_n + b = 0

線形分離可能の場合を考えてみましょう。仕事をすることができる超平面は無数にあります

これらの行はどれでも問題ありません…しかし、どれが最良ですか?

機能的マージンと幾何学的マージン

定義:y = w * x + b = 0 決定された分離  超平面の場合の超平面関数を指す| w * x + b |それは超平面距離までの点xで表すことができます。関数間隔(で示される)は次のとおりです。

、分類が正しければ、関数間隔| w * x + b |です。

定義:トレーニングポイントセットからハイパープレーンまでの関数間隔ハイパープレーンとトレーニングセット内のy = w * x + b = 0すべてのサンプルポイント間の関数間隔の(x_i、y_i)最小値は 、ハイパープレーンからトレーニングセットまでの関数間隔です。

\ hat {\ gamma} = min \ hat {\ gamma_i}

ただし、このように定義された関数間隔には問題があります。つまり、wとbを比例的に変更すると(2wと2bに変更するなど)、関数間隔| f(x)|の値は2倍になります。オリジナル(ただし、現時点では超平面は変更されていません)であるため、関数間隔だけでは不十分です。実際、法線ベクトルwにいくつかの制約を追加できます。これにより、点から超平面までの距離を実際に定義する幾何学的マージンの概念が導き出さます。

定義:幾何学的間隔 

幾何学的間隔は、関数間隔を|| w ||で割ったものです。つまり \ tilde {\ gamma} = \ frac {\ hat {\ gamma}} {|| w ||} = \ frac {| f(x)|} {|| w ||}、実点から超平面までの距離を表します。

定義:最大マージン線形分類器:最大マージンを持つ線形分類器。

w_1x_1 + w_2x_2 + ... w_nx_n + b = \ pm 1分離面に平行な2つの追加の超平面を導入しました w_1x_1 + w_2x_2 + ... w_nx_n + b = 0

2つの新しい超平面間の距離はマージンと呼ばれます。そしてマージンは \ frac {2} {|| w || _2}

したがって、問題は次のようになります。

~~~~~~ max_〜w、b} \ frac {2 {{|| w || _2} \\ st ~~~ y_i(w_1x_1 + w_2x_2 + ... w_nx_n + b)\ geq 1、これはすべてのポイントが正しく分類されることを条件として、マージン最大化することを意味します。 

または同等に:

マージンはwによってのみ決定されるように見えますが、bは、制約内のwへの影響を介して暗黙的にマージンにも影響を与えます

2.2双対問題の定式化

     最適化:

  •   (幾何学的間隔を最大化する)
  •   (ただし、条件を満たすために:すべてのポイントが正しく分類されます)

そのような最適化問題をどのように解決するのですか?

ラグランジュ関数を定義し、各制約条件にラグランジュ乗数を追加し、制約条件を目的関数に統合して、1つの関数式だけで明確に表現できるようにします。問題:

この問題解決する元の方法

  • 最初にwとbを修正し、変更するだけで最大化しL(w、b、\ alpha)ます。見やすいですが、
    • 特定の制約条件が満たされない場合、特定の制約条件が存在しますy_i(w ^ Tx_i + b)-1 <0。この時点\ alpha_iL(w、b、\ alpha)\ infty最大するために無限大を作成するだけで済みます。最大値はであり、次のステップを最小化することはできません。
    • すべての制約が満たされると、すべてy_i(w ^ Tx_i + b)-1が> 0になります。この時点\ alpha_i では、を最大化するためL(w、b、\ alpha)= 0にするだけでよく、最大値は\ frac {1} {2} || w || ^ 2です。これは、次のステップで最小化するものです。
  • 次に、wとbを変更してを最小化しL(w、b、\ alpha)ます。前のステップの制約がすべて満たされている場合は、最小化する必要があります\ frac {1} {2} || w || ^ 2

直接解法の場合、1つ上が2つのパラメーターwとbに直面する必要があり、不等式制約である場合、この解法プロセスは適切ではありません。最小位置と最大位置を交換したい場合があります交換後の新しい問題は、元の問題の双対問題です特定の条件が満たされると、2つは等しくなります。このとき、双対問題を解くことにより、元の問題を間接的に解くことができます。

双対問題の解決:

  • 最初に修正し、wとbのみを変更してL(w、b、\ alpha)最小化します。これには、それぞれwとbの偏導関数が必要です。つまり、∂L/∂wと∂L/∂bをゼロに等しくします。

                                                           

        上記の結果を前のLに代入します。 

        取得する:

  • 最大化するために後で変更\ alpha_iL(w、b、\ alpha)ます。問題は次のようになります。

 \ min _ {\ alpha_i}(\ frac {1} {2} \ sum_ {i、j = 1} ^ n \ alpha_i \ alpha_j y_i y_j x_i ^ T x_j- \ sum_ {i = 1} ^ n \ alpha_i)   st    \ sum _ {i = 1} ^ n \ alpha_i y_i = 0、~~~~~~ \ alpha_i> 0(i = 1,2、... n)

SVMの処理方法は、サポートベクター、つまり分類に最も関連するいくつかのポイントのみを考慮して、分類器を学習することです。

2.3線形に分離できない場合

分離できない場合は、エラーが発生している必要があります。結局のところ、すべてのトレーニングサンプルが正しく分類されることを要求することはできません。|| w || _2トレーニング分類エラーと同様に最小化ます

2.3.1損失関数:0/1損失とヒンジ損失

正しい予測を思い出してください:  y_i(w_1x_i ^ {(1)} + ... w_nx_i ^ {(n)} + b)\ geq 1、定義 z_i = y_i(w_1x_i ^ {(1)} + ... w_nx_i ^ {(n)} + b)

0/1の損失は0未満のzにのみペナルティを課し、ヒンジの損失は1未満のzにペナルティを課します。

0/1損失を置き換えるためのより多くの損失関数:

2.3.2スラック変数の導入 \ epsilon_i> 0

損失関数は、スラック変数の合計を最小化しながら、幾何学的間隔を最大化します。ここで、一部のトレーニングセットを2つの分類平面の間に配置し、(0 <\ epsilon_i <1)一部のトレーニングサンプルを誤って分類することもできます。(\ epsilon _i> 1)

  • \ epsilon = 0、サンプルが分類境界にあるか、正しく分類されています。
  • 0 <\ epsilon <1、サンプルは分類境界の中央にありますが、次のように正しく分類されています。\ epsilon_2
  • \ epsilon> 0、サンプルは次のように誤分類されています\ epsilon_ {11}、\ epsilon_7

2.3.3線形不可分ケースの双対問題

ここで、サポートベクター(のサポートベクター\ alpha_i> 0)には、境界に該当するもの、2つの分類境界の間にあるもの、および誤分類されたものが含まれます。

 

3.カーネルサポートベクターマシン

3.1特徴空間の暗黙のマッピング:カーネル関数

線形分離不可能性の場合、サポートベクターマシンは最初に低次元空間で計算を完了し、次にカーネル関数を介して入力空間を高次元特徴空間にマッピングし、最後に高次元で最適な分離ハイパープレーンを構築します。 -次元の特徴空間。したがって、平面上で分離するのが容易ではない非線形データを分離します。図に示すように、大量のデータを2次元空間に分割できないため、3次元空間にマップされます。

3.2カーネル関数:非線形データの処理方法

カーネル関数の例を見てみましょう。次の図に示す2種類のデータは、2つの円の形で分布しています。このようなデータ自体は線形で分離できませんが、現時点で2種類のデータをどのように分離するのでしょうか。

実際、上図のデータセットは、半径が異なりノイズが少ない2つの円を使用して生成されているため、理想的な境界は線(超平面)ではなく「円」である必要があります。合計を使用してこの2次元平面の2つの座標を表す場合、円の方程式は次の形式で記述できることがわかります。

 なお、上記フォーム、我々は別の5次元空間を構築場合ここで5-座標、それぞれの値、  、  、  、、その後明らかに、新しい座標で上式は次のように書くことができます。

 新しい座標に関しては、これはまさに超平面の方程式です!それは我々がマッピングを行った場合、と言うことです、されるマッピングされたに 上記の規則によると、その後、新しい空間で、元のデータは、それが我々の前に導出線形分類アルゴリズムを使用して処理することができるように、線形分離可能となります。これは、非線形問題を処理するためのカーネル法の基本的な考え方です。

カーネルの詳細をさらに説明する前に、マッピング後の上記の例の直感的な形式を見てみましょう。ここでは、実際の超平面の方程式は、ちょうどそれがためにマッピングされて持っている、3次元であるので、もちろん、あなたと私は、5次元空間の引き出すことができますが、特別な事情により、ここで生成された時刻データが原因ではないかもしれませんしたがって、3次元のJust in spaceの場合、次の図は2Dから3Dへのマッピングの結果です。

 

3.3カーネル関数とその構築

暗黙的にマッピングされた空間で2つのベクトルの内積を計算する関数は、カーネル関数と呼ばれます。

に等しい関数k(x、y)がある場合 <\ phi(x)、\ phi(y)>、features(\ phi)を明示的に表す必要はありませんk(x、y)はカーネル関数と呼ばれます。

その中で、ガウスカーネルは元の空間を無限次元空間にマッピングします。ただし、パラメーターが非常に大きく選択されている場合、高次の特徴の重みは実際には非常に速く減衰するため、実際には(数値近似)は低次元の部分空間と同等です。逆に、パラメーターが非常に小さく選択されている場合は、どのデータも線形分離可能にマッピングできます。もちろん、非常に深刻な過剰適合の問題がある可能性があるため、これは必ずしも良いことではありませんただし、一般に、ガウスカーネルは実際には制御パラメーターを通じて非常に柔軟性があり、最も広く使用されているカーネル関数の1つでもあります。次の図に示す例は、ガウスカーネル関数を使用して、低次元の線形分離不可能なデータを高次元の空間にマッピングすることです。

総括する:

補足:SVMのトピックについて

サポートベクターマシンSVMに関して、次の記述は間違っています(C) 

  A. L2正規項、関数は分類間隔を最大化することで、分類器はより強力な一般化能力を持ちます
  B.ヒンジ損失関数、関数は経験的分類誤差を最小化することです
  C.分類間隔は1 / || wです||、| | w ||
  は、ベクトルのモジュラスDを表します。パラメーターCが小さいほど、分類間隔が大きくなり、分類エラーが大きくなり、学習が少なくなる傾向があります。

特徴がデータ量よりも大きい場合、どの分類子を選択する必要がありますか?

回答:線形分類器。次元が高い場合、データは一般に次元空間でスパースであり、線形分離可能である可能性が高いためです。

 

 

参考資料:

[1] THU 2020 Spring MachineLearningはじめにコースウェア

[2]  https://blog.csdn.net/v_july_v/article/details/7624837

おすすめ

転載: blog.csdn.net/weixin_41332009/article/details/113801873