ClassificationPartitionedLinear

Пакет: classreg.learning.partition
Суперклассы: ClassificationPartitionedModel

Перекрестная подтвержденная линейная модель для бинарной классификации высоко-размерных данных

Описание

ClassificationPartitionedLinear набор линейных моделей классификации, обученных на перекрестных подтвержденных сгибах. Чтобы получить перекрестную подтвержденную, линейную модель классификации, используйте fitclinear и задайте одну из опций перекрестной проверки. Можно оценить качество классификации, или как хорошо линейная модель классификации делает вывод, с помощью одного или нескольких из этих “kfold” методов: kfoldPredict, kfoldLoss, kfoldMargin, и kfoldEdge.

Каждый “kfold” метод использует модели, обученные на, окутывают наблюдения, чтобы предсказать ответ для наблюдений из сгиба. Например, предположите, что вы перекрестный подтверждаете использование пяти сгибов. В этом случае программное обеспечение случайным образом присваивает каждое наблюдение в пять примерно одинаково размерных групп. training fold содержит четыре из групп (то есть, примерно 4/5 данных), и test fold содержит другую группу (то есть, примерно 1/5 данных). В этом случае перекрестная проверка продолжает можно следующим образом:

  1. Программное обеспечение обучает первую модель (сохраненный в CVMdl.Trained{1}) использование наблюдений в последних четырех группах и резервах наблюдения в первой группе для валидации.

  2. Программное обеспечение обучает вторую модель, которая хранится в CVMdl.Trained{2}, использование наблюдений в первой группе и последних трех группах. Программное обеспечение резервирует наблюдения во второй группе для валидации.

  3. Программное обеспечение продолжает подобным способом для третьего через пятые модели.

Если вы подтверждаете путем вызова kfoldPredict, это вычисляет прогнозы для наблюдений в группе 1, использующей первую модель, группу 2 для второй модели, и так далее. Короче говоря, программное обеспечение оценивает ответ для каждого наблюдения с помощью модели, обученной без того наблюдения.

Примечание

ClassificationPartitionedLinear объекты модели не хранят набор данных предиктора.

Конструкция

CVMdl = fitclinear(X,Y,Name,Value) создает перекрестную подтвержденную, линейную модель классификации когда Name любой 'CrossVal', 'CVPartition', 'Holdout', или 'KFold'. Для получения дополнительной информации смотрите fitclinear.

Свойства

развернуть все

Свойства перекрестной проверки

Перекрестное подтвержденное имя модели, заданное как вектор символов.

Например, 'Linear' задает перекрестную подтвержденную линейную модель для бинарной классификации или регрессии.

Типы данных: char

Количество перекрестных подтвержденных сгибов, заданных как положительное целое число.

Типы данных: double

Значения параметров перекрестной проверки, например, значения аргумента пары "имя-значение" раньше перекрестный подтверждали линейную модель, заданную как объект. ModelParameters не содержит оцененные параметры.

Доступ к свойствам ModelParameters использование записи через точку.

Количество наблюдений в обучающих данных, заданных в виде положительного числа.

Типы данных: double

Раздел данных, указывающий, как программное обеспечение разделяет данные в сгибы перекрестной проверки, заданные как cvpartition модель.

Линейные модели классификации обучены на сгибах перекрестной проверки, заданных как массив ячеек ClassificationLinear модели. Trained имеет ячейки k, где k является количеством сгибов.

Типы данных: cell

Веса наблюдения раньше перекрестный подтверждали модель, заданную как числовой вектор. W имеет NumObservations элементы.

Программное обеспечение нормирует W так, чтобы веса для наблюдений в конкретном классе суммировали до априорной вероятности того класса.

Типы данных: single | double

Наблюдаемые метки класса раньше перекрестный подтверждали модель, заданную как категориальное или символьный массив, логический или числовой вектор или массив ячеек из символьных векторов. Y имеет NumObservations элементы, и являются совпадающим типом данных как входным параметром Y то, что вы передали fitclinear перекрестный подтверждать модель. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)

