Как применить изученную модель в Matlab после перекрестной проверки - PullRequest
0 голосов
/ 11 июня 2018

После того, как классификатор обучен и протестирован с использованием метода перекрестной проверки, как можно использовать результаты для проверки невидимых данных, особенно на этапе свободного запуска / развертывания?Как использовать изученную модель?следующий код обучает и проверяет данные X с использованием перекрестной проверки.Как я должен использовать изученную модель после вычисления строки pred = predict(svmModel, X(istest,:));?

part = cvpartition(Y,'Holdout',0.5);
istrain = training(part); % Data for fitting
istest = test(part);      % Data for quality assessment
balance_Train=tabulate(Y(istrain))
NumbTrain = sum(istrain);         % Number of observations in the training sample
NumbTest = sum(istest);
svmModel = fitcsvm(X(istrain,:),Y(istrain), 'KernelFunction','rbf');
pred = predict(svmModel, X(istest,:));
% compute the confusion matrix
cmat = confusionmat(Y(istest),pred);
acc = 100*sum(diag(cmat))./sum(cmat(:))   

1 Ответ

0 голосов
/ 12 июня 2018

Подсказка в названии :

предсказать

Предсказать метки с использованием классификатора машины опорных векторов (SVM)

Синтаксис

label = predict(SVMModel,X)

[label,score] = predict(SVMModel,X)

Описание

label = predict(SVMModel,X)возвращает вектор предсказанных меток классов для данных предиктора в таблице или матрице X на основе модели классификации SVMModel обученной машины опорных векторов (SVM).Обученная модель SVM может быть либо полной, либо компактной.

В указанном вами коде указан код, начиная с pred = ... и далее, для оценки прогнозов, сделанных вашим объектом svmModel.Однако вы можете взять тот же объект и использовать его для прогнозирования с дополнительными входными наборами данных - или, лучше, обучить вторую модель, используя все данных, и использовать эту модель для создания реальных прогнозов для новых, неизвестные входные данные.

Вы, кажется, неясно о роли (перекрестной) проверки в построении модели.Вы должны построить свою модель развертывания, используя весь набор данных (X, согласно вашему комментарию), потому что, как правило, больше данных всегда дает вам лучшую модель.Чтобы оценить, насколько хороша эта модель развертывания, будет , вы строите одну или несколько моделей из подмножеств X и проверяете каждую модель на соответствие остальному X, которого не было в обучающем подмножестве этой модели.Если вы делаете это только один раз, это называется отложенной проверкой;если вы используете несколько подмножеств и усредняете результаты, это перекрестная проверка.

Если для вас по какой-то причине важно, чтобы развернутая модель была точно такой же, которую вы использовали для получения результатов проверки, вы можете развернутьмодель, которая была обучена на тренировочном разделе вашего несогласного.Но, как я уже сказал, больше тренировочных данных обычно приводит к лучшей модели.

...