2017-03-06 66 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),它们给你更多的灵活性。