Модель машинного обучения с перекрестной проверкой
задает дополнительную опцию перекрестной проверки. Можно указать только один аргумент «имя-значение». Например, можно указать количество сгибов или долю выборки при удержании.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
Ошибка неправильной классификации вне выборки составляет приблизительно 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
Погрешность неправильной классификации вне выборки снижается с приблизительно 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 |
| Наивная модель Байеса | ClassificationNaiveBayes |
| Модель нейронной сети | ClassificationNeuralNetwork |
| Поддержка векторной машины для одноклассной и двоичной классификации | ClassificationSVM |
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
crossval(Mdl,'KFold',3) определяет использование трех сгибов в модели с перекрестной проверкой.'CVPartition' - Раздел перекрестной проверки[] (по умолчанию) | cvpartition объект секционированияРаздел перекрестной проверки, указанный как cvpartition объект секционирования, созданный cvpartition. Объект секционирования определяет тип перекрестной проверки и индексирования для наборов обучения и проверки.
Можно указать только один из следующих четырех аргументов: 'CVPartition', 'Holdout', 'KFold', или 'Leaveout'.
Пример: Предположим, что вы создаете случайный раздел для пятикратной перекрестной проверки 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' - Количество складок10 (по умолчанию) | положительное целое значение больше 1Число сгибов для использования в модели с перекрестной проверкой, указанное как положительное целое значение больше 1. При указании 'KFold',k, затем программное обеспечение выполняет следующие действия:
Случайное разбиение данных на k наборы.
Для каждого набора зарезервируйте набор в качестве данных проверки и обучайте модель с помощью другого k - 1 комплект.
Сохранить k компактные, обученные модели в k-by-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 |
| Наивная модель Байеса | ClassificationNaiveBayes | ClassificationPartitionedModel |
| Модель нейронной сети | ClassificationNeuralNetwork | ClassificationPartitionedModel |
| Поддержка векторной машины для одноклассной и двоичной классификации | ClassificationSVM | ClassificationPartitionedModel |
Оценить прогностическую эффективность Mdl для данных с перекрестной проверкой с использованием функций kfold и свойств CVMdl, такие как kfoldPredict и kfoldLoss.
Возврат секционированного классификатора со стратифицированным секционированием с помощью аргумента имя-значение 'KFold' или 'Holdout'.
Создать cvpartition объект cvp использование cvp = cvpartition(n,'KFold',k). Возврат секционированного классификатора с нестратифицированным секционированием с помощью аргумента name-value 'CVPartition',cvp.
Вместо обучения модели, а затем ее перекрестной проверки, можно создать модель с перекрестной проверкой непосредственно, используя функцию фитинга и указав один из следующих аргументов «имя-значение»: 'CrossVal', 'CVPartition', 'Holdout', 'Leaveout', или 'KFold'.
Примечания и ограничения по использованию:
Эта функция поддерживает ClassificationKNN и ClassificationSVM объекты, оснащенные входными аргументами массива GPU.
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.