Каждая строка Y представляет наблюдаемую классификацию соответствующего наблюдения в данных о предикторе.

Типы данных: categorical | char | logical | single | double | cell

Другие свойства классификации

Категориальные индексы предиктора, заданные как вектор положительных целых чисел. CategoricalPredictors содержит значения индекса, соответствующие столбцам данных о предикторе, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пусто ([]).

Типы данных: single | double

Уникальные метки класса используются в обучении, заданном как категориальное или символьный массив, логический или числовой вектор или массив ячеек из символьных векторов. ClassNames имеет совпадающий тип данных, когда класс маркирует Y. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.) ClassNames также определяет порядок класса.

Типы данных: categorical | char | logical | single | double | cell

Это свойство доступно только для чтения.

Затраты Misclassification, заданные как квадратная числовая матрица. Cost имеет строки и столбцы K, где K является количеством классов.

Стойте (iJ) стоимость классификации точки в класс j если его истинным классом является i. Порядок строк и столбцов Cost соответствует порядку классов в ClassNames.

Типы данных: double

Имена предиктора в их порядке внешнего вида в данных о предикторе раньше обучали CVMdl, заданный как массив ячеек из символьных векторов. PredictorNames имеет длину, равную количеству переменных предикторов в данных о предикторе.

Типы данных: cell

Это свойство доступно только для чтения.

Предшествующие вероятности класса, заданные как числовой вектор. Prior имеет столько же элементов сколько количество классов в ClassNames, и порядок элементов соответствует порядку классов в ClassNames.

fitcecoc включает затраты misclassification по-другому среди различных типов бинарных учеников.

Типы данных: double

Имя переменной отклика, заданное как вектор символов.

Типы данных: char

Выиграйте функцию преобразования, чтобы примениться к предсказанным баллам, определенному функцией имени или указателю на функцию.

Для линейных моделей классификации и перед преобразованием, предсказанным счетом классификации к наблюдению x (вектор-строка) является f (x) = x β + b, где β и b соответствуют Mdl.Beta и Mdl.Bias, соответственно.

Чтобы изменить преобразование счета функционируют к, например, function, используйте запись через точку.

  • Для встроенной функции введите этот код и замените function со значением в таблице.

    Mdl.ScoreTransform = 'function';

    ЗначениеОписание
    'doublelogit'1/(1 + e –2x)
    'invlogit'журнал (x / (1 – x))
    'ismax'Устанавливает счет к классу с самым большим счетом к 1, и устанавливает музыку ко всем другим классам к 0
    'logit'1/(1 + e x)
    'none' или 'identity'x (никакое преобразование)
    'sign'– 1 для x <0
    0 для x = 0
    1 для x> 0
    'symmetric'2x – 1
    'symmetricismax'Устанавливает счет к классу с самым большим счетом к 1, и устанавливает музыку ко всем другим классам к –1
    'symmetriclogit'2/(1 + e x) – 1

  • Для функции MATLAB® или функции, которую вы задаете, вводят ее указатель на функцию.

    Mdl.ScoreTransform = @function;

    function должен принять матрицу исходной музыки к каждому классу, и затем возвратить матричное представление одного размера преобразованной музыки к каждому классу.

Типы данных: char | function_handle

Методы

kfoldEdgeРебро классификации для наблюдений, не используемых в обучении
kfoldLossПотеря классификации для наблюдений, не используемых в обучении
kfoldMarginПоля классификации для наблюдений, не используемых в обучении
kfoldPredictПредскажите метки для наблюдений, не используемых в обучении

Копировать семантику

Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

Загрузите набор данных NLP.

load nlpdata

X разреженная матрица данных о предикторе и Y категориальный вектор меток класса. В данных существует больше чем два класса.

Идентифицируйте метки, которые соответствуют веб-страницам документации Statistics and Machine Learning Toolbox™.

Ystats = Y == 'stats';

