How to use svmtrain() with a custom kernel in Matlab?
4 次查看(过去 30 天)
显示 更早的评论
svmtain() is a function in MATLAB for SVM learning. The help doc is here:
How can I use it with a custom kernel? In the help doc, it says:
------------------------------------------------------------------------------------
@kfun — Function handle to a kernel function. A kernel function must be of the form
function K = kfun(U, V)
The returned value, K, is a matrix of size M-by-N, where U and V have M and N rows respectively. ------------------------------------------------------------------------------------
It mentions nothing about what U and V are and what M and N mean. I just don't know how to use it in the right format. Can anyone tell me what U and V are and what M and N mean? For example, the training data are 5-dimensional vectors and the kernel function is the sum of the length of the vectors. How can I write the kernel function?
Thank you!
0 个评论
回答(1 个)
Ilya
2012-12-22
By convention adopted for svmtrain, observations are in rows and predictors are in columns. The same convention would hold for kfun. This means U is of size M-by-P, and V is of size N-by-P, where P is the number of predictors (P=5 for you). Other functions such as pdist2 in the Statistics Tlbx follow the same convention. If you want your kernel function to be a simple dot product, you would do
kfun = @(U,V) U*V';
5 个评论
Defne Ozan
2021-3-31
For anyone else having similar problems, writing the kernel function in a separate file (instead of at the bottom of the same file) and then calling it with 'KernelFunction','kernel' worked for me.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Statistics and Machine Learning Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!