Предсказать метки для наблюдений, не используемых для обучения
возвращает перекрестно проверенные метки классов, предсказанные перекрестно проверенной, двоичной, линейной классификационной моделью 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
. То есть метка
- предсказанная метка класса для наблюдения (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
. Счет
- счет для классификации наблюдений (i
, k
, j
)i
в k
классов использование линейной классификационной модели, которая имеет силу регуляризации
CVMdl.Trained {1} .
. Lambda (j
)CVMdl.ClassNames
сохраняет порядок классов.
Если CVMdl.Trained{1}.Learner
является 'logistic'
, тогда классификационные оценки являются апостериорными вероятностями.
Загрузите набор данных NLP.
load nlpdata
X
является разреженной матрицей данных предиктора, и Y
является категориальным вектором меток классов. В данных более двух классов.
Модели должны определять, получено ли количество слов на веб-странице из документации Statistics and Machine Learning Toolbox™. Итак, идентифицируйте метки, которые соответствуют веб-страницам документации Statistics and Machine Learning Toolbox™.
Ystats = Y == 'stats';
Перекрестная проверка двоичной линейной модели классификации с помощью всего набора данных, которая может определить, получено ли слово на веб-странице документации из документации Statistics and Machine Learning 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'
страницы документации как находящиеся вне документации Statistics and Machine Learning Toolbox, и ошибочно классифицирует девять страниц как 'stats'
страниц.
Модели линейной классификации возвращают апостериорные вероятности только для учащихся с логистической регрессией.
Загрузите набор данных NLP и предварительно обработайте его как в Predict k-fold Cross-Validation Labels. Транспонируйте матрицу данных предиктора.
load nlpdata Ystats = Y == 'stats'; X = X';
Перекрестная валидация двоичных, линейных моделей классификации с помощью 5-кратной перекрестной валидации. Оптимизируйте целевую функцию с помощью 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. Предварительно обработайте данные как в Estimate k-fold Cross-Validation Posterior Class Probabilities.
load nlpdata Ystats = Y == 'stats'; X = X';
В тестовой выборке 9471 наблюдение.
Создайте набор из 11 логарифмически разнесенных сильных сторон регуляризации через .
Lambda = logspace(-6,-0.5,11);
Перекрестная проверка двоичных, линейных моделей классификации, которые используют каждую из сильных сторон регуляризации и 5-кратную перекрестную валидацию. Оптимизируйте целевую функцию с помощью 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. В этом случае значение между кому должно быть достаточно.
idxFinal = 9;
Выберите модель из Mdl
с выбранной прочностью на регуляризацию.
MdlFinal = selectModels(Mdl,idxFinal);
MdlFinal
является ClassificationLinear
модель, содержащая одну силу регуляризации. Чтобы оценить метки для новых наблюдений, передайте MdlFinal
и новые данные для predict
.
Для линейных классификационных моделей необработанный classification score для классификации x наблюдений, вектора-строки, в положительный класс задан как
Для модели с j прочности регуляризации, - предполагаемый вектор-столбец коэффициентов (свойство модели Beta(:,j)
) и - оцененное скалярное смещение (свойство модели Bias(j)
).
Необработанная классификационная оценка для классификации x в отрицательный класс - f (x). Программа классифицирует наблюдения в класс, который приводит к положительному счету.
Если линейная модель классификации состоит из обучающихся логистической регрессии, то программное обеспечение применяет 'logit'
преобразование счета в необработанные классификационные оценки (см. ScoreTransform
).
ClassificationLinear
| ClassificationPartitionedLinear
| confusionchart
| perfcurve
| predict
| testcholdout
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.