0

私は機械学習の分野に非常に慣れておらず、基本的には独学です。テキスト分類の問題を解決するためにサポート ベクター マシンを使用する予定であるため、サポート ベクター マシンに関連するいくつかの論文を読んでいました。しかし、カーネルとカーネルメソッドの概念に行き詰まり、データを高次元にマッピングすることで、どの論文もあまり前進できませんでした。

カーネルメソッドとカーネルについて書かれた教科書全体を見たので、これが多くのことを求めていることは知っていますが、これまでに見たすべての説明は想定しているため、非常に基本的なレベルから始まるカーネルとカーネルメソッドについての説明を投稿してみてください。その分野に関するある程度の予備知識。

また、カーネル関数と、「データを高次元空間にマッピングする」ためにそれがどのように使用されるかについても不明です。私は非常に感謝されます。

前もって感謝します。

4

2 に答える 2

4

複雑な数学を簡単なレベルに要約するのは難しいですが、この例は私が信じるのに役立ちます.

申し訳ありませんが、Stack Overflow はComputional Scienceのように数学マークアップをサポートしていないようです。そのため、くだらないテキスト ベースの数式に我慢する必要があります。ベクトルx = [ x 1 , x 2 ] なので、x 1はベクトルxの最初のコンポーネントです。

簡単にするために、トレーニング例ごとに 2 つの属性しかないと仮定して、データが 2 次元になるようにします。これら 2 つの属性を 3 つの属性の高次元にマップするマッピング関数を開発しました。マッピング関数は次のとおりです。

Φ( x ) = [ x 1 2 , x 2 2 , x 1 * x 2 ]

SVM ラグランジュ式では、次のようになります。

ラグランジュ SVM 式

各トレーニング例は、別のトレーニング例との内積として表示されます (上の画像は、最初の式でこれを示しています)。マッピング関数を使用する場合は、トレーニング例ごとにプラグインします。

もちろん、この方法で行う場合は、トレーニング例ごとに Φ( x ) を明示的に計算する必要があります。次に、高次元空間で 2 つのベクトルの内積を計算します。2 つのベクトルxyに対してこれを行うと、次のようになります。

Φ( x ) * Φ( y ) = [ x 1 2 , x 2 2 , x 1 * x 2 ] * [ y 1 2 , y 2 2 , y 1 * y 2 ] = x 1 2 * y 1 2 + x 2 2 * y 2 2 + x 1 * x 2 * y 1 *y 2

代わりに、次数が 2 の多項式カーネルK ( x , y ) = ( x * y ) dを使用したと想像してください。次のようになります。

K ( x , y ) = ( x 1 * y 1 + x 2 * y 2 ) 2 = x 1 2 * y 1 2 + x 2 2 * y 2 2 + x 1 * x 2 * y 1 * y 2

カーネル関数を使用すると、内積を計算する前に高次元空間を計算することを回避できましたが、それでもその高次元空間で 2 つのベクトルの内積が得られました。この場合、例を単純にして明示的に実行できるようにしましたが、マーサーの定理は、関数がマーサーの条件に従う限り、明示的なマッピングを知らなくても、他の関数についてこれが真であることを証明できることを示しています。カーネル パラメーターdがマッピングに大きく影響することがわかります。d = 3の場合、マッピングがまったく異なるため、カーネル パラメーターを変更すると高次元空間が変更されます。

高次元マッピングは明示的に使用されることはなく、最適なアルファを選択する方法としてのみ使用されるため、それが何であるかを実際に知る必要はなく、計算せずに利用できます。

于 2012-06-13T16:27:17.997 に答える
0

アプリケーションはテキスト分類であるため、非線形カーネルを気にする必要はありません。テキストはすでに高次元の (そしてまばらな) 空間に「存在」しており、さらに高次元の空間に入る必要はありません。

Linear カーネルのみを安全に試すことができます。

SVMLight の著者である Joachim の古典的なテキスト分類に関する論文と論文を読んで、これをより深く理解してください。

于 2012-07-18T23:42:25.423 に答える