1

画像解析作業のために、MatlabのVLFeatライブラリを使用しています。彼らが実装したいくつかのカーネル、具体的には Chi2 カーネルのため、私は彼らの Pegasos SVM 実装を使用したいと考えています。

しかし、私は混乱したままのドキュメントを見つけています。このチュートリアルに従うと、モデル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);

w200 x 1私のモデル ('w'eights?) は、 0 から 1 の範囲の値を持つsize のベクトル サイズです。

ある種のスコアtest_dataを取得するには、このベクトルに my を掛ける必要があると思いますが、それらのスコアの意味がどうなるかはわかりません。

どんな方向でも大歓迎です。

4

1 に答える 1

0

彼らのCaltech 101 のサンプル コードを見ましたか? ペガソを使用しており、結果の優れた評価を提供します。

関連するコード スニペットは次のとおりです。

% --------------------------------------------------------------------
%                                                            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', classes{ci}) ;
  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) ;
于 2013-04-04T12:01:22.523 に答える