CompactClassificationNaiveBayes

Пакет: classreg.learning.classif

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

Описание

CompactClassificationNaiveBayes является компактным наивным классификатором Байеса.

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

Используйте компактный наивный классификатор Байеса, чтобы маркировать новые данные (т.е. предсказание меток новых данных) более эффективно.

Конструкция

CMdl = compact(Mdl) возвращает компактный наивный классификатор Байеса (CMdl) в полный, обученный наивный классификатор Байеса (Mdl).

Входные параметры

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

Полностью обученный наивный классификатор Байеса, заданный как модель ClassificationNaiveBayes, обученная fitcnb.

Свойства

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

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

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

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

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

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

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

Отличные имена классов, заданные как категориальное или символьный массив, логический или числовой вектор или вектор ячейки векторов символов.

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

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

Misclassification стоят, заданный как K-by-K квадратная матрица.

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

Значение Cost не влияет на обучение. Можно сбросить Cost после учебного Mdl с помощью записи через точку, например, Mdl.Cost = [0 0.5; 1 0];.

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

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

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

ЗначениеОписание
'kernel'Ядро, сглаживающее оценку плотности.
'mn'Модель мешка лексем многочлена. Указывает, что все предикторы имеют это распределение.
'mvmn'Многомерное распределение многочлена.
'normal'Нормальное (Гауссово) распределение.

Если Distribution является 1 P массивом ячеек из символьных векторов, то модели ПО показывают j с помощью распределения в элементе j массива ячеек.

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

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

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

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

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

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

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

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

Ядро более сглаженные типы, заданные как вектор символов или массив ячеек из символьных векторов. Kernel имеет длину, равную количеству предикторов (size(X,2)). Kernel{ j } соответствует предиктору j и содержит вектор символов, описывающий тип более сглаженного ядра. Эта таблица описывает поддерживаемое ядро более сглаженные типы. Позволенный 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}

Если ячейка пуста ([]), то программное обеспечение не соответствовало распределению ядра к соответствующему предиктору.

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

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

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

Априорные вероятности класса, заданные как числовой вектор - строка. Prior является 1 K вектором, и порядок его элементов соответствует элементам ClassNames.

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

Значение Prior не изменяет модель оптимальной подгонки. Поэтому можно сбросить Prior после учебного Mdl с помощью записи через точку, например, Mdl.Prior = [0.2 0.8];.

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

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

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

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

Изменить функцию преобразования счета на, например, 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

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

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

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

Если ячейка пуста ([]), то программное обеспечение не соответствовало распределению ядра к соответствующему предиктору.

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

Width(k,j) является ядром более сглаженная ширина окна для плотности сглаживания ядра предиктора j в классе k. NaN s в столбце, j указывает, что программное обеспечение не соответствовало предиктору j с помощью плотности ядра.

Методы

реброРебро классификации для наивных классификаторов Байеса
logPРегистрируйте безусловную плотность вероятности для наивного классификатора Байеса
потеряОшибка классификации для наивного классификатора Байеса
полеПоля классификации для наивных классификаторов Байеса
предсказатьПредскажите метки с помощью наивной модели классификации Бейеса

Копировать семантику

Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

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

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

load ionosphere
X = X(:,3:end); % Remove two predictors for stability

Обучите наивный классификатор Байеса. Примите, что каждый предиктор условно, нормально распределен, учитывая свою метку. Это - хорошая практика, чтобы задать порядок меток.

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 = 
  classreg.learning.classif.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              15596  classreg.learning.classif.CompactClassificationNaiveBayes              
  Mdl       1x1             111726  ClassificationNaiveBayes                                               

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

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

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

load ionosphere
X = X(:,3:end); % Remove two predictors for stability

Обучайтесь и крест подтверждают наивный классификатор Байеса. Примите, что каждый предиктор условно, нормально распределен, учитывая свою метку. Это - хорошая практика, чтобы задать порядок классов.

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


  Properties, Methods

CVMdl не является моделью ClassificationNaiveBayes, а ClassificationPartitionedModel перекрестная подтвержденная, наивная модель Bayes. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку.

Также можно пересечься, подтверждают обученную модель ClassificationNaiveBayes путем передачи его crossval.

Осмотрите один из обученных сгибов с помощью записи через точку.

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


  Properties, Methods

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

Оцените ошибку обобщения.

genError = kfoldLoss(CVMdl)
genError = 0.1795

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

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

Больше о

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

Алгоритмы

  • Если вы задаете 'DistributionNames','mn', когда учебный Mdl с помощью fitcnb, то программное обеспечение соответствует распределению многочлена с помощью модели сумки лексем. Программное обеспечение хранит вероятность, что маркерный j появляется в классе k в свойстве DistributionParameters{k,j}. Используя дополнение, сглаживающее [2], предполагаемая вероятность

    P(лексема j|класс k)=1+cj|kP+ck,

    где:

    • cj|k=nki:yiкласс kxijwii:yiкласс kwi; который является взвешенным количеством случаев маркерного j в классе k.

    • nk является количеством наблюдений в классе k.

    • wi вес для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.

    • ck=j=1Pcj|k; который является общим взвешенным количеством случаев всех лексем в классе k.

  • Если вы задаете 'DistributionNames','mvmn' когда учебный Mdl с помощью fitcnb, то:

    1. Для каждого предиктора программное обеспечение собирает список уникальных уровней, хранит отсортированный список в CategoricalLevels и считает каждый уровень интервалом. Каждая комбинация предиктора/класса является отдельной, независимой случайной переменной многочлена.

    2. Для предиктора j в классе k экземпляры программно-реализованных счетчиков каждого категориального уровня с помощью списка сохранены в CategoricalLevels{j}.

    3. Программное обеспечение хранит вероятность, что предиктор j, в классе k, имеет уровень L в свойстве DistributionParameters{k,j} для всех уровней в CategoricalLevels{j}. Используя дополнение, сглаживающее [2], предполагаемая вероятность

      P(предиктор j=L|класс k)=1+mj|k(L)mj+mk,

      где:

      • mj|k(L)=nki:yi класс kI{xij=L}wii:yi класс kwi; который является взвешенным количеством наблюдений, для которого предиктора j равняется L в классе k.

      • nk является количеством наблюдений в классе k.

      • I{xij=L}=1 если xij = L, 0 в противном случае.

      • wi вес для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.

      • mj является количеством отличных уровней в предикторе j.

      • mk является взвешенным количеством наблюдений в классе k.

Ссылки

[1] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения, второго выпуска. Нью-Йорк: Спрингер, 2008.

[2] Укомплектование людьми, C. D. П. Рэгэвэн и М. Шюц. Введение в Информэйшн-Ретривэл, Нью-Йорк: Издательство Кембриджского университета, 2008.

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