Класс: ClassificationLinear
Поля классификации для линейных моделей классификации
возвращает поля классификации для двоичного файла, линейной модели m
= margin(Mdl
,X
,Y
)Mdl
классификации использование данных о предикторе в
X
и соответствующий класс помечает в Y
M
содержит поля классификации для каждой силы регуляризации в Mdl
.
возвращает поля классификации для обученного линейного классификатора m
= margin(Mdl
,Tbl
,ResponseVarName
)Mdl
использование данных о предикторе в таблице Tbl
и класс помечает в Tbl.ResponseVarName
.
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
или Tbl
.
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
dimension
— Размерность наблюдения данных о предикторе'rows'
(значение по умолчанию) | 'columns'
Размерность наблюдения данных о предикторе в виде 'columns'
или 'rows'
.
Примечание
Если вы ориентируете свою матрицу предиктора так, чтобы наблюдения соответствовали столбцам и задали 'ObservationsIn','columns'
, затем вы можете испытать значительное сокращение во время выполнения оптимизации. Вы не можете задать 'ObservationsIn','columns'
для данных о предикторе в таблице.
Tbl
— Выборочные данныеВыборочные данные раньше обучали модель в виде таблицы. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору. Опционально, Tbl
может содержать дополнительные столбцы для весов наблюдения и переменной отклика. Tbl
должен содержать все предикторы, используемые, чтобы обучить Mdl
. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.
Если Tbl
содержит переменную отклика, используемую, чтобы обучить Mdl
, затем вы не должны задавать ResponseVarName
или Y
.
Если вы обучаете Mdl
использование выборочных данных, содержавшихся в таблице, затем входные данные для margin
должен также быть в таблице.
ResponseVarName
— Имя переменной откликаTbl
Имя переменной отклика в виде имени переменной в Tbl
. Если Tbl
содержит переменную отклика, используемую, чтобы обучить Mdl
, затем вы не должны задавать ResponseVarName
.
Если вы задаете ResponseVarName
, затем необходимо задать его как вектор символов или строковый скаляр. Например, если переменная отклика хранится как Tbl.Y
, затем задайте ResponseVarName
как 'Y'
. В противном случае программное обеспечение обрабатывает все столбцы Tbl
, включая Tbl.Y
, как предикторы.
Переменная отклика должна быть категориальным, символом или массивом строк; логический или числовой вектор; или массив ячеек из символьных векторов. Если переменная отклика является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Типы данных: char |
string
m
— Поля классификацииПоля классификации, возвращенные как числовой вектор-столбец или матрица.
m
n-by-L, где n является количеством наблюдений в X
и L является количеством сильных мест регуляризации в Mdl
(то есть, numel(Mdl.Lambda)
).
m (
поле классификации наблюдения i с помощью обученной линейной модели классификации, которая имеет силу регуляризации i
J
)Mdl. Lambda (
.j
)
Загрузите набор данных NLP.
load nlpdata
X
разреженная матрица данных о предикторе и 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 = 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: [-11.1430 -11.1430 -11.1430 -11.1430 -11.1430 ... ] Lambda: [1.0000e-08 7.9433e-08 6.3096e-07 5.0119e-06 ... ] 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
).
Указания и ограничения по применению:
margin
не поддерживает высокий table
данные.
Для получения дополнительной информации см. Раздел "Высокие массивы".
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.