exponenta event banner

CompactClassificationNaiveBayes

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

Описание

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

Создание

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

Свойства

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

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

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

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

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

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

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

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

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

Типы данных: 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-by-P ячеек символьных векторов, то fitcnb моделирует признак j, используя распределение в элементе j массива ячеек.

Пример: 'mn'

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

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

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

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

Если класс k не имеет наблюдений для предиктора j, то Distribution{k,j} пуст ([]).

Элементы DistributionParameters зависят от распределений предикторов. В этой таблице описываются значения в DistributionParameters{k,j}.

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

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

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

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

СтоимостьЯдроФормула
'box'Коробка (униформа)

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

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

f (x) = 0,75 (1 x2) I{|x|≤1}

'normal'Гауссовский

f (x) = 12.dexp (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)).

Width(k,j) - ширина окна сглаживания ядра для плотности сглаживания ядра предиктора j внутри класса k. NaNs в столбце 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

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

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

Матрица затрат на неправильную классификацию должна иметь нули на диагонали.

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

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

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

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

СтоимостьОписание
'doublelogit'1/( 1 + e-2x)
'invlogit'log (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 = 'logit'

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

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

compareHoldoutСравнение точности двух классификационных моделей с использованием новых данных
edgeКрай классификации для наивного классификатора Байеса
limeЛокальные интерпретируемые модели-агностические объяснения (LIME)
logpЛогарифмическая безусловная плотность вероятности для наивного классификатора Байеса
lossПотеря классификации для наивного классификатора Байеса
marginПоля классификации для наивного классификатора Байеса
partialDependenceВычислить частичную зависимость
plotPartialDependenceСоздание графиков частичной зависимости (PDP) и индивидуального условного ожидания (ICE)
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             111174  ClassificationNaiveBayes                                               

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

Для эффективной маркировки новых наблюдений можно удалить Mdl из рабочей области MATLAB ®, а затем передать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% данных.

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

genError = kfoldLoss(CVMdl)
genError = 0.1852

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

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

Подробнее

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

Алгоритмы

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

Ссылки

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

[2] Мэннинг, Кристофер Д., Прабхакар Рагхаван и Хинрих Шютце. Введение в поиск информации, Нью-Йорк: Cambridge University Press, 2008.

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

.
Представлен в R2014b