Прогнозирование меток для наблюдений, не используемых для обучения
возвращает метки класса с перекрестной проверкой, предсказанные моделью с перекрестной проверкой, двоичной линейной классификацией Label = kfoldPredict(CVMdl)CVMdl. То есть, для каждого раза, kfoldPredict предсказывает метки классов для наблюдений, которые он выдает, когда он тренируется с использованием всех других наблюдений.
Label содержит прогнозируемые метки класса для каждой силы регуляризации в моделях линейной классификации, которые составляют CVMdl.
[ также возвращает перекрестно проверенные оценки классификации для обоих классов. Label,Score] = kfoldPredict(CVMdl)Score содержит классификационные оценки для каждой силы регуляризации в CVMdl.
CVMdl - Модель перекрестной, двоичной, линейной классификацииClassificationPartitionedLinear объект моделиПерекрестно проверенная, двоичная, линейная модель классификации, указанная как ClassificationPartitionedLinear объект модели. Можно создать ClassificationPartitionedLinear модель с использованием fitclinear и указание любого из аргументов пары «имя-значение» перекрестной проверки, например, CrossVal.
Чтобы получить оценки, kfoldPredict применяет те же данные, которые используются для перекрестной проверки модели линейной классификации (X и Y).
Label - Перекрестная проверка, прогнозируемые метки классаПерекрестная проверка, прогнозируемые метки класса, возвращаемые как категориальный или символьный массив, логическая или числовая матрица или массив ячеек символьных векторов.
В большинстве случаев Label является массивом n-by-L того же типа данных, что и наблюдаемые метки классов (см. Y) используется для создания CVMdl. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)
n - количество наблюдений в данных предиктора (см. X) и L - количество сильных сторон регуляризации в CVMdl.Trained{1}.Lambda. То есть Label( - прогнозируемая метка класса для наблюдения i,j)i использование модели линейной классификации, которая имеет силу регуляризации CVMdl.Trained{1}.Lambda(.j)
Если Y является массивом символов и L > 1, то Label является массивом ячеек меток классов.
Score - Перекрестные оценки классификацииПерекрестно проверенные оценки классификации, возвращенные в виде n-by-2-by-L числового массива. n - количество наблюдений в данных предиктора, которые были созданы CVMdl (см. X) и L - количество сильных сторон регуляризации в CVMdl.Trained{1}.Lambda. Score( является оценкой для классификации наблюдения i,k,j)i в класс k использование модели линейной классификации, которая имеет силу регуляризации CVMdl.Trained{1}.Lambda(. j)CVMdl.ClassNames сохраняет порядок классов.
Если CVMdl.Trained{1}.Learner является 'logistic', то классификационные оценки являются задними вероятностями.
Загрузите набор данных NLP.
load nlpdataX является разреженной матрицей данных предиктора, и Y является категориальным вектором меток класса. В данных имеется более двух классов.
Модели должны определять, содержится ли подсчет слов на веб-странице в документации Toolbox™ статистики и машинного обучения. Таким образом, определите метки, соответствующие страницам документации Toolbox™ статистики и машинного обучения.
Ystats = Y == 'stats';Перекрестная проверка двоичной линейно-классификационной модели с использованием всего набора данных, который может определить, находится ли подсчет слов на веб-странице документации из документации Toolbox™ статистики и машинного обучения.
rng(1); % For reproducibility CVMdl = fitclinear(X,Ystats,'CrossVal','on'); Mdl1 = CVMdl.Trained{1}
Mdl1 =
ClassificationLinear
ResponseName: 'Y'
ClassNames: [0 1]
ScoreTransform: 'none'
Beta: [34023x1 double]
Bias: -1.0008
Lambda: 3.5193e-05
Learner: 'svm'
Properties, Methods
CVMdl является ClassificationPartitionedLinear модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Можно изменить количество сгибов с помощью 'KFold' аргумент пары имя-значение.
Прогнозировать метки для наблюдений, которые fitclinear не использовал при обучении складки.
label = kfoldPredict(CVMdl);
Потому что есть одна сила регуляризации в Mdl1, label является столбчатым вектором предсказаний, содержащим столько строк, сколько наблюдений в X.
Создайте матрицу путаницы.
ConfusionTrain = confusionchart(Ystats,label);

