ClassificationPartitionedLinearECOC

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

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

Описание

ClassificationPartitionedLinearECOC является набором моделей выходных кодов с коррекцией ошибок (ECOC), состоявших из линейных моделей классификации, обученных на перекрестных подтвержденных сгибах. Оцените качество классификации перекрестной проверкой с помощью одной или нескольких функций “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 для второй модели, и так далее. Короче говоря, программное обеспечение оценивает ответ для каждого наблюдения с помощью модели, обученной без того наблюдения.

Примечание

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

Конструкция

CVMdl = fitcecoc(X,Y,'Learners',t,Name,Value) возвращает перекрестную подтвержденную, линейную модель ECOC когда:

  • t является 'Linear' или объект шаблона, возвращенный templateLinear.

  • Name является одним из 'CrossVal', 'CVPartition', 'Holdout' или 'KFold'.

Для получения дополнительной информации смотрите fitcecoc.

Свойства

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

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

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

Например, 'ECOC' задает перекрестную подтвержденную модель ECOC.

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

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

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

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

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

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

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

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

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

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

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

Программное обеспечение нормирует веса, используемые для обучения так, чтобы nansum(W) был 1.

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

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

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

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

Свойства ECOC

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

Если вы обучаете использующих бинарных учеников, которые используют различные функции потерь, то программное обеспечение устанавливает BinaryLoss на 'hamming'. Чтобы потенциально увеличить точность, задайте бинарную функцию потерь кроме значения по умолчанию во время прогноза или вычисления потерь при помощи аргумента пары "имя-значение" 'BinaryLoss' predict или loss.

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

Бинарные метки класса ученика, заданные как числовая матрица или [].

  • Если матрица кодирования является тем же самым через сгибы, то BinaryY является NumObservations-by-L матрица, где L является количеством бинарных учеников (size(CodingMatrix,2)).

    Элементами BinaryY является -1, 0 или 1, и значение соответствует дихотомическому присвоению класса. Эта таблица описывает, как ученик j присваивает наблюдение k дихотомическому классу, соответствующему значению BinaryY(k,j).

    ЗначениеДихотомическое присвоение класса
    –1Ученик j присваивает наблюдение k отрицательному классу.
    0Перед обучением ученик j удаляет наблюдение k из набора данных.
    1Ученик j присваивает наблюдение k положительному классу.

  • Если матрица кодирования отличается через сгибы, то BinaryY пуст ([]).

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

Коды, задающие присвоения класса для бинарных учеников, заданных как числовая матрица или [].

  • Если матрица кодирования является тем же самым через сгибы, то CodingMatrix является K-by-L матрица. K является количеством классов, и L является количеством бинарных учеников.

    Элементами CodingMatrix является -1, 0 или 1, и значение соответствует дихотомическому присвоению класса. Эта таблица описывает, как ученик j присваивает наблюдения в классе i к дихотомическому классу, соответствующему значению CodingMatrix(i,j).

    ЗначениеДихотомическое присвоение класса
    –1Ученик j присваивает наблюдения в классе i к отрицательному классу.
    0Перед обучением ученик j удаляет наблюдения в классе i от набора данных.
    1Ученик j присваивает наблюдения в классе i к положительному классу.

  • Если матрица кодирования отличается через сгибы, то CodingMatrix пуст ([]). Получите матрицу кодирования для каждого сгиба с помощью свойства Trained. Например, CVMdl.Trained{1}.CodingMatrix является матрицей кодирования в первом сгибе перекрестной подтвержденной модели ECOC CVMdl.

Типы данных: double | single | int8 | int16 | int32 | int64

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

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

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

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

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

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

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

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

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

Типы данных: 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 является категориальным вектором меток класса.

Перекрестный подтвердите мультикласс, линейная модель классификации, которая может идентифицировать, от которого тулбокс MATLAB® веб-страница документации на основе количеств слов на странице.

rng(1); % For reproducibility 
CVMdl = fitcecoc(X,Y,'Learners','linear','CrossVal','on')
CVMdl = 
  classreg.learning.partition.ClassificationPartitionedLinearECOC
    CrossValidatedModel: 'LinearECOC'
           ResponseName: 'Y'
        NumObservations: 31572
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: [1x13 categorical]
         ScoreTransform: 'none'


  Properties, Methods

