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!