Перекрестный подтвердите модель машинного обучения
устанавливает дополнительную опцию перекрестной проверки. Можно задать только один аргумент значения имени. Например, можно задать количество сгибов или демонстрационной пропорции затяжки.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: [1x34 double] Sigma: [1x34 double] 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' 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
— Модель машинного обученияМодель машинного обучения в виде полной регрессии или объекта модели классификации, как дали в следующих таблицах поддерживаемых моделей.
Объект модели регрессии
Модель | Полный объект модели регрессии |
---|---|
Обобщенная аддитивная модель | 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
. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.
Можно задать только один из этих четырех аргументов значения имени: 'CVPartition'
, 'Holdout'
, 'KFold'
, или 'Leaveout'
.
Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5)
. Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp
.
'Holdout'
— Часть данных для валидации затяжкиЧасть данных, используемых для валидации затяжки в виде скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p
, затем программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте p*100
% из данных как данные о валидации, и обучают модель с помощью остальной части данных.
Сохраните компактную, обученную модель в Trained
свойство перекрестной подтвержденной модели. Если Mdl
не имеет соответствующего компактного объекта, затем Trained
содержит полный объект.
Можно задать только один из этих четырех аргументов значения имени: 'CVPartition'
, 'Holdout'
, 'KFold'
, или 'Leaveout'
.
Пример: 'Holdout',0.1
Типы данных: double |
single
'KFold'
— Количество сгибов
(значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестной подтвержденной модели в виде положительного целочисленного значения, больше, чем 1. Если вы задаете 'KFold',k
, затем программное обеспечение завершает эти шаги:
Случайным образом разделите данные в k
наборы.
Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k
– 1 набор.
Сохраните k
компактные, обученные модели в k
- 1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели. Если Mdl
не имеет соответствующего компактного объекта, затем Trained
содержит полный объект.
Можно задать только один из этих четырех аргументов значения имени: '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
содержит полный объект.
Можно задать только один из этих четырех аргументов значения имени: 'CVPartition'
, 'Holdout'
, 'KFold'
, или 'Leaveout'
.
Пример: 'Leaveout','on'
CVMdl
— Перекрестная подтвержденная модель машинного обученияПерекрестная подтвержденная модель машинного обучения, возвращенная как один из перекрестных подтвержденных (разделенных) объектов модели в следующих таблицах, в зависимости от входной модели Mdl
.
Объект модели регрессии
Модель | Модель регрессии (Mdl ) | Перекрестная подтвержденная модель (CompactMdl ) |
---|---|---|
Обобщенная аддитивная модель | RegressionGAM | RegressionPartitionedGAM |
Модель нейронной сети | RegressionNeuralNetwork | RegressionPartitionedModel |
Объект модели классификации
Модель | Модель классификации (Mdl ) | Перекрестная подтвержденная модель (CompactMdl ) |
---|---|---|
Обобщенная аддитивная модель | ClassificationGAM | ClassificationPartitionedGAM |
k- соседняя модель | ClassificationKNN | ClassificationPartitionedModel |
Наивная модель Bayes | ClassificationNaiveBayes | ClassificationPartitionedModel |
Модель нейронной сети | ClassificationNeuralNetwork | ClassificationPartitionedModel |
Машина опорных векторов для и бинарной классификации одного класса | ClassificationSVM | ClassificationPartitionedModel |
Оцените прогнозирующую эффективность Mdl
на перекрестных подтвержденных данных при помощи функций kfold и свойств CVMdl
, такой как 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.