ClassificationNaiveBayes

Наивная Байесова классификация для классификации мультиклассов

Описание

ClassificationNaiveBayes Наивный классификатор Байеса для изучения мультикласса. Обученный ClassificationNaiveBayes классификаторы хранят обучающие данные, значения параметров, распределение данных и априорные вероятности. Используйте эти классификаторы, чтобы выполнить задачи, такие как оценка предсказаний перезамены (см. resubPredict) и предсказывая метки или апостериорные вероятности для новых данных (см. predict).

Создание

Создайте ClassificationNaiveBayes объект при помощи fitcnb.

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример: 'mn'

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

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

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

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

Если класс k не имеет никаких наблюдений для предиктора j, затем Распределение {kJ} isempty).

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

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

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

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

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

Свойства ответа

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

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

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

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

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

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

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

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

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

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

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

Учебные свойства

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

Значения параметров раньше обучали ClassificationNaiveBayes модель в виде объекта. ModelParameters содержит значения параметров, такие как значения аргумента пары "имя-значение", используемые, чтобы обучить наивный классификатор Байеса.

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

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

Количество учебных наблюдений в обучающих данных сохранено в X и YВ виде числового скаляра.

Априорные вероятности в виде числового вектора. Порядок элементов в Prior соответствует элементам Mdl.ClassNames.

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

Значение Prior не влияет на модель оптимальной подгонки. Поэтому можно сбросить Prior после учебного Mdl использование записи через точку.

Пример: Mdl.Prior = [0.2 0.8]

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

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

Веса наблюдения в виде вектора из неотрицательных значений с одинаковым числом строк как Y. Каждая запись в W задает относительную важность соответствующего наблюдения в Y. fitcnb нормирует значение, которое вы устанавливаете для 'Weights' аргумент пары "имя-значение", так, чтобы веса в конкретном классе суммировали к априорной вероятности для того класса.

Свойства классификатора

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

Матрица стоимости misclassification должна иметь нули на диагонали.

Значение Cost не влияет на обучение. Можно сбросить Cost после учебного Mdl использование записи через точку.

Пример: Mdl.Cost = [0 0.5 ; 1 0]

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

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

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

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

Преобразование классификационной оценки в виде вектора символов или указателя на функцию. Эта таблица суммирует доступные векторы символов.

ЗначениеОписание
'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 = 'logit'

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

Функции объекта

compactУменьшайте размер модели машинного обучения
compareHoldoutСравните точность двух моделей классификации с помощью новых данных
crossvalПерекрестный подтвердите модель машинного обучения
edgeРебро классификации для наивного классификатора Байеса
incrementalLearnerПреобразуйте наивную модель классификации Бейеса в инкрементного ученика
limeЛокальные поддающиеся толкованию объяснения модели агностические (LIME)
logpРегистрируйте безусловную плотность вероятности для наивного классификатора Байеса
lossПотеря классификации для наивного классификатора Байеса
marginПоля классификации для наивного классификатора Байеса
partialDependenceВычислите частичную зависимость
plotPartialDependenceСоздайте графики отдельного условного ожидания (ICE) и частичный график зависимости (PDP)
predictКлассифицируйте наблюдения с помощью наивного классификатора Байеса
resubEdgeРебро классификации перезамены
resubLossПотеря классификации перезамены
resubMarginПоле классификации перезамены
resubPredictКлассифицируйте обучающие данные с помощью обученного классификатора
shapleyШепли оценивает
testckfoldСравните точность двух моделей классификации повторной перекрестной проверкой

Примеры

свернуть все

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

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

load fisheriris
X = meas;
Y = species;

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

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

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

Mdl.Prior
ans = 1×3

    0.3333    0.3333    0.3333

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

Установите априорные вероятности после обучения классификатор при помощи записи через точку. Например, установите априорные вероятности на 0,5, 0.2, и 0.3, соответственно.

Mdl.Prior = [0.5 0.2 0.3];

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

Обучите и перекрестный подтвердите наивный классификатор Байеса. 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% данных.

Полные и компактные наивные модели Bayes не используются для предсказания на новых данных. Вместо этого используйте их, чтобы оценить ошибку обобщения путем передачи CVMdl к kfoldLoss.

genError = kfoldLoss(CVMdl)
genError = 0.1852

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

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

Больше о

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

Алгоритмы

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

Ссылки

[1] Hastie, Тревор, Роберт Тибширэни и Джером Фридман. Элементы Статистического Изучения: Анализ данных, Вывод и Предсказание. 2-й Ряд редактора Спрингера в Статистике. Нью-Йорк, Нью-Йорк: Спрингер, 2009. https://doi.org/10.1007/978-0-387-84858-7.

[2] Укомплектование людьми, Кристофер Д., Prabhakar Raghavan и Hinrich Schütze. Введение в Информэйшн-Ретривэл, Нью-Йорк: Издательство Кембриджского университета, 2008.

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

Введенный в R2014b