ClassificationNaiveBayes class

Суперклассы: CompactClassificationNaiveBayes

Наивная Байесова классификация

Описание

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

Обученный ClassificationNaiveBayes классификаторы хранят обучающие данные, значения параметров, распределение данных и априорные вероятности. Можно использовать эти классификаторы для:

  • Оцените прогнозы перезамены. Для получения дополнительной информации смотрите resubPredict.

  • Предскажите метки или апостериорные вероятности для новых данных. Для получения дополнительной информации смотрите predict.

Конструкция

Создайте 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.

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

Описание оптимизации перекрестной проверки гиперпараметров, заданных как BayesianOptimization возразите или таблица гиперпараметров и присваиваемых значений. Это свойство непусто если 'OptimizeHyperparameters' аргумент пары "имя-значение" непуст, когда вы создаете модель. Значение HyperparameterOptimizationResults зависит от установки Optimizer поле в HyperparameterOptimizationOptions структура, когда вы создаете модель, как описано в этой таблице.

Значение Optimizer Поле Значение HyperparameterOptimizationResults
'bayesopt' (значение по умолчанию)Объект класса BayesianOptimization
'gridsearch' или 'randomsearch'Таблица гиперпараметров используемые, наблюдаемые значения целевой функции (потеря перекрестной проверки), и ранг наблюдений от самого низкого (лучше всего) к (худшему) самому высокому

Ядро более сглаженные типы, заданные как вектор символов или массив ячеек из символьных векторов. 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

Значения параметров раньше обучали классификатор (такой как значения аргумента пары "имя-значение"), заданный как объект. Эта таблица суммирует свойства ModelParameters. Свойства соответствуют набору значений аргумента пары "имя-значение" для обучения классификатор.

СвойствоЦель
DistributionNamesРаспределение данных или распределения. Это - то же значение как свойство DistributionNames.
KernelЯдро более сглаженный тип. Это совпадает со свойством Kernel.
MethodУчебный метод. Для наивного Бейеса значением является 'NaiveBayes'.
SupportСглаживающая ядро поддержка плотности. Это совпадает со свойством Support.
TypeИзучение типа. Для классификации значением является 'classification'.
WidthЯдро, сглаживающее ширину окна. Это совпадает со свойством Width.

Доступ к полям ModelParameters использование записи через точку. Например, получите доступ к поддержке ядра с помощью Mdl.ModelParameters.Support.

Количество учебных наблюдений, заданных в виде числа.

Если X или Y содержите отсутствующие значения, затем NumObservations может быть меньше длины Y.

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

Имена предиктора, заданные как массив ячеек из символьных векторов. Порядок элементов в 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'Поддержка плотности является всеми действительными значениями.

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

Веса наблюдения, заданные как числовой вектор.

Длина W NumObservations.

fitcnb нормирует значение, вы устанавливаете для параметра пары "имя-значение" 'Weights' так, чтобы веса в конкретном классе суммировали к априорной вероятности для того класса.

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

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

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

Нестандартизированные данные о предикторе, заданные как числовая матрица. X имеет NumObservations строки и столбцы P.

Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной.

Программное обеспечение исключает строки, удаленные из-за отсутствующих значений от X.

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

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

Каждая строка Y представляет наблюдаемую классификацию соответствующей строки X.

Программное обеспечение исключает элементы, удаленные из-за отсутствующих значений от Y.

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

Методы

компактныйКомпактный наивный классификатор Байеса
crossvalПерекрестный подтвержденный наивный классификатор Байеса
resubEdgeРебро классификации для наивных классификаторов Байеса перезаменой
resubLossПотеря классификации для наивных классификаторов Байеса перезаменой
resubMarginПоля классификации для наивных классификаторов Байеса перезаменой
resubPredictПредскажите метки перезамены наивного классификатора Байеса

Унаследованные методы

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

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

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

Примеры

свернуть все

Создайте наивный классификатор Байеса для ирисовых данных Фишера. Кроме того, задайте априорные вероятности после обучения.

Загрузите ирисовые данные Фишера.

load fisheriris
X = meas;
Y = species;

X числовая матрица, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Y массив ячеек из символьных векторов, который содержит соответствующие ирисовые разновидности.

Обучите наивный классификатор Байеса.

Mdl = fitcnb(X,Y)
Mdl = 
  ClassificationNaiveBayes
              ResponseName: 'Y'
     CategoricalPredictors: []
                ClassNames: {'setosa'  'versicolor'  'virginica'}
            ScoreTransform: 'none'
           NumObservations: 150
         DistributionNames: {'normal'  'normal'  'normal'  'normal'}
    DistributionParameters: {3x4 cell}


  Properties, Methods

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

Получить доступ к свойствам Mdl, используйте запись через точку.

Mdl.ClassNames
ans = 3x1 cell array
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

Mdl.Prior
ans = 1×3

    0.3333    0.3333    0.3333

Mdl.Prior содержит априорные вероятности класса, которые являются устанавливаемым использованием аргумента пары "имя-значение" 'Prior' в fitcnb. Порядок априорных вероятностей класса соответствует порядку классов в Mdl.ClassNames. По умолчанию априорные вероятности являются соответствующими относительными частотами классов в данных.

Можно также сбросить априорные вероятности после обучения. Например, установите априорные вероятности на 0,5, 0.2, и 0.3 соответственно.

Mdl.Prior = [0.5 0.2 0.3];

Можно передать Mdl к, например, predict пометить новые измерения или crossval чтобы пересечься подтверждают классификатор.

Больше о

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

Алгоритмы

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

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