2017-03-06 67 views
0

我正在尋找在R中使用e1071包的svm()函數。我是這個包的新手,我想知道是否有可能編寫自己的自定義內核可調用SVM()。我看到有幾個預加載的內核,但是我沒有看到餘弦相似性內核,這正是我需要的。編寫自定義內核svm在R

或者,R中是否還有另一個軟件包,允許您使用餘弦相似性內核運行SVM?

回答

2

壞消息是它目前在e1071中不支持。很多年前有關於它的討論https://stat.ethz.ch/pipermail/r-help/2002-July/023299.html

的好消息是,餘弦相似的內核被定義爲

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

,這樣你就不必實現一個定製的內核,只是標準化數據和運行常規的線性核SVM。換句話說 - 計算(採樣方式)規則的歐幾里得規範,並按照自己的規範劃分每個樣本。然後運行線性SVM,結果等同於在原始數據上運行餘弦內核。如果你想用定製研究機器學習模型,R可能不是一個可行的方法(因爲它不是一個應用現有技術的工具,而是一個設計良好的開發系統 - 如果你想要一些定製的R你基本上必須去C++級別)。相反,你可能想要考慮python和衆多的庫(如scikit-learn + pykernels),它們給你更多的靈活性。