ClassificationPartitionedKernelECOC

Перекрестная проверенная модель выходных кодов с коррекцией ошибок (ECOC) для многоклассовой классификации

Описание

ClassificationPartitionedKernelECOC является моделью выходных кодов с исправлением ошибок (ECOC), составленной из моделей классификации ядра, обученной на перекрестно проверенных складках. Оцените качество классификации путем перекрестной валидации с помощью одной или нескольких функций «kfold»: kfoldPredict, kfoldLoss, kfoldMargin, и kfoldEdge.

Каждый метод «kfold» использует модели, обученные на обучающих-складных (in-fold) наблюдениях, чтобы предсказать ответ для валидационных-складных (out-of-fold) наблюдений. Например, предположим, что вы перекрестно проверяете с помощью пяти складок. В этом случае программное обеспечение случайным образом присваивает каждое наблюдение пяти группам равного размера (примерно). training fold содержит четыре группы (то есть примерно 4/5 данных), а validation fold - другую группу (то есть примерно 1/5 данных). В этом случае перекрестная валидация выполняется следующим образом:

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

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

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

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

Примечание

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

Создание

Можно создать ClassificationPartitionedKernelECOC модель путем настройки модели ECOC с помощью fitcecoc и определение этих аргументов пары "имя-значение":

  • 'Learners'- Установите значение 'kernel', объект шаблона, возвращенный templateKernelили массив ячеек из таких объектов шаблона.

  • Один из аргументов 'CrossVal', 'CVPartition', 'Holdout', 'KFold', или 'Leaveout'.

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

Свойства

расширить все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Свойства ECOC

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

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

По умолчанию, если все двоичные ученики являются моделями классификации ядра с использованием SVM, то BinaryLoss является 'hinge'. Если все двоичные ученики являются моделями классификации ядра с помощью логистической регрессии, то BinaryLoss является 'quadratic'. Чтобы потенциально увеличить точность, задайте двоичную функцию потерь, отличную от функции по умолчанию во время предсказания или расчета потерь при помощи 'BinaryLoss' Аргумент пары "имя-значение" из kfoldPredict или kfoldLoss.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • T(·) является преобразованием наблюдения для расширения функции.

  • β - предполагаемый вектор-столбец коэффициентов.

  • b - предполагаемое скалярное смещение.

Как изменить CVMdl функции преобразования счета в functionдля примера используйте запись через точку.

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

    CVMdl.ScoreTransform = 'function';

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

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

    CVMdl.ScoreTransform = @function;

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

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

Функции объекта

kfoldEdgeКлассификационные ребра для перекрестно проверенной модели ECOC ядра
kfoldLossКлассификационные потери для перекрестно проверенной модели ECOC ядра
kfoldMarginКлассификационные поля для перекрестно проверенной модели ECOC ядра
kfoldPredictКлассификация наблюдений в перекрестно проверенной модели ECOC ядра

Примеры

свернуть все

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

Загрузите набор данных радужки Фишера. X содержит измерения цветов и Y содержит имена видов цветов.

load fisheriris
X = meas;
Y = species;

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

rng(1); % For reproducibility
CVMdl = fitcecoc(X,Y,'Learners','kernel','CrossVal','on')
CVMdl = 
  ClassificationPartitionedKernelECOC
    CrossValidatedModel: 'KernelECOC'
           ResponseName: 'Y'
        NumObservations: 150
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'setosa'  'versicolor'  'virginica'}
         ScoreTransform: 'none'


  Properties, Methods

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

Оцените ошибку классификации путем передачи CVMdl на kfoldLoss.

error = kfoldLoss(CVMdl)
error = 0.0333

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

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

Введенный в R2018b