CompactClassificationNaiveBayes

Компактный наивный классификатор Байеса для классификации мультиклассов

Описание

CompactClassificationNaiveBayes компактная версия наивного классификатора Байеса. Компактный классификатор не включает данные, используемые для обучения наивный классификатор Байеса. Поэтому вы не можете выполнить некоторые задачи, такие как перекрестная проверка, с помощью компактного классификатора. Используйте компактный наивный классификатор Байеса для задач, таких как предсказание меток данных.

Создание

Создайте CompactClassificationNaiveBayes модель от полного, обученного ClassificationNaiveBayes классификатор при помощи compact.

Свойства

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

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

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

Предиктор называет в виде массива ячеек из символьных векторов. Порядок элементов в PredictorNames соответствует порядку, в котором имена предиктора появляются в обучающих данных X.

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

Расширенный предиктор называет в виде массива ячеек из символьных векторов.

Если модель использует фиктивное переменное кодирование для категориальных переменных, то ExpandedPredictorNames включает имена, которые описывают расширенные переменные. В противном случае, ExpandedPredictorNames совпадает с PredictorNames.

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

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

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

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

Многомерные уровни многочлена в виде массива ячеек. Длина CategoricalLevels равно количеству предикторов (size(X,2)).

Ячейки CategoricalLevels соответствуйте предикторам, которые вы задаете как 'mvmn' во время обучения, то есть, у них есть многомерное распределение многочлена. Ячейки, которые не соответствуют многомерному распределению многочлена, пусты ([]).

Если предиктор j является многомерным многочленом, то CategoricalLevels{j список всех отличных значений предиктора j в выборке. NaNs удалены из unique(X(:,j)).

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

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

Распределения предиктора в виде вектора символов или массива ячеек из символьных векторов. fitcnb использует распределения предиктора, чтобы смоделировать предикторы. Эта таблица приводит доступные распределения.

ЗначениеОписание
'kernel'Ядро, сглаживающее оценку плотности
'mn'Распределение многочлена. Если вы задаете mn, затем всеми функциями являются компоненты распределения многочлена. Поэтому вы не можете включать 'mn' как элемент массива строк или массива ячеек из символьных векторов. Для получения дополнительной информации смотрите Предполагаемую Вероятность для Распределения Многочлена.
'mvmn'Многомерное полиномиальное распределение. Для получения дополнительной информации смотрите Предполагаемую Вероятность для Многомерного Распределения Многочлена.
'normal'Нормальное (Гауссово) распределение

Если DistributionNames 1 P массивом ячеек из символьных векторов, затем fitcnb моделирует функцию j с помощью распределения в элементе j массива ячеек.

Пример: 'mn'

Пример: {'kernel','normal','kernel'}

Типы данных: char | string | cell

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

Параметр распределения оценивает в виде массива ячеек. DistributionParameters K-by-D массив ячеек, где ячейка (k, d) содержит оценки параметра распределения для экземпляров предиктора d в классе k. Порядок строк соответствует порядку классов в свойстве ClassNames, и порядок предикторов соответствует порядку столбцов X.

Если класс k не имеет никаких наблюдений для предиктора j, затем Распределение {kJ} isempty).

Элементы DistributionParameters зависьте от распределений предикторов. Эта таблица описывает значения в DistributionParameters {kJ}.

Распределение предиктора jЗначение массива ячеек для предиктора j и класс k
kernelKernelDistribution модель. Отобразите индексацию ячейки использования свойств и запись через точку. Например, чтобы отобразить предполагаемую полосу пропускания плотности ядра для предиктора 2 в третьем классе, используйте Mdl.DistributionParameters{3,2}.Bandwidth.
mnСкаляр, представляющий вероятность, что маркерный j появляется в классе k. Для получения дополнительной информации смотрите Предполагаемую Вероятность для Распределения Многочлена.
mvmnЧисловой вектор, содержащий вероятности для каждого возможного уровня предиктора j в классе k. Программное обеспечение заказывает вероятности согласно отсортированному порядку всех уникальных уровней предиктора j (сохраненный в свойстве CategoricalLevels). Для получения дополнительной информации смотрите Предполагаемую Вероятность для Многомерного Распределения Многочлена.
normal2 1 числовой вектор. Первым элементом является демонстрационное среднее значение, и вторым элементом является демонстрационное стандартное отклонение. Для получения дополнительной информации смотрите Средства оценки Нормального распределения

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

