matlab - vlfeat - vl_pegasos (svm) 分类
Posted
技术标签:
【中文标题】matlab - vlfeat - vl_pegasos (svm) 分类【英文标题】:matlab - vlfeat - vl_pegasos (svm) classification 【发布时间】:2013-01-23 00:44:12 【问题描述】:我在 Matlab 中使用 VLFeat 库进行一些图像分析工作。我想使用他们的 Pegasos SVM 实现,因为他们已经实现了一些内核,特别是 Chi2 内核。
但是,我发现文档让我感到困惑。在this tutorial 之后,我有一个模型w
和一个偏差b
,但是如何使用它来对我的测试数据进行分类?
我的起始数据是这样的(维度)..
size(train_data) =
200 210
size(train_labels) =
1 210
size(test_data) =
200 140
size(test_labels) =
1 140
我可以用..构建一个数据集。
dataset = vl_maketrainingset(train_data, int8(train_labels))
给我..
dataset =
data: [200x210 double]
labels: [1x210 int8]
然后我可以构建模型..
[w b info] = vl_svmpegasos(dataset,0.01,'MaxIterations',5000);
w
is my model ('w'eights?) is a vector size of size 200 x 1
with values range from 0 to 1.
我认为我需要将此向量乘以我的test_data
以获得某种分数,但我不确定这些分数的含义是什么。
非常感谢任何方向。
【问题讨论】:
【参考方案1】:你看过他们的Caltech 101 example code吗?它使用 pegasos 并对结果进行了很好的评估。
这里是相关代码sn-p:
% --------------------------------------------------------------------
% Train SVM
% --------------------------------------------------------------------
lambda = 1 / (conf.svm.C * length(selTrain)) ;
w = [] ;
for ci = 1:length(classes)
perm = randperm(length(selTrain)) ;
fprintf('Training model for class %s\n', classesci) ;
y = 2 * (imageClass(selTrain) == ci) - 1 ;
data = vl_maketrainingset(psix(:,selTrain(perm)), int8(y(perm))) ;
[w(:,ci) b(ci)] = vl_svmpegasos(data, lambda, ...
'MaxIterations', 50/lambda, ...
'BiasMultiplier', conf.svm.biasMultiplier) ;
model.b = conf.svm.biasMultiplier * b ;
model.w = w ;
% --------------------------------------------------------------------
% Test SVM and evaluate
% --------------------------------------------------------------------
% Estimate the class of the test images
scores = model.w' * psix + model.b' * ones(1,size(psix,2)) ;
[drop, imageEstClass] = max(scores, [], 1) ;
% Compute the confusion matrix
idx = sub2ind([length(classes), length(classes)], ...
imageClass(selTest), imageEstClass(selTest)) ;
confus = zeros(length(classes)) ;
confus = vl_binsum(confus, ones(size(idx)), idx) ;
【讨论】:
以上是关于matlab - vlfeat - vl_pegasos (svm) 分类的主要内容,如果未能解决你的问题,请参考以下文章
在 java 中使用 VLfeat 库编译 Matlab 代码