如何在Matlab中使用svmtrain()和自定义内核?

时间:2012-12-22 16:31:52

标签: matlab machine-learning

svmtain()是MATLAB中用于SVM学习的函数。帮助文档在这里:

http://www.mathworks.com/help/bioinfo/ref/svmtrain.html

如何将其与自定义内核一起使用?在帮助文档中,它说:


  

@kfun - 内核函数的函数句柄。内核函数必须是

形式
 function K = kfun(U, V)
     

返回值K是一个大小为M-by-N的矩阵,其中UV分别有MN


它没有提及U和V是什么以及M和N是什么意思。我只是不知道如何以正确的格式使用它。 谁能告诉我U和V是什么以及M和N是什么意思? 例如,训练数据是5维向量,核函数是向量长度的总和。我该如何编写内核函数?

谢谢!

2 个答案:

答案 0 :(得分:1)

只是一个猜测:

根据:http://www.tech.dmu.ac.uk/~hseker/Statistics%20in%20Genetics/Statistical%20Learning%20and%20Visualization%20in%20MATLAB.doc,U,V应该只是功能性处方K中的参数,例如:如果你的内核是tanh,那么:

function K = kfun(U,V,P1,P2)
K = tanh(U*V');

P1, P2用于各自内核的一些其他功能。但正如我在评论中所写的那样,你需要成为一名优秀的数学家才能获得比已定义的内核所获得的更好的结果。

答案 1 :(得分:0)

内核函数是机器学习算法中最常用的技术之一。以下是维基百科的定义:

  

对于机器学习算法,内核技巧是一种映射方式   从一般集合S到内积空间V的观测   (配备其自然规范),无需计算   明确地绘图,希望观察结果能够获得   V中有意义的线性结构。

即。这个内核用于RBF:

K(x,y) = (x*y + c)^d

以下是内核的详细解释:{3}由Andrew Ng撰写。

有一些内核(即高斯内核),内核具有相同的约定,因此它被推广为K(u,v)。您可以尝试不同的内核性能,或者您可以搜索有关您工作的相关工作并尝试使用这种内核。