templateNaiveBayes

Шаблон Наивного классификатора Байеса

Синтаксис

t = templateNaiveBayes()
t = templateNaiveBayes(Name,Value)

Описание

пример

t = templateNaiveBayes() возвращает наивный шаблон Bayes, подходящий для учебных моделей мультикласса выходного кода с коррекцией ошибок (ECOC).

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

Задайте t как ученика в fitcecoc.

пример

t = templateNaiveBayes(Name,Value) возвращает шаблон с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Все свойства t пусты, кроме тех вы задаете использование аргументы пары Name,Value.

Например, можно задать дистрибутивы для предикторов.

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

Примеры

свернуть все

Используйте templateNaiveBayes, чтобы задать наивный шаблон Bayes по умолчанию.

t = templateNaiveBayes()
t = 
Fit template for classification NaiveBayes.

    DistributionNames: [1x0 double]
               Kernel: []
              Support: []
                Width: []
              Version: 1
               Method: 'NaiveBayes'
                 Type: 'classification'

Все свойства объекта шаблона пусты за исключением Method и Type. Когда вы передаете t учебной функции, программное обеспечение заполняет пустые свойства с их соответствующими значениями по умолчанию. Например, программное обеспечение заполняет свойство DistributionNames с 1 на массив ячеек из символьных векторов D с 'normal' в каждой ячейке, где D является количеством предикторов. Для получения дополнительной информации на других значениях по умолчанию, смотрите fitcnb.

t является планом относительно наивного ученика Бейеса, и никакое вычисление не происходит, когда вы задаете его. Можно передать t fitcecoc, чтобы задать наивных двоичных учеников Бейеса для изучения мультикласса ECOC.

Создайте наивный шаблон Bayes не по умолчанию для использования в fitcecoc.

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

load fisheriris

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

t = templateNaiveBayes('DistributionNames','kernel')
t = 
Fit template for classification NaiveBayes.

    DistributionNames: 'kernel'
               Kernel: []
              Support: []
                Width: []
              Version: 1
               Method: 'NaiveBayes'
                 Type: 'classification'

Все свойства объекта шаблона пусты за исключением DistributionNames, Method и Type. Когда вы передаете t учебной функции, программное обеспечение заполняет пустые свойства с их соответствующими значениями по умолчанию.

Задайте t как бинарного ученика для модели мультикласса ECOC.

Mdl = fitcecoc(meas,species,'Learners',t);

По умолчанию программное обеспечение обучает Mdl с помощью одного по сравнению с одного кодирующего проекта.

Отобразите в выборке (перезамена) misclassification ошибка.

L = resubLoss(Mdl,'LossFun','classiferror')
L = 0.0333

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

свернуть все

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'DistributionNames','mn' задает, чтобы обработать все предикторы, когда лексема значит модель многочлена.

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

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

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

По умолчанию программное обеспечение устанавливает все предикторы, заданные как категориальные предикторы (использующий аргумент пары "имя-значение" CategoricalPredictors) к 'mvmn'. В противном случае распределением по умолчанию является 'normal'.

Необходимо указать, что по крайней мере один предиктор имеет распределение 'kernel', чтобы дополнительно задать Kernel, Support или Width.

Пример: 'DistributionNames','mn'

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

Ядро более сглаженный тип, заданный как пара, разделенная запятой, состоящая из 'Kernel' и вектора символов или скаляра строки, массива строк или массива ячеек из символьных векторов.

Эта таблица суммирует доступные параметры для установки ядра, сглаживающего область плотности. Позволенный 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}

Если вы задаете 1 P массивом строк или массивом ячеек с каждым элементом массива, содержащего значение в таблице, то программное обеспечение обучает классификатор с помощью ядра более сглаженный тип в элементе j для функции j в X. Программное обеспечение игнорирует элементы Kernel, не соответствующего предиктору, распределением которого является 'kernel'.

Необходимо указать, что по крайней мере один предиктор имеет распределение 'kernel', чтобы дополнительно задать Kernel, Support или Width.

Пример: 'Kernel',{'epanechnikov','normal'}

