CompactClassificationNaiveBayes

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

Описание

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

Создание

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример: 'mn'

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

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

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

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

Если k класса не имеет наблюдений для предиктора j, затем Распределение {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{<reservedrangesplaceholder1> <reservedrangesplaceholder0> соответствует 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)).

Ширина (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 если его класс true i. Строки соответствуют истинному классу, а столбцы - предсказанному классу. Порядок строк и столбцов Cost соответствует порядку классов в ClassNames.

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

Значение 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'2 x – 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Создайте график частичной зависимости (PDP) и отдельные графики условного ожидания (ICE)
predictКлассифицируйте наблюдения с помощью наивного классификатора Байеса
shapleyЗначения 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] Хасти, Тревор, Роберт Тибширани и Джером Фридман. Элементы статистического обучения: майнинг данных, вывод и предсказание. 2nd ed. Springer Series in Statistics. Нью-Йорк, Нью-Йорк: Спрингер, 2009. https://doi.org/10.1007/978-0-387-84858-7.

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

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

.
Введенный в R2014b