2017-03-06 6 views
0

Rでe1071パッケージのsvm()関数を使用したいと思っています。私はこのパッケージを初めて使用しています。独自のカスタムカーネルを呼び出すことができるかどうかは疑問でした。 svm()。私はいくつかのカーネルがプリロードされているのを見るが、コサイン類似カーネルは表示されない。svm用カスタムカーネルの作成R

また、余弦類似度カーネルでSVMを実行できる別のパッケージがありますか?

答えて

2

悪い知らせは、現在e1071ではサポートされていません。何年も前にそれについての議論があったhttps://stat.ethz.ch/pipermail/r-help/2002-July/023299.html

良いニュースは、コサイン類似度のカーネルがそのようにあなたがちょうどデータを正規化し、正規のリニアカーネルSVMを実行し、カスタムカーネルを実装する必要はありません

K(x, y) = <x, y>/(||x|| ||y||) = <x/||x||, y/||y||> 

として定義されていることです。換言すれば、正規のユークリッド標準を計算し(サンプルワイズ)、各サンプルをそれ自身のノルムで割る。その後、線形SVMを実行すると、生データに対して余弦カーネルを実行することと同じ結果になります。

カスタマイズされたの機械学習モデルで研究をコーディングしたい場合は、Rはおそらく適切な設計の開発システムよりも既存のテクニックを適用するためのツールです。 Rは基本的にC++レベルに移動する必要があります)。その代わりに、Pythonや多くのライブラリ(scikit-learn + pykernelsなど)を使用することで、より柔軟に対応できるようになります。

関連する問題