<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=94.19.76.159&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=94.19.76.159&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/94.19.76.159"/>
		<updated>2026-06-12T00:02:59Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%91%D0%B0%D0%B9%D0%B5%D1%81%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F&amp;diff=73355</id>
		<title>Байесовская классификация</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%91%D0%B0%D0%B9%D0%B5%D1%81%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F&amp;diff=73355"/>
				<updated>2020-04-03T22:10:38Z</updated>
		
		<summary type="html">&lt;p&gt;94.19.76.159: Исправление опечатки&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Вероятностная постановка задачи классификации ==&lt;br /&gt;
&lt;br /&gt;
Пусть $X$ множество объектов, $Y$ конечное множество имён классов, &lt;br /&gt;
множество $X \times Y$ является вероятностным пространством с плотностью распределения $p(x,y)=P(y)p(x|y)$.&lt;br /&gt;
Вероятности появления объектов каждого из классов $P_y=P(y)$ называются ''априорными вероятностями классов''.&lt;br /&gt;
Плотности распределения $p_y(x)=p(x|y)$ называются ''функциями правдоподобия классов''.&lt;br /&gt;
&lt;br /&gt;
'''Вероятностная постановка задачи классификации разделяется на две независимые подзадачи:'''&lt;br /&gt;
* Имеется простая выборка $X^l=(x_i, y_i)^l_{i=1}$ из неизвестного распределения $p(x,y)=P_yp_y(x)$. Требуется построить ''эмпирические оценки'' априорных вероятностей $P'_y$ и функций правдоподобия $p'_y(x)$ для каждого из классов $y \in Y$.&lt;br /&gt;
* По известным плотностям распределения $p_y(x)$ и априорным вероятностям $P_y$ всех классов $y \in Y$ построить алгоритм $a(x)$, минимизирующий вероятность ошибочной классификации.&lt;br /&gt;
&lt;br /&gt;
Априорные вероятности классов $P_y$ можно оценить согласно закону больших чисел, &lt;br /&gt;
тогда частота появления объектов каждого из классов равна $P'_y=\frac{l_y}{l}$ где $l_y=|X^l_y|, y \in Y$&lt;br /&gt;
сходится по вероятности к $P_y$ при $l_y \to \infty$. Чем больше длина выборки, тем точнее выборочная оценка $P'_y$.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Оптимальный байесовский классификатор ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим произвольный алгоритм $a:X \to Y$.&lt;br /&gt;
Он разбивает множество $X$ на не пересекающиеся области $A_y=\{x \in X | a(x) = y\}, y \in Y$.&lt;br /&gt;
Вероятность того,что появится объект класса $y$ и алгоритм $a$ отнесёт его к классу $s$, равна $P_yP(A_s|y)$.&lt;br /&gt;
Каждой паре $(y,s) \in Y \times Y$ поставим в соответствие величину потери $\lambda_{ys}$ &lt;br /&gt;
при отнесении объекта класса $y$ к классу $s$.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Функционал среднего риска''' {{---}} ожидаемая величина потери при классификации объектов алгоритмом $a$:&lt;br /&gt;
:&amp;lt;tex&amp;gt; R(a) = \displaystyle\sum_{y \in Y}\sum_{s \in Y}\lambda_{ys}P_yP(A_s|y) &amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|about=&lt;br /&gt;
об оптимальности байесовского классификатора&lt;br /&gt;
|statement=&lt;br /&gt;
Если известны априорные вероятности $P_y$ и функции правдоподобия $p_y(x)$, &lt;br /&gt;
то минимум среднего риска $R(a)$ достигается алгоритмом&lt;br /&gt;
:&amp;lt;tex&amp;gt; a(x) = \displaystyle\arg\min_{s \in Y}\sum_{y \in Y}\lambda_{ys}P_yp_y(x) &amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Для произвольного $t \in Y$ запишем функционал среднего риска:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt; R(a)=\displaystyle\sum_{y \in Y}\sum_{s \in Y}\lambda_{ys}P_yP(A_s|y) = \sum_{y \in Y}\lambda_{yt}P_yP(A_t|y) + \sum_{s \in Y\setminus\{t\} }\sum_{y \in Y}\lambda_{ys}P_yP(A_s|y).&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Применив формулу полной вероятности, $P(A_t \mid y) = 1 −\displaystyle\sum_{ s \in Y \setminus \{t\} }P(A_s \mid y)$, получим:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt; R(a) = \displaystyle\sum_{y \in Y}\lambda_{yt}P_y + \sum_{ s \in Y \setminus \{t\} } \sum_{y \in Y} (\lambda_{ys} - \lambda_{yt})P_yP(A_s|y) = &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt; = const(a) + \displaystyle\sum_{ s \in Y \setminus \{t\} } \int_{A_s}\sum_{y \in Y} (\lambda_{ys}−\lambda_{yt})P_yp_y(x)dx.  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Введём для сокращения записи обозначение &lt;br /&gt;
$g_s(x) = \displaystyle\sum_{y \in Y}\lambda_{ys}P_yp_y(x)$, тогда &lt;br /&gt;
$R(a) = const(a) + \displaystyle\sum_{ s \in Y \setminus \{t\} }\int_{A_s}(g_s(x)−g_t(x))dx$.&lt;br /&gt;
&lt;br /&gt;
Минимум интеграла достигается, когда $A_s$ совпадает с областью неположительности подынтегрального выражения. &lt;br /&gt;
:&amp;lt;tex&amp;gt; A_s=\{x \in X \mid g_s(x) \leq g_t(x), \forall t \in Y, t \leq s\}.  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С другой стороны, $A_s=\{x \in X \mid a(x) = s\}$. Значит, $a(x) = s$ тогда и только тогда, когда &lt;br /&gt;
:$s= \displaystyle\arg\min_{t \in Y}g_t(x)$.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Наивный байесовский классификатор ==&lt;br /&gt;
&lt;br /&gt;
Допустим, что объекты $x \in X$ описываются $n$ числовыми признаками $f_j:X→R,j= 1,...,n$. &lt;br /&gt;
Обозначим через $x = (\xi_1,...,\xi_n)$ произвольный элемент пространства объектов $X=R^n$, где $\xi_j=f_j(x)$.&lt;br /&gt;
&lt;br /&gt;
Предположим, что признаки $f_1(x),...,f_n(x)$ являются независимыми случайными величинами. &lt;br /&gt;
Следовательно, функции правдоподобия классов представимы в виде:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt; p_y(x) = \displaystyle\prod^n_{i=1}p_{yi}(\xi_i) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где $p_{yj}(\xi_j)$ плотность распределения значений $j$-го признака для класса $y$.&lt;br /&gt;
Алгоритмы классификации исходящие из этого предположения, называются ''наивными байесовскими''.&lt;br /&gt;
&lt;br /&gt;
Подставим эмпирические оценки одномерных плотностей в байесовский классификатор. Получим алгоритм:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt; a(x) = \displaystyle\arg\max_{y \in Y}(\ln\lambda_yP'_y + \sum^n_{j=1}\ln p'_{yj}(\xi_j)).  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основные его преимущества {{---}} простота реализации и низкие вычислительные затраты при обучении и классификации. &lt;br /&gt;
В тех редких случаях, когда признаки почти независимы, наивный байесовский классификатор близок к оптимальному.&lt;br /&gt;
Достаточно малое количество данных необходимо для обучения, оценки параметров и классификации. &lt;br /&gt;
&lt;br /&gt;
Основной его недостаток {{---}} низкое качество классификации в общем случае. &lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Из-за своего низкого качества классификации наивный байесовскими классификатор в основном он используется либо как эталон при экспериментальном сравнении алгоритмов, &lt;br /&gt;
либо как элементарный строительный блок в алгоритмических композициях.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим частое применение байесовского классификатора к задаче классификации документов по их содержимому, &lt;br /&gt;
а именно к классификации электронных писем на два класса {{---}} спам ($S$) и не-спам ($\displaystyle \neg S$),&lt;br /&gt;
предполагая что вероятность слов в тексте не зависит друг от друга:&lt;br /&gt;
&lt;br /&gt;
Программные спам-фильтры, построенные на принципах наивного байесовского классификатора, делают «наивное» предположение о том, что события, &lt;br /&gt;
соответствующие наличию того или иного слова в электронном письме или сообщении, являются независимыми по отношению друг к другу. &lt;br /&gt;
Это упрощение в общем случае является неверным для естественных языков:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt; P(a\ very\ close\ game) = P(a) \times P(very) \times P(close) \times P(game) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исходя из такого предположения, для решения задачи классификации сообщений лишь на 2 класса: &lt;br /&gt;
$S$ (спам) и $H = \neg S$ («хэм», то есть не спам) из теоремы Байеса можно вывести следующую формулу оценки вероятности «спамовости» всего сообщения $D$, &lt;br /&gt;
содержащего слова $W_1, W_2, ... W_N$:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt;\displaystyle p(S\mid D) = p(S\mid W_1, W_2, ... W_N) = \frac{p(W_1, W_2, ... W_N\mid S) \cdot p(S)}{p(W_1, W_2, ... W_N)} = &amp;lt;/tex&amp;gt; [так как $W_i$ предполагаются независимыми] &amp;lt;tex&amp;gt;=&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt;= \displaystyle\frac{\prod_{i} p(W_i\mid S) \cdot p(S)}{p(W_1, W_2, ... W_N)} = \frac{\prod_{i}p(S\mid W_i)}{\prod_i(p(S\mid W_i)) + \left(\frac{p(\neg S)}{p(S)}\right)^{1-N} \cdot \prod_i p(\neg S\mid W_i)} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат $p$ обычно сравнивают с некоторым порогом (например, $0.5$), чтобы решить, является ли сообщение спамом или нет. Если $p$ ниже, чем порог, сообщение рассматривают как вероятный «ham», иначе его рассматривают как вероятный спам.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt;\displaystyle\ln{p(S\mid D)\over p(\neg S\mid D)} &amp;gt; h&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Примеры кода==&lt;br /&gt;
===Пример кода scikit-learn===&lt;br /&gt;
&lt;br /&gt;
Классификатор [https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.GaussianNB.html#sklearn.naive_bayes.GaussianNB GaussianNB] реализует наивный байесовский классификатор в предположении что изначальное распределение было гауссовым:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tex&amp;gt; P(x_i \mid y) = \displaystyle\frac{1}{\sqrt{2\pi\sigma^2_y}}\exp(-\frac{(x_i - \mu_y)^2}{2\sigma^2_y}) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''from''' sklearn '''import''' datasets&lt;br /&gt;
 '''from''' sklearn.metrics '''import''' f1_score, accuracy_score&lt;br /&gt;
 '''from''' sklearn.naive_bayes '''import''' GaussianNB&lt;br /&gt;
 iris = datasets.load_iris()&lt;br /&gt;
 gnb = GaussianNB()&lt;br /&gt;
 pred = gnb.fit(iris.data, iris.target).predict(iris.data)&lt;br /&gt;
 accuracy = accuracy_score(iris.target, pred)&lt;br /&gt;
 f1 = f1_score(iris.target, pred, average=&amp;quot;micro&amp;quot;)&lt;br /&gt;
 '''print'''(''&amp;quot;accruracy:&amp;quot;'', accuracy, ''&amp;quot;f1:&amp;quot;'', f1)&lt;br /&gt;
