Перекрестный подтвердите модель машинного обучения
устанавливает дополнительную опцию перекрестной проверки. Можно задать только один аргумент значения имени. Например, можно задать количество сгибов или демонстрационной пропорции затяжки.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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.