Класс: ClassificationLinear
Поля классификации для линейных моделей классификации
использование любой из предыдущих синтаксисов и дополнительных опций задано одним или несколькими m = margin(___,Name,Value)Name,Value парные аргументы. Например, можно указать, что столбцы в данных о предикторе соответствуют наблюдениям.
Mdl — Двоичный файл, линейная модель классификацииClassificationLinear объект моделиДвоичный файл, линейная модель классификации в виде ClassificationLinear объект модели. Можно создать ClassificationLinear объект модели с помощью fitclinear.
X — Данные о предиктореДанные о предикторе в виде n-by-p полная или разреженная матрица. Эта ориентация X указывает, что строки соответствуют отдельным наблюдениям, и столбцы соответствуют отдельным переменным предикторам.
Если вы ориентируете свою матрицу предиктора так, чтобы наблюдения соответствовали столбцам и задали 'ObservationsIn','columns', затем вы можете испытать значительное сокращение во время вычисления.
Длина Y и количество наблюдений в X должно быть равным.
Типы данных: single | double
Y — Метки классаКласс помечает в виде категориального, символа, или массива строк, логического или числового вектора или массива ячеек из символьных векторов.
Тип данных Y должен совпасть с типом данных Mdl.ClassNames. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
Отличные классы в Y должно быть подмножество Mdl.ClassNames.
Если Y символьный массив, затем каждый элемент должен соответствовать одной строке массива.
Длина Y и количество наблюдений в X должно быть равным.
Типы данных: categorical | char | string | logical | single | double | cell
Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'ObservationsIn' — Размерность наблюдения данных о предикторе'rows' (значение по умолчанию) | 'columns'Размерность наблюдения данных о предикторе в виде разделенной запятой пары, состоящей из 'ObservationsIn' и 'columns' или 'rows'.
Если вы ориентируете свою матрицу предиктора так, чтобы наблюдения соответствовали столбцам и задали 'ObservationsIn','columns', затем вы можете испытать значительное сокращение во время выполнения оптимизации.
m — Поля классификацииПоля классификации, возвращенные как числовой вектор-столбец или матрица.
m n-by-L, где n является количеством наблюдений в X и L является количеством сильных мест регуляризации в Mdl (то есть, numel(Mdl.Lambda)).
m ( поле классификации наблюдения i с помощью обученной линейной модели классификации, которая имеет силу регуляризации iJ)Mdl. Lambda (.j)
Загрузите набор данных NLP.
load nlpdataX разреженная матрица данных о предикторе и Y категориальный вектор меток класса. В данных существует больше чем два класса.
Модели должны идентифицировать, являются ли подсчеты слов в веб-странице из документации Statistics and Machine Learning Toolbox™. Так, идентифицируйте метки, которые соответствуют веб-страницам документации Statistics and Machine Learning Toolbox™.
Ystats = Y == 'stats';Обучите двоичный файл, линейная модель классификации, которая может идентифицировать, являются ли подсчеты слов в веб-странице документации из документации Statistics and Machine Learning Toolbox™. Задайте, чтобы протянуть 30% наблюдений. Оптимизируйте использование целевой функции SpaRSA.
rng(1); % For reproducibility CVMdl = fitclinear(X,Ystats,'Solver','sparsa','Holdout',0.30); CMdl = CVMdl.Trained{1};
CVMdl ClassificationPartitionedLinear модель. Это содержит свойство Trained, который является массивом ячеек 1 на 1, содержащим ClassificationLinear модель, что программное обеспечение обучило использование набора обучающих данных.
Извлеките обучение и тестовые данные из определения раздела.
trainIdx = training(CVMdl.Partition); testIdx = test(CVMdl.Partition);
Оцените обучение - и демонстрационные тестом поля.
mTrain = margin(CMdl,X(trainIdx,:),Ystats(trainIdx)); mTest = margin(CMdl,X(testIdx,:),Ystats(testIdx));
Поскольку существует одна сила регуляризации в CMdl, mTrain и mTest вектор-столбцы с длинами, равными количеству обучения, и тестируют наблюдения, соответственно.
Постройте оба набора полей с помощью диаграмм.
figure; boxplot([mTrain; mTest],[zeros(size(mTrain,1),1); ones(size(mTest,1),1)], ... 'Labels',{'Training set','Test set'}); h = gca; h.YLim = [-5 60]; title 'Training- and Test-Set Margins'

Распределения полей между наборами обучающих данных и наборами тестов кажутся подобными.
Один способ выполнить выбор признаков состоит в том, чтобы сравнить демонстрационные тестом поля от многоуровневых моделей. Базирующийся только на этом критерии, классификатор с большими полями является лучшим классификатором.
Загрузите набор данных NLP. Предварительно обработайте данные как в Оценочных Полях Тестовой Выборки.
load nlpdata Ystats = Y == 'stats'; X = X'; rng(1); % For reproducibility
Создайте раздел данных, который протягивает 30% наблюдений для тестирования.
Partition = cvpartition(Ystats,'Holdout',0.30); testIdx = test(Partition); % Test-set indices XTest = X(:,testIdx); YTest = Ystats(testIdx);
Partition cvpartition объект, который задает раздел набора данных.
Случайным образом выберите 10% переменных предикторов.
p = size(X,1); % Number of predictors
idxPart = randsample(p,ceil(0.1*p));Обучите два двоичных файла, линейные модели классификации: тот, который использует все предикторы и тот, который использует случайные 10%. Оптимизируйте использование целевой функции SpaRSA и укажите, что наблюдения соответствуют столбцам.
CVMdl = fitclinear(X,Ystats,'CVPartition',Partition,'Solver','sparsa',... 'ObservationsIn','columns'); PCVMdl = fitclinear(X(idxPart,:),Ystats,'CVPartition',Partition,'Solver','sparsa',... 'ObservationsIn','columns');
CVMdl и PCVMdl ClassificationPartitionedLinear модели.
Извлеките обученный ClassificationLinear модели из перекрестных подтвержденных моделей.
CMdl = CVMdl.Trained{1};
PCMdl = PCVMdl.Trained{1};Оцените тестовые демонстрационные поля для каждого классификатора. Постройте распределение наборов полей с помощью диаграмм.
fullMargins = margin(CMdl,XTest,YTest,'ObservationsIn','columns'); partMargins = margin(PCMdl,XTest(idxPart,:),YTest,... 'ObservationsIn','columns'); figure; boxplot([fullMargins partMargins],'Labels',... {'All Predictors','10% of the Predictors'}); h = gca; h.YLim = [-20 60]; title('Test-Sample Margins')