Ядро, сглаживающее поддержку плотности, заданную как пара, разделенная запятой, состоящая из 'Support' и 'positive', 'unbounded', массива строк, массива ячеек или числового вектора - строки. Программное обеспечение применяет плотность сглаживания ядра к заданной области.

Эта таблица суммирует доступные параметры для установки ядра, сглаживающего область плотности.

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

Если вы задаете 1 P массивом строк или массивом ячеек с каждым элементом в массиве строк, содержащем текстовое значение в таблице и каждый элемент в массиве ячеек, содержащем значение в таблице, то программное обеспечение обучает классификатор с помощью поддержки ядра в элементе j для функции j в X. Программное обеспечение игнорирует элементы Kernel, не соответствующего предиктору, распределением которого является 'kernel'.

Необходимо указать, что по крайней мере один предиктор имеет распределение 'kernel', чтобы дополнительно задать Kernel, Support или Width.

Пример: 'KSSupport',{[-10,20],'unbounded'}

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

Ядро, сглаживающее ширину окна, заданную как пара, разделенная запятой, состоящая из 'Width' и матрица числовых значений, числового вектор-столбца, числового вектора - строки или скаляра.

Предположим, что существуют уровни класса K и предикторы P. Эта таблица суммирует доступные параметры для установки ядра, сглаживающего ширину окна.

ЗначениеОписание
K-by-P матрица числовых значенийЭлемент (k,j) задает ширину для предиктора j в классе k.
K-by-1 числовой вектор-столбецЭлемент k задает ширину для всех предикторов в классе k.
1 P числовым вектором - строкойЭлемент j задает ширину на всех уровнях класса для предиктора j.
скалярЗадает пропускную способность для всех функций во всех классах.

По умолчанию программное обеспечение выбирает ширину по умолчанию автоматически для каждой комбинации предиктора и класса при помощи значения, которое оптимально для Распределения Гаусса. Если вы задаете Width, и он содержит NaN s, то программное обеспечение выбирает ширины для элементов, содержащих NaN s.

Необходимо указать, что по крайней мере один предиктор имеет распределение 'kernel', чтобы дополнительно задать Kernel, Support или Width.

Пример: 'Width',[NaN NaN]

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

Выходные аргументы

свернуть все

Наивный Байесов шаблон классификации, подходящий для учебных моделей мультикласса выходного кода с коррекцией ошибок (ECOC), возвращенных как объект шаблона. Передайте t fitcecoc, чтобы задать, как создать наивный классификатор Байеса для модели ECOC.

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

Больше о

свернуть все

Наивный байесов

Naive Bayes является алгоритмом классификации, который применяет оценку плотности данными.

Алгоритм усиливает теорему Бейеса, и (наивно) принимает, что предикторы условно независимы, учитывая класс. Хотя предположение обычно нарушается на практике, наивные классификаторы Байеса имеют тенденцию приводить к апостериорным распределениям, которые устойчивы к смещенным оценкам плотности класса, особенно где следующее 0.5 (контур решения) [1].

Наивные классификаторы Байеса присваивают наблюдения самому вероятному классу (другими словами, правило решения maximum a posteriori). Явным образом, алгоритм:

  1. Оценивает плотность предикторов в каждом классе.

  2. Апостериорные вероятности моделей согласно правилу Бейеса. Таким образом, для всего k = 1..., K,

    P^(Y=k|X1,..,XP)=π(Y=k)j=1PP(Xj|Y=k)k=1Kπ(Y=k)j=1PP(Xj|Y=k),

    где:

    • Y является случайной переменной, соответствующей индексу класса наблюдения.

    • X 1..., XP является случайными предикторами наблюдения.

    • π(Y=k) априорная вероятность, что индексом класса является k.

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

Если предикторы составляют распределение многочлена, то апостериорная вероятностьP^(Y=k|X1,..,XP)π(Y=k)Pmn(X1,...,XP|Y=k), где Pmn(X1,...,XP|Y=k) функция вероятностной меры распределения многочлена.

Алгоритмы

  • Если вы задаете '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.

Введенный в R2014b