CVMdl является ClassificationPartitionedLinearECOC перекрестная подтвержденная модель. Поскольку fitcecoc реализует 10-кратную перекрестную проверку по умолчанию, CVMdl.Trained содержит вектор ячейки 10 на 1 десяти моделей CompactClassificationECOC, которые содержат результаты учебных моделей ECOC, состоявших из двоичного файла, линейных моделей классификации для каждого из сгибов.

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

oofLabels = kfoldPredict(CVMdl);
ge = kfoldLoss(CVMdl)
ge = 0.0958

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

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

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

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

load nlpdata

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

Для простоты используйте метку 'другие' для всех наблюдений в Y, которые не являются 'simulink', 'dsp' или 'comm'.

Y(~(ismember(Y,{'simulink','dsp','comm'}))) = 'others';

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

Lambda = logspace(-7,-2,11);

Создайте линейный шаблон модели классификации, который задает, чтобы использовать учеников логистической регрессии, использовать штрафы лассо с сильными местами в Lambda, использование train SpaRSA, и понизить допуск на градиент целевой функции к 1e-8.

t = templateLinear('Learner','logistic','Solver','sparsa',...
    'Regularization','lasso','Lambda',Lambda,'GradientTolerance',1e-8);

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

X = X'; 
rng(10); % For reproducibility
CVMdl = fitcecoc(X,Y,'Learners',t,'ObservationsIn','columns','KFold',5);

CVMdl является моделью ClassificationPartitionedLinearECOC.

Разделите CVMdl и каждую модель в нем.

numECOCModels = numel(CVMdl.Trained)
numECOCModels = 5
ECOCMdl1 = CVMdl.Trained{1}
ECOCMdl1 = 
  classreg.learning.classif.CompactClassificationECOC
      ResponseName: 'Y'
        ClassNames: [comm    dsp    simulink    others]
    ScoreTransform: 'none'
    BinaryLearners: {6×1 cell}
      CodingMatrix: [4×6 double]


  Properties, Methods

numCLModels = numel(ECOCMdl1.BinaryLearners)
numCLModels = 6
CLMdl1 = ECOCMdl1.BinaryLearners{1}
CLMdl1 = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [-1 1]
    ScoreTransform: 'logit'
              Beta: [34023×11 double]
              Bias: [-0.3125 -0.3596 -0.3596 -0.3596 -0.3596 -0.3596 -0.1593 -0.0737 -0.1759 -0.3452 -0.5174]
            Lambda: [1.0000e-07 3.1623e-07 1.0000e-06 3.1623e-06 1.0000e-05 3.1623e-05 1.0000e-04 3.1623e-04 1.0000e-03 0.0032 0.0100]
           Learner: 'logistic'


  Properties, Methods

Поскольку fitcecoc реализует 5-кратную перекрестную проверку, CVMdl содержит массив ячеек 5 на 1 моделей CompactClassificationECOC, которые программное обеспечение обучает на каждом сгибе. Свойство BinaryLearners каждой модели CompactClassificationECOC содержит модели ClassificationLinear. Количество моделей ClassificationLinear в каждой компактной модели ECOC зависит от количества отличных меток и кодирующий проект. Поскольку Lambda является последовательностью сильных мест регуляризации, можно думать о CLMdl1 как о 11 моделях, один для каждой силы регуляризации в Lambda.

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

ce = kfoldLoss(CVMdl);
figure;
plot(log10(Lambda),log10(ce))
[~,minCEIdx] = min(ce);
minLambda = Lambda(minCEIdx);
hold on
plot(log10(minLambda),log10(ce(minCEIdx)),'ro');
ylabel('log_{10} 5-fold classification error')
xlabel('log_{10} Lambda')
legend('MSE','Min classification error')
hold off

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

t = templateLinear('Learner','logistic','Solver','sparsa',...
    'Regularization','lasso','Lambda',minLambda,'GradientTolerance',1e-8);
MdlFinal = fitcecoc(X,Y,'Learners',t,'ObservationsIn','columns');

Чтобы оценить метки для новых наблюдений, передайте MdlFinal и новые данные к predict.

Введенный в R2016a