Модель имеет неправильную классификацию 15 'stats' страницы документации как находящиеся вне документации набора инструментов для статистического и машинного обучения, и неправильно классифицирует девять страниц как 'stats' страницы.
Модели линейной классификации возвращают апостериорные вероятности только для учащихся с логистической регрессией.
Загрузите набор данных NLP и выполните его предварительную обработку, как в разделе Предсказание k-кратных меток перекрестной проверки. Транспонируйте матрицу данных предиктора.
load nlpdata Ystats = Y == 'stats'; X = X';
Перекрестная проверка двоичных линейных классификационных моделей с использованием пятикратной перекрестной проверки. Оптимизируйте целевую функцию с помощью SpaRSA. Понизить допуск на градиенте целевой функции до 1e-8.
rng(10); % For reproducibility CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns',... 'KFold',5,'Learner','logistic','Solver','sparsa',... 'Regularization','lasso','GradientTolerance',1e-8);
Предсказать вероятности заднего класса для наблюдений, не используемых для тренировки каждой складки.
[~,posterior] = kfoldPredict(CVMdl); CVMdl.ClassNames
ans = 2x1 logical array
0
1
Потому что есть одна сила регуляризации в CVMdl, posterior - матрица с 2 столбцами и строками, равными количеству наблюдений. Колонка i содержит задние вероятности Mdl.ClassNames(i) с учетом особого замечания.
Получите ложные и истинные положительные показатели и оцените AUC. Укажите, что второй класс является положительным.
[fpr,tpr,~,auc] = perfcurve(Ystats,posterior(:,2),CVMdl.ClassNames(2)); auc
auc = 0.9990
AUC: 0.9990, что указывает на модель, которая хорошо предсказывает.
Постройте график кривой ROC.
figure; plot(fpr,tpr) h = gca; h.XLim(1) = -0.1; h.YLim(2) = 1.1; xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve')

