Предскажите метки для наблюдений, не используемых для обучения
Label = kfoldPredict(CVMdl)
[Label,Score]
= kfoldPredict(CVMdl)
возвращает перекрестные подтвержденные метки класса, предсказанные перекрестным подтвержденным, двоичным файлом, линейной моделью Label
= kfoldPredict(CVMdl
)CVMdl
классификации. Таким образом, для каждого сгиба kfoldPredict
предсказывает метки класса для наблюдений, что это протягивает, когда это обучает использование всех других наблюдений.
Label
содержит предсказанные метки класса для каждой силы регуляризации в линейных моделях классификации, которые составляют CVMdl
.
[
также возвращает перекрестную подтвержденную музыку классификации к обоим классам. Label
,Score
]
= kfoldPredict(CVMdl
)Score
содержит музыку классификации к каждой силе регуляризации в CVMdl
.
CVMdl
— Перекрестный подтвержденный, двоичный файл, линейная модель классификацииClassificationPartitionedLinear
Перекрестный подтвержденный, двоичный файл, линейная модель классификации, заданная как объект модели ClassificationPartitionedLinear
. Можно создать модель ClassificationPartitionedLinear
с помощью fitclinear
и задав любую из перекрестной проверки, аргументов пары "имя-значение", например, CrossVal
.
Чтобы получить оценки, kfoldPredict применяется, те же данные раньше перекрестный подтверждали линейную модель классификации (X
и Y
).
Метка
Перекрестные подтвержденные, предсказанные метки классаПерекрестные подтвержденные, предсказанные метки класса, возвращенные как категориальное или символьный массив, логическая или числовая матрица или массив ячеек из символьных векторов.
В большинстве случаев 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 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 и предварительно обработайте его, когда в Предсказывают Метки Перекрестной проверки k-сгиба. Транспонируйте матрицу данных предиктора.
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. Предварительно обработайте данные как в Оценочной Перекрестной проверке k-сгиба Следующие Вероятности Класса.
load nlpdata Ystats = Y == 'stats'; X = X';
В тестовой выборке существует 9 471 наблюдение.
Создайте набор 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 = classreg.learning.partition.ClassificationPartitionedLinear CrossValidatedModel: 'Linear' ResponseName: 'Y' NumObservations: 31572 KFold: 5 Partition: [1×1 cvpartition] ClassNames: [0 1] ScoreTransform: 'none' Properties, Methods
Mdl1 = CVMdl.Trained{1}
Mdl1 = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'logit' Beta: [34023×11 double] Bias: [-13.2904 -13.2904 -13.2904 -13.2904 -9.9357 -7.0782 -5.4335 -4.5473 -3.4223 -3.1649 -2.9795] Lambda: [1.0000e-06 3.5481e-06 1.2589e-05 4.4668e-05 1.5849e-04 5.6234e-04 0.0020 0.0071 0.0251 0.0891 0.3162] 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.