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 имя аргумента и 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 к Командному окну, затем все, незаданные опции кажутся пустыми ([]). Однако программное обеспечение заменяет пустые опции на их соответствующие значения по умолчанию во время обучения.

Больше о

свернуть все

Модель сумки лексем

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

Наивный Байес

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) функция вероятностной меры распределения многочлена.

Алгоритмы

  • Если переменный предиктор j имеет условное нормальное распределение (см. DistributionNames аргумент значения имени), программное обеспечение соответствует распределению к данным путем вычисления специфичного для класса взвешенного среднего и объективной оценки взвешенного стандартного отклонения. Для каждого класса k:

    • Взвешенное среднее предиктора j

      x¯j|k={i:yi=k}wixij{i:yi=k}wi,

      где wi является весом для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.

    • Несмещенное средство оценки взвешенного стандартного отклонения предиктора j

      sj|k=[{i:yi=k}wi(xijx¯j|k)2z1|kz2|kz1|k]1/2,

      где z 1|k является суммой весов в классе, k и z 2|k являются суммой весов в квадрате в классе k.

  • Если все переменные предикторы составляют условное распределение многочлена (вы задаете 'DistributionNames','mn'), программное обеспечение соответствует распределению с помощью модели сумки лексем. Программное обеспечение хранит вероятность тот маркерный j появляется в классе k в свойстве DistributionParameters {kJ}. Используя дополнение, сглаживающее [2], предполагаемая вероятность

    P(token j|класс k)=1+cj|kP+ck,

    где:

    • cj|k=nk{i:yi=k}xijwi{i:yi=k}wi, который является взвешенным количеством случаев маркерного j в классе k.

    • nk является количеством наблюдений в классе k.

    • wi вес для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.

    • ck=j=1Pcj|k, который является общим взвешенным количеством случаев всех лексем в классе k.

  • Если переменный предиктор j имеет условное многомерное распределение многочлена:

    1. Программное обеспечение собирает список уникальных уровней, хранит отсортированный список в CategoricalLevels, и считает каждый уровень интервалом. Каждая комбинация предиктора/класса является отдельной, независимой случайной переменной многочлена.

    2. Для каждого класса 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)=nk{i:yi=k}I{xij=L}wi{i:yi=k}wi, который является взвешенным количеством наблюдений, для которого предиктора j равняется L в классе k.

      • nk является количеством наблюдений в классе k.

      • I{xij=L}=1 если xij = L, 0 в противном случае.

      • wi вес для наблюдения i. Программное обеспечение нормирует веса в классе, таким образом, что они суммируют к априорной вероятности для того класса.

      • mj является количеством отличных уровней в предикторе j.

      • mk является взвешенным количеством наблюдений в классе k.

Ссылки

[1] Hastie, T., Р. Тибширэни и Дж. Фридман. Элементы статистического изучения, второго выпуска. Нью-Йорк: Спрингер, 2008.

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

Введенный в R2014b