Граничное распределение CMdl расположен выше, чем граничное распределение PCMdl.
Чтобы определить хорошую силу штрафа лассо для линейной модели классификации, которая использует ученика логистической регрессии, сравните распределения демонстрационных тестом полей.
Загрузите набор данных NLP. Предварительно обработайте данные как в Оценочных Полях Тестовой Выборки.
load nlpdata Ystats = Y == 'stats'; X = X'; Partition = cvpartition(Ystats,'Holdout',0.30); testIdx = test(Partition); XTest = X(:,testIdx); YTest = Ystats(testIdx);
Создайте набор 11 логарифмически распределенных сильных мест регуляризации от через .
Lambda = logspace(-8,1,11);
Обучите двоичный файл, линейные модели классификации, которые используют каждые из сильных мест регуляризации. Оптимизируйте использование целевой функции SpaRSA. Понизьте допуск на градиент целевой функции к 1e-8.
rng(10); % For reproducibility CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns',... 'CVPartition',Partition,'Learner','logistic','Solver','sparsa',... 'Regularization','lasso','Lambda',Lambda,'GradientTolerance',1e-8)
CVMdl =
classreg.learning.partition.ClassificationPartitionedLinear
CrossValidatedModel: 'Linear'
ResponseName: 'Y'
NumObservations: 31572
KFold: 1
Partition: [1x1 cvpartition]
ClassNames: [0 1]
ScoreTransform: 'none'
Properties, Methods
Извлеките обученную линейную модель классификации.
Mdl = CVMdl.Trained{1}Mdl =
ClassificationLinear
ResponseName: 'Y'
ClassNames: [0 1]
ScoreTransform: 'logit'
Beta: [34023x11 double]
Bias: [1x11 double]
Lambda: [1x11 double]
Learner: 'logistic'
Properties, Methods
Mdl ClassificationLinear объект модели. Поскольку Lambda последовательность сильных мест регуляризации, можно думать о Mdl как 11 моделей, один для каждой силы регуляризации в Lambda.
Оцените демонстрационные тестом поля.
m = margin(Mdl,X(:,testIdx),Ystats(testIdx),'ObservationsIn','columns'); size(m)
ans = 1×2
9471 11
Поскольку существует 11 сильных мест регуляризации, m имеет 11 столбцов.
Постройте демонстрационные тестом поля для каждой силы регуляризации. Поскольку баллы логистической регрессии находятся в [0,1], поля находятся в [-1,1]. Перемасштабируйте поля, чтобы помочь идентифицировать силу регуляризации, которая максимизирует поля по сетке.
figure; boxplot(10000.^m) ylabel('Exponentiated test-sample margins') xlabel('Lambda indices')

Несколько значений Lambda дайте к граничным распределениям, которые уплотнены рядом . Более высокие значения lambda приводят к разреженности переменного предиктора, которая является хорошим качеством классификатора.
Выберите силу регуляризации, которая происходит непосредственно перед тем, как центры граничных распределений начинают уменьшаться.
LambdaFinal = Lambda(5);
Обучите линейную модель классификации использование целого набора данных и задайте желаемую силу регуляризации.
MdlFinal = fitclinear(X,Ystats,'ObservationsIn','columns',... 'Learner','logistic','Solver','sparsa','Regularization','lasso',... 'Lambda',LambdaFinal);
Чтобы оценить метки для новых наблюдений, передайте MdlFinal и новые данные к predict.
classification margin для бинарной классификации, для каждого наблюдения, различия между классификационной оценкой для истинного класса и классификационной оценкой для ложного класса.
Программное обеспечение задает поле классификации для бинарной классификации как
x является наблюдением. Если истинная метка x является положительным классом, то y равняется 1, и –1 в противном случае. f (x) является классификационной оценкой положительного класса для наблюдения x. Поле классификации обычно задается как m = y f (x).
Если поля находятся по той же шкале, то они служат мерой по доверию классификации. Среди нескольких классификаторов те, которые дают к большим полям, лучше.
Для линейных моделей классификации, необработанного classification score для классификации наблюдения x, вектор-строка, в положительный класс задан
Для модели с силой регуляризации j, предполагаемый вектор-столбец коэффициентов (свойство Beta(:,j) модели) и предполагаемое, скалярное смещение (свойство Bias(j) модели).
Необработанная классификационная оценка для классификации x в отрицательный класс является –f (x). Программное обеспечение классифицирует наблюдения в класс, который дает к положительному счету.
Если линейная модель классификации состоит из учеников логистической регрессии, то программное обеспечение применяет 'logit' выиграйте преобразование к необработанным классификационным оценкам (см. ScoreTransform).
Эта функция полностью поддерживает "высокие" массивы. Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.