Перекрестный подтвердите модель машинного обучения
устанавливает дополнительную опцию перекрестной проверки. Можно задать только один аргумент значения имени. Например, можно задать количество сгибов или демонстрационной пропорции затяжки.CVMdl
= crossval(Mdl
,Name,Value
)
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора, и 351 бинарный ответ для радара возвращается, любой плохо ('b'
) или хороший ('g'
).
load ionosphere rng(1); % For reproducibility
Обучите классификатор машины опорных векторов (SVM). Стандартизируйте данные о предикторе и задайте порядок классов.
SVMModel = fitcsvm(X,Y,'Standardize',true,'ClassNames',{'b','g'});
SVMModel
обученный ClassificationSVM
классификатор. 'b'
отрицательный класс и 'g'
положительный класс.
Перекрестный подтвердите классификатор с помощью 10-кратной перекрестной проверки.
CVSVMModel = crossval(SVMModel)
CVSVMModel = ClassificationPartitionedModel CrossValidatedModel: 'SVM' PredictorNames: {1x34 cell} ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none' Properties, Methods
CVSVMModel
ClassificationPartitionedModel
перекрестный подтвержденный классификатор. Во время перекрестной проверки программное обеспечение завершает эти шаги:
Случайным образом разделите данные в 10 наборов равного размера.
Обучите классификатор SVM на девяти из наборов.
Повторите шаги 1 и 2 k = 10 раз. Программное обеспечение не учитывает один раздел каждый раз и обучается на других девяти разделах.
Объедините статистику обобщения для каждого сгиба.
Отобразите первую модель в CVSVMModel.Trained
.
FirstModel = CVSVMModel.Trained{1}
FirstModel = CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' Alpha: [78x1 double] Bias: -0.2209 KernelParameters: [1x1 struct] Mu: [0.8888 0 0.6320 0.0406 0.5931 0.1205 0.5361 ... ] Sigma: [0.3149 0 0.5033 0.4441 0.5255 0.4663 0.4987 ... ] SupportVectors: [78x34 double] SupportVectorLabels: [78x1 double] Properties, Methods
FirstModel
является первым из 10 обученных классификаторов. Это - CompactClassificationSVM
классификатор.
Можно оценить ошибку обобщения путем передачи CVSVMModel
к kfoldLoss
.
Задайте демонстрационную пропорцию затяжки для перекрестной проверки. По умолчанию, crossval
использует 10-кратную перекрестную проверку, чтобы перекрестный подтвердить наивный классификатор Байеса. Однако у вас есть несколько других опций для перекрестной проверки. Например, можно задать различное количество сгибов или демонстрационной пропорции затяжки.
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора, и 351 бинарный ответ для радара возвращается, любой плохо ('b'
) или хороший ('g'
).
load ionosphere
Удалите первые два предиктора для устойчивости.
X = X(:,3:end); rng('default'); % For reproducibility
Обучите наивный классификатор Байеса с помощью предикторов X
и класс маркирует Y
. Методические рекомендации должны задать имена классов. 'b'
отрицательный класс и 'g'
положительный класс. fitcnb
принимает, что каждый предиктор условно и нормально распределен.
Mdl = fitcnb(X,Y,'ClassNames',{'b','g'});
Mdl
обученный ClassificationNaiveBayes
классификатор.
Перекрестный подтвердите классификатор путем определения 30%-й выборки затяжки.
CVMdl = crossval(Mdl,'Holdout',0.3)
CVMdl = ClassificationPartitionedModel CrossValidatedModel: 'NaiveBayes' PredictorNames: {1x32 cell} ResponseName: 'Y' NumObservations: 351 KFold: 1 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none' Properties, Methods
CVMdl
ClassificationPartitionedModel
перекрестный подтвержденный, наивный классификатор Байеса.
Отобразите свойства классификатора, обученного с помощью 70% данных.
TrainedModel = CVMdl.Trained{1}
TrainedModel = CompactClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell} Properties, Methods
TrainedModel
CompactClassificationNaiveBayes
классификатор.
Оцените ошибку обобщения путем передачи CVMdl
к kfoldloss
.
kfoldLoss(CVMdl)
ans = 0.2095
misclassification ошибка из выборки составляет приблизительно 21%.
Уменьшайте ошибку обобщения путем выбора пяти самых важных предикторов.
idx = fscmrmr(X,Y); Xnew = X(:,idx(1:5));
Обучите наивный классификатор Байеса новому предиктору.
Mdlnew = fitcnb(Xnew,Y,'ClassNames',{'b','g'});
Перекрестный подтвердите новый классификатор путем определения 30%-й выборки затяжки и оцените ошибку обобщения.
CVMdlnew = crossval(Mdlnew,'Holdout',0.3);
kfoldLoss(CVMdlnew)
ans = 0.1429
misclassification ошибка из выборки уменьшается приблизительно с 21% приблизительно до 14%.
crossval
Обучите обобщенную аддитивную модель (GAM) регрессии при помощи fitrgam
, и создайте перекрестный подтвержденный GAM при помощи crossval
и опция затяжки. Затем используйте kfoldPredict
предсказать ответы для наблюдений сгиба валидации с помощью модели, обученной на наблюдениях учебного сгиба.
Загрузите patients
набор данных.
load patients
Составьте таблицу, которая содержит переменные предикторы (Age
, Diastolic
, Smoker
, Weight
, Gender
, SelfAssessedHealthStatus
) и переменная отклика (Systolic
).
tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);
Обучите GAM, который содержит линейные члены для предикторов.
Mdl = fitrgam(tbl,'Systolic');
Mdl
RegressionGAM
объект модели.
Перекрестный подтвердите модель путем определения 30%-й выборки затяжки.
rng('default') % For reproducibility CVMdl = crossval(Mdl,'Holdout',0.3)
CVMdl = RegressionPartitionedGAM CrossValidatedModel: 'GAM' PredictorNames: {1x6 cell} CategoricalPredictors: [3 5 6] ResponseName: 'Systolic' NumObservations: 100 KFold: 1 Partition: [1x1 cvpartition] NumTrainedPerFold: [1x1 struct] ResponseTransform: 'none' IsStandardDeviationFit: 0 Properties, Methods
crossval
функция создает RegressionPartitionedGAM
объект модели CVMdl
с опцией затяжки. Во время перекрестной проверки программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте 30% данных как данные о валидации и обучите модель с помощью остальной части данных.
Сохраните компактную, обученную модель в Trained
свойство перекрестного подтвержденного объекта модели RegressionPartitionedGAM
.
Можно выбрать различную установку перекрестной проверки при помощи 'CrossVal'
, 'CVPartition'
, 'KFold'
, или 'Leaveout'
аргумент значения имени.
Предскажите ответы для наблюдений сгиба валидации при помощи kfoldPredict
. Функция предсказывает ответы для наблюдений сгиба валидации при помощи модели, обученной на наблюдениях учебного сгиба. Функция присваивает NaN
к наблюдениям учебного сгиба.
yFit = kfoldPredict(CVMdl);
Найдите индексы наблюдения сгиба валидации и составьте таблицу, содержащую индекс наблюдения, наблюдаемые значения отклика и предсказанные значения отклика. Отобразите первые восемь строк таблицы.
idx = find(~isnan(yFit)); t = table(idx,tbl.Systolic(idx),yFit(idx), ... 'VariableNames',{'Obseraction Index','Observed Value','Predicted Value'}); head(t)
ans=8×3 table
Obseraction Index Observed Value Predicted Value
_________________ ______________ _______________
1 124 130.22
6 121 124.38
7 130 125.26
12 115 117.05
20 125 121.82
22 123 116.99
23 114 107
24 128 122.52
Вычислите ошибку регрессии (среднеквадратическая ошибка) для наблюдений сгиба валидации.
L = kfoldLoss(CVMdl)
L = 43.8715
Mdl
— Модель машинного обученияМодель машинного обучения в виде полной регрессии или объекта модели классификации, как дали в следующих таблицах поддерживаемых моделей.
Объект модели регрессии
Модель | Полный объект модели регрессии |
---|---|
Модель Gaussian process regression (GPR) | RegressionGP (Если вы предоставляете пользовательский 'ActiveSet' в вызове fitrgp , затем вы не можете перекрестный подтвердить модель GPR.) |
Обобщенная аддитивная модель (GAM) | RegressionGAM |
Модель нейронной сети | RegressionNeuralNetwork |
Объект модели классификации
Модель | Полный объект модели классификации |
---|---|
Обобщенная аддитивная модель | ClassificationGAM |
k- соседняя модель | ClassificationKNN |
Наивная модель Bayes | ClassificationNaiveBayes |
Модель нейронной сети | ClassificationNeuralNetwork |
Машина опорных векторов для и бинарной классификации одного класса | ClassificationSVM |
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
crossval(Mdl,'KFold',3)
задает использование трех сгибов в перекрестной подтвержденной модели.CVPartition
— Раздел перекрестной проверки[]
(значение по умолчанию) | cvpartition
объект разделаРаздел перекрестной проверки в виде cvpartition
объект раздела, созданный cvpartition
. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.
Можно задать только одни из этих четырех аргументов name-value: 'CVPartition'
, 'Holdout'
, 'KFold'
, или 'Leaveout'
.
Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5)
. Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp
.
Holdout
— Часть данных для валидации затяжкиЧасть данных, используемых для валидации затяжки в виде скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p
, затем программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте p*100
% из данных как данные о валидации, и обучают модель с помощью остальной части данных.
Сохраните компактную, обученную модель в Trained
свойство перекрестной подтвержденной модели. Если Mdl
не имеет соответствующего компактного объекта, затем Trained
содержит полный объект.
Можно задать только одни из этих четырех аргументов name-value: 'CVPartition'
, 'Holdout'
, 'KFold'
, или 'Leaveout'
.
Пример: 'Holdout',0.1
Типы данных: double |
single
KFold
— Количество сгибов
(значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестной подтвержденной модели в виде положительного целочисленного значения, больше, чем 1. Если вы задаете 'KFold',k
, затем программное обеспечение завершает эти шаги:
Случайным образом разделите данные в k
наборы.
Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k
– 1 набор.
Сохраните k
компактные, обученные модели в k
- 1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели. Если Mdl
не имеет соответствующего компактного объекта, затем Trained
содержит полный объект.
Можно задать только одни из этих четырех аргументов name-value: 'CVPartition'
, 'Holdout'
, 'KFold'
, или 'Leaveout'
.
Пример: 'KFold',5
Типы данных: single
| double
Leaveout
— Флаг перекрестной проверки "Пропускает один"'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки "Пропускает один" в виде 'on'
или 'off'
. Если вы задаете 'Leaveout','on'
, затем для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в NumObservations
свойство модели), программное обеспечение завершает эти шаги:
Зарезервируйте одно наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.
Сохраните n компактные, обученные модели в n-by-1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели. Если Mdl
не имеет соответствующего компактного объекта, затем Trained
содержит полный объект.
Можно задать только одни из этих четырех аргументов name-value: 'CVPartition'
, 'Holdout'
, 'KFold'
, или 'Leaveout'
.
Пример: 'Leaveout','on'
CVMdl
— Перекрестная подтвержденная модель машинного обученияПерекрестная подтвержденная модель машинного обучения, возвращенная как один из перекрестных подтвержденных (разделенных) объектов модели в следующих таблицах, в зависимости от входной модели Mdl
.
Объект модели регрессии
Модель | Модель регрессии (Mdl ) | Перекрестная подтвержденная модель (CVMdl ) |
---|---|---|
Гауссова модель регрессии процесса | RegressionGP | RegressionPartitionedModel |
Обобщенная аддитивная модель | RegressionGAM | RegressionPartitionedGAM |
Модель нейронной сети | RegressionNeuralNetwork | RegressionPartitionedModel |
Объект модели классификации
Модель | Модель классификации (Mdl ) | Перекрестная подтвержденная модель (CVMdl ) |
---|---|---|
Обобщенная аддитивная модель | ClassificationGAM | ClassificationPartitionedGAM |
k- соседняя модель | ClassificationKNN | ClassificationPartitionedModel |
Наивная модель Bayes | ClassificationNaiveBayes | ClassificationPartitionedModel |
Модель нейронной сети | ClassificationNeuralNetwork | ClassificationPartitionedModel |
Машина опорных векторов для и бинарной классификации одного класса | ClassificationSVM | ClassificationPartitionedModel |
Оцените прогнозирующую эффективность Mdl
на перекрестных подтвержденных данных при помощи функций kfold и свойств CVMdl
, такой как kfoldPredict
, kfoldLoss
, kfoldMargin
, и kfoldEdge
для классификации и kfoldPredict
и kfoldLoss
для регрессии.
Возвратите разделенный классификатор со стратифицированным разделением при помощи аргумента 'KFold'
значения имени или
'Holdout'
.
Создайте cvpartition
объект cvp
использование cvp =
cvpartition
(n,'KFold',k)
. Возвратите разделенный классификатор с нестратифицированным разделением при помощи аргумента 'CVPartition',cvp
значения имени.
Вместо обучения модель и затем перекрестная проверка его, можно создать перекрестную подтвержденную модель непосредственно при помощи подходящей функции и определения одного из них аргумент значения имени: 'CrossVal'
, 'CVPartition'
, 'Holdout'
, 'Leaveout'
, или 'KFold'
.
Указания и ограничения по применению:
Эта функция полностью поддерживает массивы графического процессора для обученной модели классификации, заданной как ClassificationKNN
или ClassificationSVM
объект.
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.