Ядро более сглаженный тип в виде имени ядра или массива ячеек имен ядра. Длина Kernel равно количеству предикторов (size(X,2)). Kernel{j соответствует предиктору j и содержит вектор символов, описывающий тип более сглаженного ядра. Если ячейка пуста ([]то fitcnb не соответствовал ядерному распределению к соответствующему предиктору.

Эта таблица описывает поддерживаемое ядро более сглаженные типы. I {u} обозначает функцию индикатора.

ЗначениеЯдроФормула
'box'Поле (универсальная форма)

f(x)=0.5I{|x|1}

'epanechnikov'Епанечников

f(x)=0.75(1x2)I{|x|1}

'normal'Гауссов

f(x)=12πexp(0.5x2)

'triangle'Треугольный

f(x)=(1|x|)I{|x|1}

Пример: 'box'

Пример: {'epanechnikov','normal'}

Типы данных: char | string | cell

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

Ядро более сглаженная поддержка плотности в виде массива ячеек. Длина Support равно количеству предикторов (size(X,2)). Ячейки представляют области который fitcnb применяет плотность ядра. Если ячейка пуста ([]то fitcnb не соответствовал ядерному распределению к соответствующему предиктору.

Эта таблица описывает поддерживаемые опции.

ЗначениеОписание
1 2 числовой вектор-строкаПоддержка плотности применяется к заданным границам, например, [L,U], где L и U конечные нижние и верхние границы, соответственно.
'positive'Поддержка плотности применяется ко всем положительным вещественным значениям.
'unbounded'Поддержка плотности применяется ко всем вещественным значениям.

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

Ядро более сглаженная ширина окна в виде числовой матрицы. Width K-by-P матрица, где K является количеством классов в данных, и P является количеством предикторов (size(X,2)).

Ширина (kJ) ядро более сглаженная ширина окна для плотности сглаживания ядра предиктора j в классе kNaNs в столбце j укажите на это fitcnb не соответствовал предиктору j использование плотности ядра.

Свойства ответа

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

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

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

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

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

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

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

Учебные свойства

Априорные вероятности в виде числового вектора. Порядок элементов в Prior соответствует элементам Mdl.ClassNames.

fitcnb нормирует априорные вероятности, вы устанавливаете использование 'Prior' аргумент пары "имя-значение", так, чтобы sum(Prior)= 1 .

Значение Prior не влияет на модель оптимальной подгонки. Поэтому можно сбросить Prior после учебного Mdl использование записи через точку.

Пример: Mdl.Prior = [0.2 0.8]

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

Свойства классификатора

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

Матрица стоимости misclassification должна иметь нули на диагонали.

Значение Cost не влияет на обучение. Можно сбросить Cost после учебного Mdl использование записи через точку.

Пример: Mdl.Cost = [0 0.5 ; 1 0]

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

Преобразование классификационной оценки в виде вектора символов или указателя на функцию. Эта таблица суммирует доступные векторы символов.

ЗначениеОписание
"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"2x – 1
"symmetricismax"Устанавливает счет к классу с самым большим счетом к 1 и устанавливает музыку ко всем другим классам к –1
"symmetriclogit"2/(1 + ex) – 1

Для MATLAB® функционируйте или функция, которую вы задаете, используют ее указатель на функцию для преобразования счета. Указатель на функцию должен принять матрицу (исходные баллы) и возвратить матрицу, одного размера (преобразованные баллы).

Пример: Mdl.ScoreTransform = 'logit'

Типы данных: char | string | function handle

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

compareHoldoutСравните точность двух моделей классификации с помощью новых данных
edgeРебро классификации для наивного классификатора Байеса
limeЛокальные поддающиеся толкованию объяснения модели агностические (LIME)
logpРегистрируйте безусловную плотность вероятности для наивного классификатора Байеса
lossПотеря классификации для наивного классификатора Байеса
marginПоля классификации для наивного классификатора Байеса
partialDependenceВычислите частичную зависимость
plotPartialDependenceСоздайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP)
predictКлассифицируйте наблюдения с помощью наивного классификатора Байеса
shapleyШепли оценивает

Примеры

свернуть все

Уменьшайте размер полного наивного классификатора Байеса путем удаления обучающих данных. Полные наивные классификаторы Байеса содержат обучающие данные. Можно использовать компактный наивный классификатор Байеса, чтобы повысить эффективность памяти.

Загрузите ionosphere набор данных. Удалите первые два предиктора для устойчивости.

load ionosphere
X = X(:,3:end);

Обучите наивный классификатор Байеса с помощью предикторов X и класс маркирует Y. Методические рекомендации должны задать имена классов. fitcnb принимает, что каждый предиктор условно и нормально распределен.

Mdl = fitcnb(X,Y,'ClassNames',{'b','g'})
Mdl = 
  ClassificationNaiveBayes
              ResponseName: 'Y'
     CategoricalPredictors: []
                ClassNames: {'b'  'g'}
            ScoreTransform: 'none'
           NumObservations: 351
         DistributionNames: {1x32 cell}
    DistributionParameters: {2x32 cell}


  Properties, Methods

Mdl обученный ClassificationNaiveBayes классификатор.

Уменьшайте размер наивного классификатора Байеса.

CMdl = compact(Mdl)
CMdl = 
  CompactClassificationNaiveBayes
              ResponseName: 'Y'
     CategoricalPredictors: []
                ClassNames: {'b'  'g'}
            ScoreTransform: 'none'
         DistributionNames: {1x32 cell}
    DistributionParameters: {2x32 cell}


  Properties, Methods

CMdl обученный CompactClassificationNaiveBayes классификатор.

Отобразите объем памяти, используемый каждым классификатором.

whos('Mdl','CMdl')
  Name      Size             Bytes  Class                                                        Attributes

  CMdl      1x1              15060  classreg.learning.classif.CompactClassificationNaiveBayes              
  Mdl       1x1             111190  ClassificationNaiveBayes                                               

Полный наивный классификатор Байеса (Mdl) больше чем в семь раз больше, чем компактный наивный классификатор Байеса (CMdl).

Чтобы пометить новые наблюдения эффективно, можно удалить Mdl от MATLAB® Workspace, и затем передают CMdl и новые значения предиктора к predict.

Обучите и перекрестный подтвердите наивный классификатор Байеса. fitcnb реализует 10-кратную перекрестную проверку по умолчанию. Затем оцените перекрестную подтвержденную ошибку классификации.

Загрузите ionosphere набор данных. Удалите первые два предиктора для устойчивости.

load ionosphere
X = X(:,3:end);
rng('default')  % for reproducibility

Обучите и перекрестный подтвердите наивный классификатор Байеса с помощью предикторов X и класс маркирует Y. Методические рекомендации должны задать имена классов. fitcnb принимает, что каждый предиктор условно и нормально распределен.

CVMdl = fitcnb(X,Y,'ClassNames',{'b','g'},'CrossVal','on')
CVMdl = 
  ClassificationPartitionedModel
    CrossValidatedModel: 'NaiveBayes'
         PredictorNames: {1x32 cell}
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

CVMdl ClassificationPartitionedModel перекрестный подтвержденный, наивный классификатор Байеса. В качестве альтернативы можно перекрестный подтвердить обученный ClassificationNaiveBayes модель путем передачи его crossval.

Отобразите первый учебный сгиб CVMdl использование записи через точку.

CVMdl.Trained{1}
ans = 
  CompactClassificationNaiveBayes
              ResponseName: 'Y'
     CategoricalPredictors: []
                ClassNames: {'b'  'g'}
            ScoreTransform: 'none'
         DistributionNames: {1x32 cell}
    DistributionParameters: {2x32 cell}


  Properties, Methods

Каждым сгибом является CompactClassificationNaiveBayes модель, обученная на 90% данных.

Полные и компактные наивные модели Bayes не используются для предсказания на новых данных. Вместо этого используйте их, чтобы оценить ошибку обобщения путем передачи CVMdl к kfoldLoss.

genError = kfoldLoss(CVMdl)
genError = 0.1852

В среднем ошибка обобщения составляет приблизительно 19%.

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

Больше о

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

Алгоритмы

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

Ссылки

[1] Hastie, Тревор, Роберт Тибширэни и Джером Фридман. Элементы Статистического Изучения: Анализ данных, Вывод и Предсказание. 2-й Ряд редактора Спрингера в Статистике. Нью-Йорк, Нью-Йорк: Спрингер, 2009. https://doi.org/10.1007/978-0-387-84858-7.

[2] Укомплектование людьми, Кристофер Д., Prabhakar Raghavan и Hinrich Schütze. Введение в Информэйшн-Ретривэл, Нью-Йорк: Издательство Кембриджского университета, 2008.

Расширенные возможности

Введенный в R2014b