Перекрестный подтвердите двоичный файл, линейная модель классификации, которая может идентифицировать, являются ли подсчеты слов в веб-странице документации из документации Statistics and Machine Learning Toolbox™.

rng(1); % For reproducibility 
CVMdl = fitclinear(X,Ystats,'CrossVal','on')
CVMdl = 
  classreg.learning.partition.ClassificationPartitionedLinear
    CrossValidatedModel: 'Linear'
           ResponseName: 'Y'
        NumObservations: 31572
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: [0 1]
         ScoreTransform: 'none'


  Properties, Methods

CVMdl ClassificationPartitionedLinear перекрестная подтвержденная модель. Поскольку fitclinear реализует 10-кратную перекрестную проверку по умолчанию, CVMdl.Trained содержит десять ClassificationLinear модели, которые содержат результаты учебных линейных моделей классификации для каждого из сгибов.

Оцените метки для наблюдений из сгиба и оцените ошибку обобщения путем передачи CVMdl к kfoldPredict и kfoldLoss, соответственно.

oofLabels = kfoldPredict(CVMdl);
ge = kfoldLoss(CVMdl)
ge = 7.6017e-04

Предполагаемая ошибка обобщения меньше 0,1% неправильно классифицированные наблюдения.

Чтобы определить хорошую силу штрафа лассо для линейной модели классификации, которая использует ученика логистической регрессии, реализуйте 5-кратную перекрестную проверку.

Загрузите набор данных NLP.

load nlpdata

X разреженная матрица данных о предикторе и Y категориальный вектор меток класса. В данных существует больше чем два класса.

Модели должны идентифицировать, являются ли подсчеты слов в веб-странице из документации Statistics and Machine Learning Toolbox™. Так, идентифицируйте метки, которые соответствуют веб-страницам документации Statistics and Machine Learning Toolbox™.

Ystats = Y == 'stats';

Создайте набор 11 логарифмически распределенных сильных мест регуляризации от 10-6 через 10-0.5.

Lambda = logspace(-6,-0.5,11);

Перекрестный подтвердите модели. Чтобы увеличить скорость выполнения, транспонируйте данные о предикторе и укажите, что наблюдения находятся в столбцах. Оцените содействующее использование SpaRSA. Понизьте допуск на градиент целевой функции к 1e-8.

X = X'; 
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

numCLModels = numel(CVMdl.Trained)
numCLModels = 5

CVMdl ClassificationPartitionedLinear модель. Поскольку fitclinear реализует 5-кратную перекрестную проверку, CVMdl содержит 5 ClassificationLinear модели, которые программное обеспечение обучает на каждом сгибе.

Отобразите первую обученную линейную модель классификации.

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 объект модели. fitclinear созданный Mdl1 по образованию на первых четырех сгибах. Поскольку Lambda последовательность сильных мест регуляризации, можно думать о Mdl1 как 11 моделей, один для каждой силы регуляризации в Lambda.

Оцените перекрестную подтвержденную ошибку классификации.

ce = kfoldLoss(CVMdl);

Поскольку существует 11 сильных мест регуляризации, ce вектор 1 на 11 коэффициентов ошибок классификации.

Более высокие значения 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(ce),...
    log10(Lambda),log10(numNZCoeff)); 
hL1.Marker = 'o';
hL2.Marker = 'o';
ylabel(h(1),'log_{10} classification error')
ylabel(h(2),'log_{10} nonzero-coefficient frequency')
xlabel('log_{10} Lambda')
title('Test-Sample Statistics')
hold off

Выберите индекс силы регуляризации, которая балансирует разреженность переменного предиктора и низкую ошибку классификации. В этом случае, значение между 10-4 к 10-1 должен быть достаточным.

idxFinal = 7;

Выберите модель из Mdl с выбранной силой регуляризации.

MdlFinal = selectModels(Mdl,idxFinal);

MdlFinal ClassificationLinear модель, содержащая одну силу регуляризации. Чтобы оценить метки для новых наблюдений, передайте MdlFinal и новые данные к predict.

Смотрите также

| | |

Введенный в R2016a