&lt;br /&gt;
Вывод:&lt;br /&gt;
 accruracy: 0.96 f1: 0.96&lt;br /&gt;
&lt;br /&gt;
===Пример на языке Java===&lt;br /&gt;
Пример классификации с применением &amp;lt;code&amp;gt;weka.classifiers.bayes.NaiveBayes&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;[http://weka.sourceforge.net/doc.dev/weka/classifiers/bayes/NaiveBayes.html/ Weka, Naive Bayes]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Maven&amp;lt;/code&amp;gt; зависимость:&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;nz.ac.waikato.cms.weka&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;weka-stable&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;3.8.0&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  '''import''' weka.classifiers.bayes.NaiveBayes;&lt;br /&gt;
  '''import''' weka.classifiers.evaluation.Evaluation;&lt;br /&gt;
  '''import''' weka.core.converters.ConverterUtils;&lt;br /&gt;
  '''import''' java.util.Random;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// load dataset&amp;lt;/font&amp;gt;&lt;br /&gt;
  '''var''' source = new DataSource(&amp;quot;/iris.arff&amp;quot;);&lt;br /&gt;
  '''var''' dataset = source.getDataSet();	&lt;br /&gt;
  &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// set class index to the last attribute&amp;lt;/font&amp;gt;&lt;br /&gt;
  dataset.setClassIndex(dataset.numAttributes() - 1);&lt;br /&gt;
  &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// create and build the classifier&amp;lt;/font&amp;gt;&lt;br /&gt;
  '''var''' nb = new NaiveBayes();&lt;br /&gt;
  nb.buildClassifier(dataset);&lt;br /&gt;
  &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;// cross validate model&amp;lt;/font&amp;gt;&lt;br /&gt;
  var eval = new Evaluation(dataset);&lt;br /&gt;
  eval.crossValidateModel(nb, dataset, 10, new Random(41));&lt;br /&gt;
  System.out.println(&amp;quot;Estimated Accuracy: &amp;quot;+ Double.toString(eval.pctCorrect()));&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
*[[:Байесовские сети|Байесовские сети]]&lt;br /&gt;
*[[:Независимые события|Независимые события]]&lt;br /&gt;
*[[:Формула Байеса|Формула Байеса]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%B1%D0%B0%D0%B9%D0%B5%D1%81%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80 Википедия {{---}} Наивный байесовский классификатор] &lt;br /&gt;
* [http://www.machinelearning.ru/wiki/images/6/6d/Voron-ML-1.pdf К.В.Воронцов Математические методы обучения по прецедентам]&lt;br /&gt;
* [https://scikit-learn.org/stable/modules/naive_bayes.html Scikit-learn 1.9. Supervised learning - Naive Bayes]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Классификация и регрессия]]&lt;/div&gt;</summary>
		<author><name>94.19.76.159</name></author>	</entry>

	</feed>