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 в выборке (NaNs удаленный из 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, затем Распределение {kJ} isempty).

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

Распределение предиктора jЗначение
kernelKernelDistribution модель. Отобразите индексацию ячейки использования свойств и запись через точку. Например, чтобы отобразить предполагаемую пропускную способность плотности ядра для предиктора 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)).

Ширина (kJ) ядро более сглаженная ширина окна для плотности сглаживания ядра предиктора j в классе kNaNs в столбце 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              14892  classreg.learning.classif.CompactClassificationNaiveBayes              
  Mdl       1x1             111006  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 {kJ}. Используя дополнение, сглаживающее [2], предполагаемая вероятность

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

    где:

    • cj|k=nki:yiclass kxijwii:yiclass 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 {kJ}, для всех уровней в CategoricalLevels {j}. Используя дополнение, сглаживающее [2], предполагаемая вероятность

      P(predictor j=L|class k)=1+mj|k(L)mj+mk,

      где:

      • mj|k(L)=nki:yi class kI{xij=L}wii:yi class 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.

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