カーネルとは何ですか?


97

多くの機械学習分類子(サポートベクターマシンなど)では、カーネルを指定できます。カーネルとは何かを説明する直観的な方法は何でしょうか?

私が考えていた1つの側面は、線形カーネルと非線形カーネルの違いです。簡単に言えば、「線形決定関数」と「非線形決定関数」について言えます。しかし、カーネルに「決定関数」を呼び出すことが良いアイデアかどうかはわかりません。

提案?

回答:


113

xy

φ:RnRmRnRmxyφ(x)Tφ(y)kk(x,y)=φ(x)Tφ(y)

φ

k(x,y)=(1+xTy)2x,yR2φx=(x1,x2)y=(y1,y2)

k(x,y)=(1+xTy)2=(1+x1y1+x2y2)2==1+x12y12+x22y22+2x1y1+2x2y2+2x1x2y1y2

(1,x12,x22,2x1,2x2,2x1x2)(1,y12,y22,2y1,2y2,2y1y2)φ(x)=φ(x1,x2)=(1,x12,x22,2x1,2x2,2x1x2)k(x,y)=(1+xTy)2=φ(x)Tφ(y)

k(x,y)=exp(γxy2)φ

最後に、カーネルベースの方法の入門として、Yaser Abu-Mostafa教授による「データから学ぶ」オンラインコースをお勧めします。具体的には、講義「Support Vector Machines」「Kernel Methods」、および「Radial Basis Functions」はカーネルに関するものです。


2
現在のタグ定義:「直感的:統計の概念的または非数学的な理解を求める質問。」概念が非数学の同義語として扱われるかどうかは明確に示されていません。
rolando2

40

(少なくともSVMの)カーネルについて考える非常にシンプルで直感的な方法は、類似性関数です。2つのオブジェクトが与えられると、カーネルは類似性スコアを出力します。オブジェクトは、2つの整数、2つの実数値ベクトル、カーネル関数がそれらを比較する方法を知っていることを条件とするツリーから始まるものです。

おそらく最も単純な例は、ドット積とも呼ばれる線形カーネルです。2つのベクトルが与えられた場合、類似度は、1つのベクトルの別のベクトルへの投影の長さです。

別の興味深いカーネルの例は、ガウスカーネルです。2つのベクトルが与えられると、半径はで減少します。2つのオブジェクト間の距離は、この半径パラメーターによって「再重み付け」されます。σ

カーネルを使用した学習(少なくともSVMの場合)の成功は、カーネルの選択に大きく依存します。カーネルは、分類問題に関する知識のコンパクトな表現として見ることができます。多くの場合、問題に固有です。

カーネルが使用されているので、私は、カーネル決定関数を呼び出すことはありません内部の意思決定機能。分類するデータポイントが与えられると、決定関数は、そのデータポイントを学習パラメーター重み付けされたサポートベクトルの数と比較することにより、カーネルを利用します。サポートベクトルはそのデータポイントのドメイン内にあり、学習されたパラメーターに沿ってが学習アルゴリズムによって検出されます。αα


ドット積と投影はまったく同じではありません。
ttnphns

SVMの場合、カーネルは異なる空間での距離の尺度であると思います。これは、SVMがサポートベクター分類子を一般化するという考えに沿っています。一般に、カーネルはより複雑になる可能性があります。
aginensky

29

直感を助ける視覚的な例

次のデータセットを考えてみましょう。黄色と青色のポイントは、2次元で明らかに線形に分離できません。

ここに画像の説明を入力してください

これらの点が線形に分離可能な高次元の空間を見つけることができれば、次のことができます。

  • 元の機能をより高いトランスフォーマー空間にマップします(機能マッピング)
  • この高いスペースで線形SVMを実行します
  • 決定境界超平面に対応する重みのセットを取得します
  • この超平面を元の2D空間にマップして、非線形の決定境界を取得します

これらの点が線形に分離できる高次元の空間がたくさんあります。一例です

x1,x2:→z1,z2,z3
z1=2x1x2  z2=x12  z3=x22

これは、カーネルトリックの出番です。上記の素晴らしい答えを引用する

マッピングがあり、ベクトルをいくつかの特徴空間に持っていったとします。この空間でのとの内積はです。カーネルは、この内積に対応する関数です。つまり、φ:RnRmRnRmxyφ(x)Tφ(y)kk(x,y)=φ(x)Tφ(y)

上記の機能マップと同等のカーネル関数を見つけることができれば、線形SVMにカーネル関数をプラグインして、非常に効率的に計算を実行できます。

多項式カーネル

なお、上記の特徴マップは、周知のに対応していることが判明多項式カーネル:。してみましょうと私たちが取得しK(x,x)=(xTx)dd=2x=(x1,x2)T

k((x1x2),(x1x2))=(x1x2+x2x2)2=2x1x1x2x2+(x1x1)2+(x2x2)2=(2x1x2 x12 x22) (2x1x2x12x22)

k((x1x2),(x1x2))=ϕ(x)Tϕ(x)

ϕ((x1x2))=(2x1x2x12x22)

機能マップと結果の境界線の視覚化

  • 左側のプロットは、変換された空間にプロットされたポイントとSVM線形境界ハイパープレーンを示しています
  • 右側のプロットは、元の2次元空間での結果を示しています

ここに画像の説明を入力してください


ソース


4

非常に簡単に(しかし正確に)カーネルは、 2つのデータシーケンス間の重み係数です。この重み係数は、一つ「にさらに重みを割り当てることができ、データ点 1」の「時刻他の」よりも「データポイント」、または同等の重みを割り当てるか、または他の「ために、より重みを割り当てるデータ・ポイント」など。

このように、相関(内積)は、あるポイントで他のポイントより多くの「重要度」を割り当てることができるため、非線形性(非平坦なスペースなど)、追加情報、データ平滑化などに対処できます。

さらに別の方法では、カーネルは、上記のものに対処するために2つのデータシーケンスの相対次元(または次元単位を変更する方法です。

3番目の方法(前の2つに関連する)では、カーネルは、 特定の情報または基​​準(曲線空間、欠損データ、データなど)を考慮して、1つのデータシーケンスを1対1でマップまたは投影する方法です。再注文など)。そのため、たとえば、1つのデータシーケンスを1対1に適合またはマッピングするために、特定のカーネルが1つのデータシーケンスを引き伸ばしたり、縮めたり、切り取ったり、曲げたりすることがあります。

カーネルは次のように行動することができ、プロクラステス「にするために最善をフィット


SVMや関連する方法で使用される正半値のMercerカーネルではなく、カーネル密度推定という意味でカーネルについて話しているのではないかと思います。
Dougal

@Dougalは、この回答の意味では、カーネルは、特定の方法でデータを相関させるために、またはSVMカーネルの方法は同様に覆われるように、特定のデータ機能を利用するために使用される重み関数または尺度である
ニコスM.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.