Кривая ROC показывает, что модель классифицируется почти идеально.
Чтобы определить хорошую силу лассо-штрафа для модели линейной классификации, которая использует учащегося логистической регрессии, сравните значения AUC с перекрестной проверкой.
Загрузите набор данных NLP. Предварительная обработка данных, как в оценке k-кратной перекрестной проверки вероятности заднего класса.
load nlpdata Ystats = Y == 'stats'; X = X';
В тестовом образце имеется 9471 наблюдение.
Создайте набор из 11 логарифмически разнесенных уровней регуляризации от до .
Lambda = logspace(-6,-0.5,11);
Перекрестная проверка двоичных линейных моделей классификации, которые используют каждую из уровней регуляризации и пятикратную перекрестную проверку. Оптимизируйте целевую функцию с помощью SpaRSA. Понизить допуск на градиенте целевой функции до 1e-8.
rng(10) % For reproducibility CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns', ... 'KFold',5,'Learner','logistic','Solver','sparsa', ... 'Regularization','lasso','Lambda',Lambda,'GradientTolerance',1e-8)
CVMdl =
ClassificationPartitionedLinear
CrossValidatedModel: 'Linear'
ResponseName: 'Y'
NumObservations: 31572
KFold: 5
Partition: [1x1 cvpartition]
ClassNames: [0 1]
ScoreTransform: 'none'
Properties, Methods
Mdl1 = CVMdl.Trained{1}Mdl1 =
ClassificationLinear
ResponseName: 'Y'
ClassNames: [0 1]
ScoreTransform: 'logit'
Beta: [34023x11 double]
Bias: [1x11 double]
Lambda: [1x11 double]
Learner: 'logistic'
Properties, Methods
Mdl1 является ClassificationLinear объект модели. Поскольку Lambda - это последовательность сильных сторон регуляризации, вы можете думать о Mdl1 как 11 моделей, по одной для каждой силы регуляризации в Lambda.
Предсказать перекрестно проверенные метки и вероятности заднего класса.
[label,posterior] = kfoldPredict(CVMdl); CVMdl.ClassNames; [n,K,L] = size(posterior)
n = 31572
K = 2
L = 11
posterior(3,1,5)
ans = 1.0000
label является матрицей предсказанных меток 31572 на 11. Каждый столбец соответствует прогнозируемым меткам модели, обученной с использованием соответствующей силы регуляризации. posterior является матрицей 31572-на-2-на-11 вероятности заднего класса. Столбцы соответствуют классам, а страницы соответствуют уровням регуляризации. Например, posterior(3,1,5) указывает, что апостериорная вероятность того, что первый класс (метка 0) назначается наблюдению 3 моделью, которая использует Lambda(5) поскольку сила регуляризации составляет 1,0000.
Для каждой модели вычислите AUC. Обозначьте второй класс как положительный.
auc = 1:numel(Lambda); % Preallocation for j = 1:numel(Lambda) [~,~,~,auc(j)] = perfcurve(Ystats,posterior(:,2,j),CVMdl.ClassNames(2)); end
Более высокие значения Lambda привести к предикторной переменной разреженности, которая является хорошим качеством классификатора. Для каждой силы регуляризации выполните обучение модели линейной классификации, используя весь набор данных и те же опции, что и при обучении модели. Определите количество ненулевых коэффициентов на модель.
Mdl = fitclinear(X,Ystats,'ObservationsIn','columns', ... 'Learner','logistic','Solver','sparsa','Regularization','lasso', ... 'Lambda',Lambda,'GradientTolerance',1e-8); numNZCoeff = sum(Mdl.Beta~=0);
На том же рисунке постройте график коэффициентов ошибок тестовой выборки и частоты ненулевых коэффициентов для каждой силы регуляризации. Постройте график всех переменных на шкале журнала.
figure [h,hL1,hL2] = plotyy(log10(Lambda),log10(auc), ... log10(Lambda),log10(numNZCoeff + 1)); hL1.Marker = 'o'; hL2.Marker = 'o'; ylabel(h(1),'log_{10} AUC') ylabel(h(2),'log_{10} nonzero-coefficient frequency') xlabel('log_{10} Lambda') title('Cross-Validated Statistics') hold off

Выберите индекс силы регуляризации, который уравновешивает предикторную переменную разреженность и высокий AUC. В этом случае должно быть достаточно значения от 10-3 до 10-1.
idxFinal = 9;
Выберите модель из Mdl с выбранной силой регуляризации.
MdlFinal = selectModels(Mdl,idxFinal);
MdlFinal является ClassificationLinear модель, содержащая одну силу регуляризации. Чтобы оценить метки для новых наблюдений, передайте MdlFinal и новые данные для predict.
Для моделей линейной классификации необработанный показатель классификации для классификации наблюдения x, вектора строки, в положительный класс определяется как
+ bj.
Для модели с силой регуляризации j - оцененный вектор-столбец коэффициентов (свойство модели Beta(:,j)) и - оценочное скалярное смещение (свойство модели Bias(j)).
Необработанный показатель классификации для классификации x в отрицательный класс равен -f (x). Программа классифицирует наблюдения в класс, который дает положительную оценку.
Если модель линейной классификации состоит из учащихся с логистической регрессией, то программное обеспечение применяет 'logit' преобразование баллов в необработанные оценки классификации (см. ScoreTransform).
ClassificationLinear | ClassificationPartitionedLinear | confusionchart | perfcurve | predict | testcholdout
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.