Класс ClassificationNaiveBayes

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

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

Описание

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

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

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

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

Конструкция

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

Типы данных: 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)).

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

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