templateNaiveBayes

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

Описание

пример

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 имя аргумента и 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Поддержка, или 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Поддержка, или Width.

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

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

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

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

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

Необходимо задать в наименьшем количестве одного предиктора, имеет распределение 'kernel' дополнительно задавать KernelПоддержка, или 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 и это содержит NaNs, затем программное обеспечение выбирает ширины для элементов, содержащих NaNs.

Необходимо задать в наименьшем количестве одного предиктора, имеет распределение 'kernel' дополнительно задавать KernelПоддержка, или 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 {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.

Введенный в R2014b