Класс: ClassificationLinear
Ребро классификации для линейных моделей классификации
e = edge(Mdl,X,Y)
e = edge(___,Name,Value)
использование любой из предыдущих синтаксисов и дополнительных опций задано одним или несколькими аргументами пары e
= edge(___,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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'ObservationsIn'
— Размерность наблюдения данных о предикторе'rows'
(значение по умолчанию) | 'columns'
Размерность наблюдения данных о предикторе, заданная как пара, разделенная запятой, состоящая из 'ObservationsIn'
и 'columns'
или 'rows'
.
Если вы ориентируете свою матрицу предиктора так, чтобы наблюдения соответствовали столбцам и задали 'ObservationsIn','columns'
, то вы можете испытать значительное сокращение во время выполнения оптимизации.
'Weights'
— Веса наблюденияВеса наблюдения, заданные как пара, разделенная запятой, состоящая из 'Weights'
и числовой вектор положительных значений. Если вы предоставляете веса, edge
вычисляет взвешенное ребро классификации.
Позвольте n
быть количеством наблюдений в X
.
numel(Weights)
должен быть n
.
По умолчанию Weights
является
.ones(n,1)
edge
нормирует Weights
, чтобы суммировать до значения априорной вероятности в соответствующем классе.
Типы данных: double | single
e
Ребра классификацииРебра классификации, возвращенные в виде числа или вектора - строки.
e
одного размера как Mdl.Lambda
.
является ребром классификации линейной модели классификации, обученной с помощью силы регуляризации e(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);
Оцените обучение - и демонстрационные тестом ребра.
eTrain = edge(CMdl,X(trainIdx,:),Ystats(trainIdx))
eTrain = 15.6660
eTest = edge(CMdl,X(testIdx,:),Ystats(testIdx))
eTest = 15.4767
Один способ выполнить выбор функции состоит в том, чтобы сравнить демонстрационные тестом ребра от многоуровневых моделей. Базирующийся только на этом критерии, классификатор с самым высоким ребром является лучшим классификатором.
Загрузите набор данных NLP.
load nlpdata
X
является разреженной матрицей данных о предикторе, и Y
является категориальным вектором меток класса. В данных существует больше чем два класса.
Модели должны идентифицировать, являются ли подсчеты слов в веб-странице из документации Statistics and Machine Learning Toolbox™. Так, идентифицируйте метки, которые соответствуют веб-страницам документации Statistics and Machine Learning Toolbox™. В течение более быстрого времени выполнения ориентируйте данные о предикторе так, чтобы отдельные наблюдения соответствовали столбцам.
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
, который задает раздел набора данных.
Случайным образом выберите половину переменных прогноза.
p = size(X,1); % Number of predictors
idxPart = randsample(p,ceil(0.5*p));
Обучите два двоичных файла, линейные модели классификации: тот, который использует все предикторы и тот, который использует половину предикторов. Оптимизируйте использование целевой функции 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};
Оцените тестовое демонстрационное ребро для каждого классификатора.
fullEdge = edge(CMdl,XTest,YTest,'ObservationsIn','columns')
fullEdge = 15.4767
partEdge = edge(PCMdl,XTest(idxPart,:),YTest,'ObservationsIn','columns')
partEdge = 13.4458
На основе демонстрационных тестом ребер классификатор, который использует все предикторы, является лучшей моделью.
Чтобы определить хорошую силу штрафа лассо для линейной модели классификации, которая использует ученика логистической регрессии, сравните демонстрационные тестом ребра.
Загрузите набор данных 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
.
Оцените демонстрационные тестом ребра.
e = edge(Mdl,X(:,testIdx),Ystats(testIdx),'ObservationsIn','columns')
e = 1×11
0.9986 0.9986 0.9986 0.9986 0.9986 0.9932 0.9767 0.9182 0.8333 0.8128 0.8128
Поскольку существует 11 сильных мест регуляризации, e
является вектором 1 на 11 ребер.
Постройте демонстрационные тестом ребра для каждой силы регуляризации. Идентифицируйте силу регуляризации, которая максимизирует ребра по сетке.
figure; plot(log10(Lambda),log10(e),'-o') [~, maxEIdx] = max(e); maxLambda = Lambda(maxEIdx); hold on plot(log10(maxLambda),log10(e(maxEIdx)),'ro'); ylabel('log_{10} test-sample edge') xlabel('log_{10} Lambda') legend('Edge','Max edge') hold off
Несколько значений Lambda
приводят к столь же высоким ребрам. Более высокие значения lambda приводят к разреженности переменной прогноза, которая является хорошим качеством классификатора.
Выберите силу регуляризации, которая происходит непосредственно перед тем, как ребро начинает уменьшаться.
LambdaFinal = Lambda(5);
Обучите линейную модель классификации использование целого набора данных и задайте силу регуляризации, приводящую к максимальному ребру.
MdlFinal = fitclinear(X,Ystats,'ObservationsIn','columns',... 'Learner','logistic','Solver','sparsa','Regularization','lasso',... 'Lambda',LambdaFinal);
Чтобы оценить метки для новых наблюдений, передайте MdlFinal
и новые данные к predict
.
classification edge является взвешенным средним classification margins.
Один способ выбрать среди нескольких классификаторов, например, выполнить выбор функции, состоит в том, чтобы выбрать классификатор, который приводит к самому большому ребру.
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
).
По умолчанию веса наблюдения являются предшествующими вероятностями класса. Если вы предоставляете веса с помощью Weights
, то программное обеспечение нормирует их, чтобы суммировать к априорным вероятностям в соответствующих классах. Программное обеспечение использует нормированные веса, чтобы оценить взвешенное ребро.
Эта функция полностью поддерживает "высокие" массивы. Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.