Какие изменения я могу внести в svmtrain LIBSVM, чтобы улучшить точность моего классификатора спама? - PullRequest
0 голосов
/ 28 апреля 2020

Я использую Octave версии 5.2.0 и LIBSVM 3.24 для создания классификатора спама. Без использования LIBSVM я получил точность> 99% как для тестовых, так и для обучающих данных. Но при использовании LIBSVM я получаю точность только в 68-69%. Какие изменения я должен сделать для моих опций LIBSVM? Это код, который я использовал

model = svmtrain(X, y,'-c 0.1 -t 2 -s 0 -g 1000');
p = svmpredict(y,X,model);

1 Ответ

0 голосов
/ 28 апреля 2020

Вам известны настройки LibSVM?

% libSVM options:
% -s svm_type: set type of SVM (default 0)
%   0 -- C-SVC
%   1 -- nu-SVC
%   2 -- one-class SVM
%   3 -- epsilon-SVR
%   4 -- nu-SVR
% -t kernel_type: set type of kernel function (default 2)
%   0 -- linear: u'*v
%   1 -- polynomial: (gamma*u'*v + coef0)^degree
%   2 -- radial basis function: exp(-gamma*|u-v|^2)
%   3 -- sigmoid: tanh(gamma*u'*v + coef0)
% -d degree: set degree in kernel function (default 3)
% -g gamma: set gamma in kernel function (default 1/num_features)
% -r coef0: set coef0 in kernel function (default 0)
% -c cost: set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
% -n nu: set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
% -p epsilon: set the epsilon in loss function of epsilon-SVR (default 0.1)
% -m cachesize: set cache memory size in MB (default 100)
% -e epsilon: set tolerance of termination criterion (default 0.001)
% -h shrinking: whether to use the shrinking heuristics, 0 or 1 (default 1)
% -b probability_estimates: whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
% -wi weight: set the parameter C of class i to weight*C, for C-SVC (default 1)

Таким образом, ваши настройки -s 0 -t 2 -g 1000 -c 0.1 преобразуются в C -SVM (-s 0) с ядром Гаусса (-t 2) с большое масштабирование (-g 1000) и меньшая, чем стоимость по умолчанию за нарушения (-c 0.1).

Я предлагаю сначала попробовать его со значениями по умолчанию (-s 0 -t 2), а затем увеличить стоимость -c. Ваша гамма выглядит смехотворно большой, но, не зная ваших данных, никто не может судить об этом. Посмотрите на оптимизацию гиперпараметра , которая точно устанавливает эти значения. Существует много работы над этим, но я знаком только с регрессионным анализом. В случае сомнений выполните глобальную оптимизацию этих параметров с помощью gridsearch или ga.

...