exponenta event banner

templateNaiveBayes

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

Описание

пример

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

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

Определить t как ученик в fitcecoc.

пример

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

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

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

Примеры

свернуть все

Использовать templateNaiveBayes для указания шаблона Байеса по умолчанию.

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-by- D массив ячеек символьных векторов с 'normal' в каждой ячейке, где D - количество предикторов. Дополнительные сведения о других значениях по умолчанию см. в разделе fitcnb.

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

Создание нестандартного наивного шаблона Байеса для использования в 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 использование конструкции кодирования «один против одного».

Просмотрите ошибку неправильной классификации в выборке (повторная выборка).

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-by-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 (1 x2) I{|x|≤1}

'normal'Гауссовский

f (x) = 12.dexp (0.5x2)

'triangle'Треугольный

f (x) = (1 | x |) I{|x|≤1}

Если указан 1-by-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-by-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-by-P числовой вектор строкиЭлемент j задает ширину всех уровней класса для предиктора j.
скалярОпределяет пропускную способность для всех функций во всех классах.

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

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

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

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

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

свернуть все

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

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

Подробнее

свернуть все

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

Наивный Байес - это алгоритм классификации, который применяет оценку плотности к данным.

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

Наивные байесовские классификаторы присваивают наблюдения наиболее вероятному классу (другими словами, максимальному правилу апостериорного решения). В явном виде алгоритм выполняет следующие шаги:

  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 - случайная величина, соответствующая индексу класса наблюдения.

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

    • δ (Y = k) - предшествующая вероятность того, что индекс класса равен k.

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

Если предсказатели составляют multinomial распределение, то следующий probabilityP^ (Y=k'X1., XP) π (Y=k) Pmn (X1..., XP'Y=k), где Pmn (X1..., XP'Y=k) является функцией массы вероятности multinomial распределения.

Алгоритмы

  • При указании 'DistributionNames','mn' при обучении Mdl использование fitcnb, то программное обеспечение подходит для полиномиального распределения с использованием модели мешков токенов. Программа сохраняет вероятность того, что маркер j появляется в классе k в свойстве DistributionParameters{k,j}. При использовании аддитивного сглаживания [2] оценочная вероятность равна

    P ( token  j 'class k) = 1 + cj' kP + ck,

    где:

    • cj'k=nk∑i:yi∈class kxijwi∑i:yi∈class kwi, который является взвешенным числом вхождений маркера j в классе k.

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

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

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

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

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

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

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

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

Ссылки

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

[2] Мэннинг, К. Д., П. Рагхаван и М. Шютце. Введение в поиск информации, Нью-Йорк: Cambridge University Press, 2008.

Представлен в R2014b