Байесовское программирование

редактировать

Байесовское программирование - это формализм и методология, позволяющая определить вероятностные модели и решить проблемы, когда доступно меньше необходимой информации.

Эдвин Т. Джейнс предположил, что вероятность может рассматриваться как альтернатива и расширение логики для рациональных рассуждений с неполной и неопределенной информацией. В своей основополагающей книге «Теория вероятностей: логика» он разработал теорию и использование того, что он назвал «роботом», который был не физическим механизмом, а механизм вывода для теории вероятностных рассуждений - своего рода Пролог для вероятности вместо логики. Байесовское программирование - это формальная и конкретная реализация этого «робота».

Байесовское программирование также можно рассматривать как алгебраические формы для определения графических моделей, таких как, например, байесовские сети, динамические байесовские сети, фильтры Калмана или скрытые модели Маркова. Действительно, байесовское программирование является более общим, чем байесовские сети, и имеет мощность выражения, эквивалентную вероятностным графам факторов.

Содержание
  • 1 Формализм
    • 1.1 Описание
      • 1.1.1 Разложение
      • 1.1.2 Формы
    • 1.2 Вопрос
    • 1.3 Вывод
  • 2 Пример
    • 2.1 Обнаружение байесовского спама
      • 2.1.1 Переменные
      • 2.1.2 Разложение
      • 2.1.3 Параметрические формы
      • 2.1.4 Идентификация
      • 2.1.5 Вопрос
      • 2.1.6 Байесовская программа
    • 2.2 Байесовский фильтр, фильтр Калмана и скрытая марковская модель
      • 2.2.1 Переменные
      • 2.2.2 Разложение
      • 2.2.3 Параметрические формы
      • 2.2.4 Вопрос
      • 2.2.5 Байесовская программа
      • 2.2.6 Фильтр Калмана
      • 2.2.7 Скрытая марковская модель
  • 3 Приложения
    • 3.1 Академические приложения
      • 3.1.1 Робототехника
      • 3.1.2 Науки о жизни
    • 3.2 Распознавание образов
  • 4 Теории возможностей
  • 5 Вероятностное программирование
  • 6 См. Также
  • 7 Ссылки
  • 8 Дополнительная литература
  • 9 Внешние ссылки
Формализм

Байесовская программа i s средство определения распределений вероятностей.

Составные элементы байесовской программы представлены ниже:

Программа {Описание {Спецификация (π) {Идентификация форм декомпозиции чис (на основе δ)) Вопрос {\ displaystyle {\ text {Program}} {\ begin {cases } {\ text {Описание}} {\ begin {cases} {\ text {Specification}} (\ pi) {\ begin {cases} {\ text {Variables}} \\ {\ text {Decomposition}} \\ { \ text {Forms}} \\\ end {case}} \\ {\ text {Идентификация (на основе}} \ delta) \ end {ases}} \\ {\ text {Question}} \ end {case}} }{\text{Program}}{\begin{cases}{\text{Description}}{\begin{cases}{\text{Specification}}(\pi){\begin{cases}{\text{Variables}}\\{\text{Decomposition}}\\{\text{Forms}}\\\end{cases}}\\{\text{Identification (based on }}\delta)\end{cases}}\\{\text{Question}}\end{cases}}
  1. Программа состоит из описания и вопроса.
  2. Описание строится с использованием некоторой спецификации (π {\ displaystyle \ pi}\pi ) как указано программистом, и процесс идентификации или обучения параметров, не полностью определенных спецификаций, с использованием набора набора данных (δ {\ displaystyle \ delta}\delta ).
  3. Спецификация строения из соответствующих чисел, декомпозиция и набор форм.
  4. Формы - это либо набор параметров формы, либо вопросы к другим r Байесовские программы.
  5. Вопрос определить, какое распределение вероятностей необходимо вычислить.

Описание

Цель описания - указать эффективный метод вычислений совместной вероятности распределения по набору число {X 1, X 2, ⋯, XN} {\ displaystyle \ left \ {X_ {1}, X_ {2}, \ cdots, X_ {N} \ right \}}\left\{X_{1},X_{2},\cdots,X_{N}\right\}с учетом набора экспериментальных данных δ {\ displaystyle \ delta}\delta и некоторой спецификации π {\ displaystyle \ pi}\pi . Это совместное распре деление обозначается как: P (X 1 ∧ X 2 ∧ ⋯ ∧ XN ∣ δ ∧ π) {\ displaystyle P \ left (X_ {1} \ wedge X_ {2} \ wedge \ cdots \ wedge X_ {N} \ mid \ delta \ wedge \ pi \ right)}P\left(X_{1}\wedge X_{2}\wedge \cdots \wedge X_{N}\mid \delta \wedge \pi \right).

Чтобы указать предварительные знания π {\ displaystyle \ pi}\pi , программист должен выполнить следующее:

  1. Определите набор соответствующих переменных {X 1, X 2, ⋯, XN} {\ displaystyle \ left \ {X_ {1}, X_ {2}, \ cdots, X_ {N} \ right \}}\left\{X_{1},X_{2},\cdots,X_{N}\right\}, на котором определено совместное распределение.
  2. Разбейте объединенное распределение (разбейте его на соответствующие независимые или условные вероятности ).
  3. Определите форму каждого из распределений (например, для каждой из распределений вероятностей 412>Разложение

    Задано разделение {X 1, X 2,…, XN} {\ displaystyle \ left \ {X_ {1}, X_ {2}, \ ldots, X_ {N} \ right \}}\left\{X_{1},X_{2},\ldots,X_{N}\right\}обеспечивается K {\ displaystyle K}Kподмножества, K {\ displaystyle K}Kпеременные значения d L 1, ⋯, LK {\ displaystyle L_ {1}, \ cdots, L_ {K}}L_{1},\cdots,L_{K}, каждый из которых соответствует одному из этих подмножеств. Каждая переменная L k {\ displaystyle L_ {k }}L_{{k}}как конъюнкция получается чис {X k 1, X k 2, ⋯} {\ displaystyle \ left \ {X_ {k_ {1}}, X_ {k_ {2}}, \ cdots \ right \}}\left\{X_{k_{1}},X_{k_{2}},\cdots \right\}, принадлежащие kth {\ displaystyle k ^ {th}}k^{{th}}подмножество. Рекурсивное применение теоремы Байеса приводит к:

    P (X 1 ∧ X 2 ∧ ⋯ ∧ XN ∣ δ ∧ π) = P (L 1 ∧ ⋯ ∧ LK ∣ δ ∧ π) = P (L 1 ∣ δ ∧ π) × P (L 2 ∣ L 1 ∧ δ ∧ π) × ⋯ × P (LK ∣ LK - 1 ∧ ⋯ ∧ L 1 ∧ δ ∧ π) {\ displaystyle {\ begin {align} P \ left (X_ {1} \ клин X_ {2} \ клин \ cdots \ wedge X_ {N} \ mid \ delta \ wedge \ pi \ right) \\ = {} P \ left (L_ {1} \ wedge \ cdots \ wedge L_ {K} \ mid \ delta \ wedge \ pi \ right) \\ = {} P \ left (L_ {1} \ mid \ delta \ wedge \ pi \ right) \ times P \ left (L_ {2} \ mid L_ {1} \ wedge \ delta \ wedge \ pi \ right) \ times \ cdots \ times P \ left (L_ {K} \ mid L_ {K-1} \ wedge \ cdots \ wedge L_ {1} \ wedge \ delta \ wedge \ pi \ right) \ end {align}}}{\begin{aligned}P\left(X_{1}\wedge X_{2}\wedge \cdots \wedge X_{N}\mid \delta \wedge \pi \right)\\={}P\left(L_{1}\wedge \cdots \wedge L_{K}\mid \delta \wedge \pi \right)\\={}P\left(L_{1}\mid \delta \wedge \pi \right)\times P\left(L_{2}\mid L_{1}\wedge \delta \wedge \pi \right)\times \cdots \times P\left(L_{K}\mid L_{K-1}\wedge \cdots \wedge L_{1}\wedge \delta \wedge \pi \right)\end{aligned}}

    Условная независимость гипотезы позволяют дальнейшие упрощения. Гипотеза условной независимости для модели L k {\ displaystyle L_ {k}}L_{{k}}определен выбор некоторой переменной X n {\ displaystyle X_ {n}}X_{{n}}среди чисел, входящие в соединение L k - 1 ∧ ⋯ ∧ L 2 ∧ L 1 {\ displaystyle L_ {k-1} \ wedge \ cdots \ wedge L_ {2} \ wedge L_ {1}}L_{k-1}\wedge \cdots \wedge L_{2}\wedge L_{1}, маркировка R k {\ displaystyle R_ {k}}R_{{k}}как соединение этих выбранных чисел и установка:

    P (L k ∣ L k - 1 ∧ ⋯ ∧ L 1 ∧ δ ∧ π) знак равно п (L К ∣ р К ∧ δ ∧ π) {\ Displaystyle P \ left (L_ {k} \ mid L_ {k-1} \ клин \ cdots \ клин L_ {1} \ клин \ дельта \ клин \ pi \ right) = P \ left (L_ {k} \ mid R_ {k} \ wedge \ delta \ wedge \ pi \ right)}P\left(L_{k}\mid L_{k-1}\wedge \cdots \wedge L_{1}\wedge \delta \wedge \pi \right)=P\left(L_{k}\mid R_{k}\wedge \delta \wedge \pi \right)

    Затем получаем:

    P (X 1 ∧ X 2 ∧ ⋯ ∧ XN ∣ δ ∧ π) знак равно P (L 1 ∣ δ ∧ π) × P (L 2 ∣ R 2 ∧ δ ∧ π) × ⋯ × P (LK ∣ RK ∧ δ ∧ π) {\ Displaystyle {\ begin { align} P \ left (X_ {1} \ wedge X_ {2} \ wedge \ cdots \ wedge X_ {N} \ mid \ delta \ wedge \ pi \ right) \\ = {} P \ left (L_ { 1} \ mid \ delta \ клин \ pi \ right) \ times P \ left (L_ {2} \ mid R_ {2} \ wedge \ delta \ wedge \ pi \ right) \ times \ cdots \ times P \ left (L_ {K} \ mid R_ {K} \ wedge \ delta \ wedge \ pi \ right) \ end {align}}}{\begin{aligned}P\left(X_{1}\wedge X_{2}\wedge \cdots \wedge X_{N}\mid \delta \wedge \pi \right)\\={}P\left(L_{1}\mid \delta \wedge \pi \right)\times P\left(L_{2}\mid R_{2}\wedge \delta \wedge \pi \right)\times \cdots \times P\left(L_{K}\mid R_{K}\wedge \delta \wedge \pi \right)\end{aligned}}

    Такое упрощенное совместное распределение как продукт более простого распределения называется декомпозицией, полученной с использованием цепного правила .

    Это гарантирует, что каждая другая переменная появляется не более одного раза слева от полосы кондиционирования, что необходимо и достаточным условием для написания математически верных разложений.

    Формы

    Каждое распределение P (L k ∣ R k ∧ δ ∧ π) {\ displaystyle P \ left (L_ {k} \ mid R_ {k} \ wedge \ \ delta \ wedge \ pi \ right)}P\left(L_{k}\mid R_{k}\wedge \delta \wedge \pi \right), появляющееся в продукте, затем ассоциируется либо с параметрической формой (т. е. функция f μ (L k) {\ displaystyle f _ {\ mu}) \ left (L_ {k} \ right)}f_{\mu }\left(L_{k}\right)) или вопрос по другой байесовской программе P (L k ∣ R k ∧ δ ∧ π) = P (L ∣ Р ∧ δ ^ ∧ π ^) {\ displaystyle P \ left (L_ {k} \ mid R_ {k} \ wedge \ delta \ wedge \ pi \ right) = P \ left (L \ mid R \ wedge {\ widehat {\ delta}} \ клин {\ widehat {\ pi}} \ right)}P\left(L_{k}\mid R_{k}\wedge \delta \wedge \pi \right)=P\left(L\mid R\wedge {\widehat {\delta }}\wedge {\widehat {\pi }}\right).

    Когда это форма f μ (L k) {\ displaystyle f _ {\ mu} \ left (L_ {k} \ right)}f_{\mu }\left(L_{k}\right), как правило, μ {\ displaystyle \ mu}\mu - векторные параметры, которые могут зависеть от R k {\ displaystyle R_ {k}}R_{{k}}или δ {\ displaystyle \ delta}\delta или и то, и другое. Обучение происходит, когда некоторые из этих параметров вычисляются с использованием набора данных δ {\ displaystyle \ delta}\delta .

    Важной особенностью байесовского программирования является способность использовать в качестве других байесовских программам в компонентах новую байесовскую программу. п (L К ∣ р К ∧ δ ∧ π) {\ displaystyle P \ left (L_ {k} \ mid R_ {k} \ wedge \ delta \ wedge \ pi \ right)}P\left(L_{k}\mid R_{k}\wedge \delta \wedge \pi \right)получается с помощью некоторых выводов, сделанных другой байесовской программой, определенной спецификациями π ^ {\ displaystyle {\ widehat {\ pi}}}{\widehat {\pi }}и данных δ ^ {\ displaystyle {\ широкая шляпа {\ delta}}}{\widehat {\delta }}. Это похоже на вызов подпрограммы в классическом программировании и обеспечивает простой способ построения иерархических моделей.

    Вопрос

    Учитывая описание (т. Е. P (X 1 ∧ X 2 ∧ ⋯ ∧ XN ∣ δ ∧ π) {\ displaystyle P \ left (X_ {1} \ wedge X_ {2} \ wedge \ cdots \ wedge X_ {N} \ mid \ delta \ wedge \ pi \ right)}P\left(X_{1}\wedge X_{2}\wedge \cdots \wedge X_{N}\mid \delta \wedge \pi \right)), вопрос получается разделением {X 1, X 2, ⋯, XN} {\ displaystyle \ left \ {X_ {1}, X_ {2}, \ cdots, X_ {N} \ right \}}\left\{X_{1},X_{2},\cdots,X_{N}\right\}на три набора: искомые переменные, известные переменные и свободные переменные.

    3 переменные S получен {\ displaystyle Searched}Searched, K nown {\ displaystyle Known}Knownи F ree {\ displaystyle Free}Freeвыбор как совокупность, принадлежащих этим множествам.

    Вопрос определяется как набор распределений:

    P (S получено ∣ Известно ∧ δ ∧ π) {\ displaystyle P \ left (Искать \ mid {\ text {Known}} \ wedge \ delta \ wedge \ pi \ right)}P\left(Searched\mid {\text{Known}}\wedge \delta \wedge \pi \right)

    последовательность из множества «конкретных вопросов» как кардинал Известный {\ displaystyle Known}Known, каждый конкретный вопрос представляет собой распределение:

    P (Поиск ∣ Известный ∧ δ ∧ π) {\ displaystyle P \ left ({\ text {Searched}} \ mid {\ text {Known}} \ wedge \ delta \ wedge \ pi \ right)}P\left({\text{Searched}}\mid {\text{Known}}\wedge \delta \wedge \pi \right)

    Вывод

    Учитывая совместное распределение п (Икс 1 ∧ Икс 2 ∧ ⋯ ∧ XN ∣ δ ∧ π) {\ displaystyle P \ left (X_ {1} \ wedge X_ {2} \ wedge \ cdots \ wedge X_ {N} \ mid \ delta \ wedge \ pi \ right)}P\left(X_{1}\wedge X_{2}\wedge \cdots \wedge X_{N}\mid \delta \wedge \pi \right), всегда можно вычислить любой возможный вопрос, используя следующий общий вывод:

    P (Поиск ∣ Известный ∧ δ ∧ π) = ∑ Свободный [P (Поиск ∧ Свободный ∣ Известный ∧ δ ∧ π)] = ∑ Свободный [P (Поиск ∧ Свободный ∧ Известный ∣ δ ∧ π)] P (Известный ∣ δ ∧ π) = ∑ Свободный [P (Поиск ∧ Свободный ∧ Известный ∣ δ ∧ π)] ∑ Свободный поиск [P (поиск ∧ свободный ∧ известный ∣ δ ∧ π)] = 1 Z × ∑ свободный [P (поиск ∧ свободный ∧ известный ∣ δ ∧ π)] {\ displaystyle {\ begin {align} P \ left ({\ text {Поиск}} \ mid {\ text {Known}} \ wedge \ delta \ wedge \ pi \ right) \\ = {} \ sum _ {\ text {Свободно}} \ left [P \ left ({\ text {Поиск}} \ wedge {\ text {Free}} \ mid {\ text {Known}} \ wedge \ delta \ wedge \ pi \ right) \ right] \\ = {} {\ frac {\ displaystyle \ sum _ {\ text {Free}} \ left [P \ left ({\ text {Searched}} \ wedge {\ text {Free}} \ wedge {\ text {Известно}} \ середина \ дельта \ клин \ пи \ вправо) \ вправо]} {\ displaystyle P \ left ({\ text {Known}} \ mid \ delta \ клин \ пи \ вправо)}} \\ = { } {\ frac {\ displaystyle \ sum _ {\ text {Свободно}} \ left [P \ left ({\ text {Searched}} \ wedge {\ text {Free}} \ wedge {\ text {Known}} \ mid \ delta \ wedge \ pi \ right) \ right]} {\ displaystyle \ sum _ {{\ text {Free}} \ wedge {\ text {Searched}}} \ left [P \ left ({\ text {Searched}} \ wedge {\ text {Free}} \ wedge {\ text {Known}} \ mid \ delta \ wedge \ pi \ right) \ right]}} \\ = {} {\ frac {1} {Z}} \ times \ sum _ {\ text {Free}} \ left [P \ left ({\ text {Searched}} \ wedge {\ text {Free}} \ wedge {\ text {Kn own}} \ mid \ delta \ wedge \ pi \ right) \ right] \ end {выравнивается}}}{\begin{aligned}P\left({\text{Searched}}\mid {\text{Known}}\wedge \delta \wedge \pi \right)\\={}\sum _{\text{Free}}\left[P\left({\text{Searched}}\wedge {\text{Free}}\mid {\text{Known}}\wedge \delta \wedge \pi \right)\right]\\={}{\frac {\displaystyle \sum _{\text{Free}}\left[P\left({\text{Searched}}\wedge {\text{Free}}\wedge {\text{Known}}\mid \delta \wedge \pi \right)\right]}{\displaystyle P\left({\text{Known}}\mid \delta \wedge \pi \right)}}\\={}{\frac {\displaystyle \sum _{\text{Free}}\left[P\left({\text{Searched}}\wedge {\text{Free}}\wedge {\text{Known}}\mid \delta \wedge \pi \right)\right]}{\displaystyle \sum _{{\text{Free}}\wedge {\text{Searched}}}\left[P\left({\text{Searched}}\wedge {\text{Free}}\wedge {\text{Known}}\mid \delta \wedge \pi \right)\right]}}\\={}{\frac {1}{Z}}\times \sum _{\text{Free}}\left[P\left({\text{Searched}}\wedge {\text{Free}}\wedge {\text{Known}}\mid \delta \wedge \pi \right)\right]\end{aligned}}

    где первое равенство следует из правил маргинализации, второе - из теоремы Байеса а третье соответствует второму применению маргинализации. Знаменатель выглядит как нормализационный член и может быть заменен константой Z {\ displaystyle Z}Z.

    Теоретически это позволяет решить любую проблему байесовского вывода. Однако на практике стоимости исчерпывающих и точных вычислений P (поиск ∣ Известный ∧ δ ∧ π) {\ displaystyle P \ left ({\ text {Searched}} \ mid {\ text {Known}} \ wedge \ delta \ wedge \ pi \ right)}P\left({\text{Searched}}\mid {\text{Known}}\wedge \delta \wedge \pi \right)почти во всех случаях слишком велико.

    Заменяя совместное распределение его разложением, получаем:

    P (Поиск ∣ Известный ∧ δ ∧ π) = 1 Z ∑ Свободный [∏ k = 1 K [P (L i ∣ K i ∧ π)] ] {\ displaystyle {\ begin {align} P \ left ({\ text {Searched}} \ mid {\ text {Known}} \ wedge \ delta \ wedge \ pi \ right) \\ = {} {\ frac {1} {Z}} \ sum _ {\ text {Free}} \ left [\ prod _ {k = 1} ^ {K} \ left [P \ left (L_ {i} \ mid K_ {i}) \ wedge \ pi \ right) \ right] \ right] \ end {align}}}{\begin{aligned}P\left({\text{Searched}}\mid {\text{Known}}\wedge \delta \wedge \pi \right)\\={}{\frac {1}{Z}}\sum _{\text{Free}}\left[\prod _{k=1}^{K}\left[P\left(L_{i}\mid K_{i}\wedge \pi \right)\right]\right]\end{aligned}}

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

    Пример

    Байесовское обнаружение спама

    Целью байесовской фильтрации спама устранение нежелательных сообщений электронной почты.

    Задачу очень легко сформулировать. Электронные сообщения следует классифицировать по одной из двух категорий: не спам и спам. Единственная доступная информация для электронной классификации писем - это их содержание: набор слов. Использование этих слов без учета порядка обычно называется моделью набора слов.

    . Кроме того, классификатор должен уметь адаптироваться к своему пользователю и учиться на опыте. Новый стандартный стандартный режим, классификатор должен изменить свои внутренние параметры. Таким образом, он будет адаптироваться к критериям пользователя, чтобы различать спам и не спам. Это улучшит свои результаты, поскольку он сталкивается со всеми более засекреченными электронными письмами.

    Переменные

    Переменные, необходимые для написания этой программы, следующие:

    1. S pam {\ displaystyle Spam}Spam: двоичная переменная, ложь, если электронная почта не Не будет спамом, и в противном случае будет потеряна правда.
    2. W 0, W 1,…, WN - 1 {\ displaystyle W_ {0}, W_ {1}, \ ldots, W_ {N-1}}W_{0},W_{1},\ldots,W_{N-1}: N {\ displaystyle N}Nдвоичные переменные. W n {\ displaystyle W_ {n}}W_{n}истинно, если n-е {\ displaystyle n ^ {th}}n^{th}слово словаря присутствует в тексте.

    Эти N + 1 {\ displaystyle N + 1}N+1двоичныепеременные суммируют всю информацию об электронном письме.

    Разложение

    Исходя из совместного распределения и рекурсивно применяя теорему Байеса, получаем:

    P (Спам ∧ W 0 ∧ ⋯ ∧ WN - 1) = P ( Спам) × P (W 0 ∣ Спам) × P (W 1 ∣ Спам ∧ W 0) × ⋯ × P (WN - 1 ∣ Спам ∧ W 0 ∧ ⋯ ∧ WN - 2) {\ displaystyle {\ begin {выровнено} P ({\ text {Spam}} \ wedge W_ {0} \ wedge \ cdots \ wedge W_ {N-1}) \\ = {} P ({\ text {Spam}}) \ times P (W_ {0} \ mid {\ text {Spam}}) \ times P (W_ {1} \ mid {\ text {Spam}} \ wedge W_ {0}) \\ \ times \ cdots \\ \ times P \ left (W_ {N-1} \ mid {\ text {Spam}} \ wedge W_ {0} \ wedge \ cdots \ wedge W_ {N-2} \ right) \ end {align}}}{\begin{aligned}P({\text{Spam}}\wedge W_{0}\wedge \cdots \wedge W_{N-1})\\={}P({\text{Spam}})\times P(W_{0}\mid {\text{Spam}})\times P(W_{1}\mid {\text{Spam}}\wedge W_{0})\\\times \cdots \\\times P\left(W_{N-1}\mid {\text{Spam}}\wedge W_{0}\wedge \cdots \wedge W_{N-2}\right)\end{aligned}}

    Это это точное математическое выражение.

    Его можно значительно упростить, если предположить, что вероятность появления слова, зная характер текста (спам или нет), не зависит от других появления слов. Это наивное байесовское допущение, и это делает этот спам-фильтр наивной байесовской моделью.

    Например, программист может предположить, что:

    P (W 1 ∣ Спам ∧ W 0) = P (W 1 ∣ Спам) {\ displaystyle P (W_ {1} \ mid {\ text { Спам}} \ land W_ {0}) = P (W_ {1} \ mid {\ text {Spam}})}P(W_{1}\mid {\text{Spam}}\land W_{0})=P(W_{1}\mid {\text{Spam}})

    , чтобы в итоге получить:

    P (Spam ∧ W 0 ∧… ∧ WN - 1) = P (спам) ∏ N = 0 N - 1 [P (W n ∣ спам)] {\ displaystyle P ({\ text {Spam}} \ land W_ {0} \ land \ ldots \ land W_ { N -1}) = P ({\ text {Spam}}) \ prod _ {n = 0} ^ {N-1} [P (W_ {n} \ mid {\ text {Spam}})]}P({\text{Spam}}\land W_{0}\land \ldots \land W_{N-1})=P({\text{Spam}})\prod _{n=0}^{N-1}[P(W_{n}\mid {\text{Spam}})]

    Такое предположение известно как наивное предположение Байеса. Это «наивно» в том смысле, что независимость между словами явно не совсем верна. Например, он полностью игнорирует то, что появление пар слов может иметь большее значение, чем отдельные проявления. Однако программист может принять эту гипотезу и разработать модель и связанные с ней выводы, чтобы проверить, насколько она надежна и эффективна.

    теперь Параметрические формы

    иметь возможность вычислить совместное распределение, программист должен указать N + 1 {\ displaystyle N + 1}N+1появляющиеся распределения в разложении:

    1. P (Спам) {\ displaystyle P ({\ text {Spam}})}P({\text{Spam}})заранее определено, например, P ([Spam = 1]) = 0,75 {\ displaystyle P ([{\ text {Spam}} = 1]) = 0,75}P([{\text{Spam}}=1])=0.75
    2. Каждая из N {\ displaystyle N}Nформирует P (W n ∣ Спам) { \ displaystyle P (W_ {n} \ mid {\ text {Spam}})}P(W_{n}\mid {\text{Spam}})можно указать с помощью правил следовать Лапласа (это псевдосчет -основанный метод сглаживания для решения проблемы нулевой частоты слов, ранее не встречавшихся):
      1. P (W n ∣ [Spam = false]) = 1 + afn 2 + af {\ displaystyle P (W_ {n} \ mid [{\ text {Spam}} = {\ text {false}}]) = {\ frac {1 + a_ {f} ^ {n}} {2 + a_ {f}}}}P(W_{n}\mid [{\text{Spam}}={\text{false}}])={\frac {1+a_{f}^{n}}{2+a_{f}}}
      2. P ( W n ∣ [Spam = true]) = 1 + atn 2 + at {\ displaystyle P (W_ {n} \ mid [{\ text {Spam}} = {\ text {true}}]) = {\ frac {1 + a_ {t} ^ {n}} {2 + a_ {t}}}}P(W_{n}\mid [{\text{Spam}}={\text{true}}])={\frac {1+a_{t}^{n}}{2+a_{t}}}

    где afn {\ displaystyle a_ {f} ^ {n }}a_{f}^{n}обозначает количество появлений n-го {\ displaystyle n ^ {th}}n^{th}слова в электронных письмах, не являющиеся спамом, а af {\ displaystyle a_ {f}}a_{f}обозначает общее количество электронных писем, не являющихся спамом. Аналогично, atn {\ displaystyle a_ {t} ^ {n}}a_{t}^{n}обозначает количество появлений n-го {\ displaystyle n ^ {th}}n^{th}слово в спам-сообщениях, а в {\ displaystyle a_ {t}}a_{t}обозначает общее количество спам-сообщений.

    Идентификация

    N {\ displaystyle N}Nформирует P (W n ∣ Спам) {\ displaystyle P (W_ {n} \ mid {\ text {Spam}})}P(W_{n}\mid {\text{Spam}})еще не решено полностью, потому что 2 N + 2 {\ displaystyle 2N + 2}2N+2параметры afn = 0, …, N - 1 {\ displaystyle a_ {f} ^ {n = 0, \ ldots, N-1}}a_{f}^{n=0,\ldots,N-1}, atn = 0,…, N - 1 {\ displaystyle a_ {t} ^ {n = 0, \ ldots, N-1}}a_{t}^{n=0,\ldots,N-1}, af {\ displaystyle a_ {f}}a_{f}и at {\ displaystyle a_ {t}}a_{t}не имеют значений пока что.

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

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

    Вопрос

    Вопрос, задаваемый программой: «какова вероятность того, что данный текст будет спамом, зная, какие слова появляются, а какие нет в этом тексте?» Его можно формализовать следующим образом:

    P (Спам ∣ w 0 ∧ ⋯ ∧ w N - 1) {\ displaystyle P ({\ text {Spam}} \ mid w_ {0} \ wedge \ cdots \ wedge w_ {N -1})}P({\text{Spam}}\mid w_{0}\wedge \cdots \wedge w_{N-1})

    который может быть вычислен следующим образом:

    P (Спам ∣ w 0 ∧ ⋯ ∧ w N - 1) = P (Спам) ∏ n = 0 N - 1 [P (wn ∣ Спам)] ∑ спам [P (спам) ∏ n = 0 N - 1 [P (wn ∣ спам)]] {\id S ^ {t} \ wedge \ pi \ right) \ Equiv G \ left (O ^ {t}, H \ bullet S ^ {t}, R \ right) \ end {cases}} \ end {ases }} \\ Id \ end {cases}} \\ Qu: \\ P \ left (S ^ {T} \ mid O ^ {0} \ wedge \ cdots \ wedge O ^ {T} \ wedge \ pi \ right) \ end {case}} <9><10>P \ left (X_ {1} \ wedge X_ {2} \ wedge \ cdots \ wedge X_ {N} \ mid \ delta \ wedge \ pi \ right) <10><11>a_ {f} ^ {n} <11><12>a_ {t} <12><13>P (S ^ {t} \ mid S ^ {t-1} \ wedge \ pi) <13><14>Pr {\ begin {cases} Ds {\ begin {cases} Sp (\ pi) {\ begin {cases} Va: \\ S ^ {0}, \ cdot s, S ^ {T}, O ^ {0}, \ cdots, O ^ {T} \\ Dc: \\ {\ begin {cases} P \ left (S ^ {0} \ wedge \ cdots \ wedge S ^ {T} \ wedge O ^ {0} \ wedge \ cdots \ wedge O ^ {T} | \ pi \ right) \\ = P \ left (S ^ {0} \ wedge O ^ {0} \ right) \ times \ prod _ {t = 1} ^ {T} \ left [P \ left (S ^ {t} | S ^ {t-1} \ right) \ times P \ left (O ^ {t} | S ^ {t} \ right) \ right] \ end {case}} \\ Fo: \\ {\ begin {case} P \ left (S ^ {0} \ wedge O ^ {0} \ right) \\ P \ left (S ^ {t} | S ^ {t-1} \ right) \\ P \ left (O ^ {t} | S ^ {t} \ right) \ end {cases}} \ end {cases}} \\ Id \ end {cases}} \\ Qu: \\ {\ begin {cases} {\ begin {array} {l} P \ left (S ^ {t + k} | O ^ {0} \ wedge \ cdots \ wedge O ^ {t} \ right) \\\ left (k = 0 \ right) \ эквив {\ text {Filtering}} \\\ left (k>0 \ right) \ Equiv {\ text {Prediction}} \\\ left (k <0 \ right) \ Equiv {\ text {Smoothing}} \ end {array}} \ end {cases}} \ end {ases}} <14><15>P ({\ text {Спам}}) <15><16>W_ {n} <16><17>Поиск <17><18>P (W_ {n} \ mid {\ text {Spam}}) <18><19>L _ {{k}} <19><20>t <20><21>\ left \ {X_ {k_ {1}}, X_ {k_ {2}}, \ cdots \ right \} <21><22>P ({\ text {Spam}} \ mid w_ {0} \ wedge \ cdots \ клин w_ {N-1}) <22><23>P \ left (S ^ {t} \ mid S ^ {t-1} \ wedge \ pi \ right) <23><24>P ({\ text {Спам }} \ land W_ {0} \ land \ ldots \ land W_ {N-1}) = P ({\ text {Spam}}) \ prod _ {n = 0} ^ {N-1} [P (W_ {n} \ mid {\ text {Spam}})] <24><25>P \ left ({\ text {Поиск}} \ mid {\ text {Known}} \ wedge \ delta \ wedge \ pi \ right) <25><26>k = 0 <26><27>N + 1 <27><28>(k = 0) <28><29>{\ widehat {\ delta}} <29><30>a_ {t} ^ {n} <30><31>P (W_ {n} \ mid [{\ text {Spam}} = {\ text {false}}]) = {\ frac {1 + a_ {f } ^ {n}} {2 + a_ {f}}} <31><32>Бесплатно <32><33>\ left \ {X_ {1}, X_ {2}, \ cdots, X_ {N} \ справа \} <33><34>t + k <34><35>n ^ {th} <35><36>N <36><37>a_ {f} ^ {n = 0, \ ldots, N -1} <37><38>a_ {t} ^ {n = 0, \ ldots, N-1} <38><39>P \ left (Поиск \ mid {\ text {Known}} \ wedge \ delta \ wedge \ pi \ right) <39><40>K <40><41>Z <41><42>\ left \ {X_ {1}, X_ {2}, \ ldots, X_ {N} \ right \} <42><43>P (W_ {1} \ mid {\ text {Spam}} \ land W_ {0}) = P (W_ {1} \ mid {\ text {Spam}}) <43><44>{\ быть джин {в ыровненный} P \ left (X_ {1} \ wedge X_ {2} \ wedge \ cdots \ wedge X_ {N} \ mid \ delta \ wedge \ pi \ right) \\ = {} P \ left (L_ { 1} \ wedge \ cdots \ wedge L_ {K} \ mid \ delta \ wedge \ pi \ right) \\ = {} P \ left (L_ {1} \ mid \ delta \ wedge \ pi \ right) \ times P \ left (L_ {2} \ mid L_ {1} \ wedge \ delta \ wedge \ pi \ right) \ times \ cdots \ times P \ left (L_ {K} \ mid L_ {K-1} \ wedge \ cdots \ wedge L_ {1} \ wedge \ delta \ wedge \ pi \ right) \ end {align}} <44><45>X _ {{n}} <45><46>{\ begin {align} P \ left ({\ text {Searched}} \ mid {\ text {Known}} \ wedge \ delta \ wedge \ pi \ right) \\ = {} {\ frac {1} {Z}} \ sum _ {\ text {Free}} \ left [\ prod _ {k = 1} ^ {K} \ left [P \ left (L_ {i} \ mid K_ {i} \ wedge \ pi \ right) \ right] \ right] \ конец {выровнено}} <46><47>{\ begin {выровнено} P \ left ({\ text {Searched}} \ mid {\ text {Known}} \ wedge \ delta \ wedge \ pi \ right) \\ = {} \ sum _ {\ text {Free}} \ left [P \ left ({\ text {Поиск}} \ клин {\ text {Free}} \ mid {\ text {Known}} \ wedge \ delta \ wedge \ pi \ right) \ right] \\ = {} {\ frac {\ displaystyle \ sum _ {\ text { Свободно}} \ left [P \ left ({\ text {Searched}} \ wedge {\ text {Free}} \ wedge {\ text {Known}} \ mid \ дельта \ клин \ пи \ вправо) \ вправо]} {\ displaystyle P \ left ({\ text {Known}} \ mid \ delta \ wedge \ pi \ right)}} \\ = {} {\ frac {\ displaystyle \ sum _ {\ text {Free}} \ left [P \ left ({\ text {Searched}} \ wedge {\ text {Free}} \ wedge {\ text {Known}} \ mid \ delta \ wedge \ pi \ right) \ right]} {\ displaystyle \ sum _ {{\ text {Free}} \ wedge {\ text {Searched}}} \ left [P \ left ({\ text {Searched}} \ wedge {\ text {Free}} \ wedge {\ text {Известно }} \ mid \ delta \ wedge \ pi \ right) \ right]}} \\ = {} {\ frac {1} {Z}} \ times \ sum _ {\ text {Free}} \ left [P \ left ({\ text {Searched}} \ wedge {\ text {Free}} \ wedge {\ text {Known}} \ mid \ delta \ wedge \ pi \ right) \ right] \ end {align}} <47><48>P ([{\ text {Spam}} = 1]) = 0,75 <48><49>{\ widehat {\ pi}} <49><50>a_ {f} <50><51>L_ {k-1} \ wedge \ cdots \ wedge L_ {2 } \ wedge L_ {1} <51><52>значок <52><53>P (O ^ {t} \ mid S ^ {t}) <53><54>P (S ^ {T} \ mid O ^ {0} \ wedge \ cdots \ wedge O ^ {T} \ wedge \ pi) <54><55>{\ text {Программа}} {\ begin {cases} {\ text {Описание}} {\ begin {case} {\ text {Specification}} (\ pi) {\ begin {cases} {\ text {Переменные}} \\ {\ text {Декомпозиция}} \\ {\ text {Forms}} \\\ end { ca ses}} \\ {\ text {Идентификация (на основе}} \ delta) \ end {cases}} \\ {\ text {Question}} \ end {cases}} <55><56>O ^ {0 }, \ ldots, O ^ {T} <56><57>S ^ {t} <57><58>\ pi <58><59>2N+2<59><60>\ Pr {\ begin { case} Ds {\ begin {cases} Sp (\ pi) {\ begin {cases} Va: \\ S ^ {0}, \ ldots, S ^ {T}, O ^ {0}, \ ldots, O ^ {T} \\ Dc: \\ {\ begin {cases} P \ left (S ^ {0} \ wedge \ cdots \ wedge O ^ {T} \ mid \ pi \ right) \\ = \ left [ {\ begin {array} {c} P \ left (S ^ {0} \ wedge O ^ {0} \ mid \ pi \ right) \\\ prod _ {t = 1} ^ {T} \ lef t [P \ left (S ^ {t} \ mid S ^ {t-1} \ wedge \ pi \ right) \ times P \ left (O ^ {t} \ mid S ^ {t} \ wedge \ pi \ right) \ right] \ end {array}} \ right] \ end {cases}} \\ Fo: \\ {\ begin {cases} P \ left (S ^ {0} \ wedge O ^ {0} \ mid \ pi \ right) \ Equiv {\ text {Matrix}} \\ P \ left (S ^ {t} \ mid S ^ {t-1} \ wedge \ pi \ right) \ Equiv {\ text {Matrix}} \\ P \ left (O ^ {t} \ mid S ^ {t} \ wedge \ pi \ right) \ Equiv {\ text {Matrix}} \ end {cases}} \ end {ases}} \\ Id \ end {case}} \\ Qu: \\\ max _ {S ^ {1} \ wedge \ cdots \ wedge S ^ {T-1}} \ left [P \ left (S ^ {1} \ wedge \ cdots \ wedge S ^ {T-1} \ mid S ^ {T} \ wedge O ^ {0} \ wedge \ cdots \ wedge O ^ {T} \ wedge \ pi \ right) \ right] \ end {ases}} <60><61>Kn собственный <61><62>{\ begin {align} {\ frac {P ([{\ text {Spam}} = {\ text {true}}] \ mid w_ {0} \ wedge \ cdots \ wedge w_ {N-1})} {P ([{\ text {Spam}} = {\ text {false}}] \ mid w_ {0} \ wedge \ cdots \ wedge w_ {N- 1})}} \\ = {} {\ frac {P ([{\ text {Spam}} = {\ text {true}}])} {P ([{\ text {Spam}} = {\ text {false}}])}} \ times \ prod _ {n = 0} ^ {N-1} \ left [{\ frac {P (w_ {n} \ mid [{\ text {Spam}} = {\ text {true}}]])} {P (w_ {n} \ mid [{\ text {Спам} } = {\ text {false}}])}} \ right] \ end {align}} <62><63>P (W_ {n} \ mid [{\ text {Spam}} = {\ text {true }}]) = {\ frac {1 + a_ {t} ^ {n}} {2 + a_ {t}}} <63><64>{\ begin {align} P ({\ text {Spam} } \ mid w_ {0} \ wedge \ cdots \ wedge w_ {N-1}) \\ = {} {\ frac {\ displaystyle P ({\ text {Spam}}) \ prod _ {n = 0} ^ {N-1} [P (w_ {n} \ mid {\ text {Spam}})]} {\ displaystyle \ sum _ {\ текст {Спам}} [P ({\ text {Spam}}) \ prod _ {n = 0} ^ {N-1} [P (w_ {n} \ mid {\ text {Spam}})]]}} \ end {align}} <64><65>P \ left ( O ^ {t} \ mid S ^ {t} \ wedge \ pi \ right) <65><66>P (O ^ {t} \ mid S ^ {t} \ wedge \ pi) <66><67>t-1 <67><68>{\ begin {align} P \ left (S ^ {t} \ mid O ^ {0} \ wedge \ cdots \ wedge O ^ {t} \ right) \\ = { } P \ left (O ^ {t} \ mid S ^ {t} \ right) \ times P \ le ft (S ^ {t} | O ^ {0} \ wedge \ cdots \ wedge O ^ {t-1} \ right) \ end {align}} <68><69>k ^ {{th}} <69><70>Спам <70><71>W_ {0}, W_ {1}, \ ldots, W_ {N-1} <71><72>{\ begin {array} {ll} P \ left (S ^ {t} | O ^ {0} \ wedge \ cdots \ wedge O ^ {t-1} \ right) \\ = \ sum _ {S ^ {t-1}} \ left [P \ left (S ^ {t} | S ^ {t-1} \ right) \ times P \ left (S ^ {t-1} | O ^ {0} \ wedge \ cdots \ wedge O ^ {t-1} \ right) \ right] \ end {массив }} <72><73>P (S ^ {t} \ mid S ^ {t-1}) <73><74>\ mu <74><75>f _ {\ mu} \ left (L_ { k} \ right) <75><76>\ delta <76><77>P \ left (S ^ {t + k} \ mid O ^ {0} \ wedge \ cdots \ wedge O ^ {t} \ right) <77><78>(k <0) <78><79>P \ left (L_ {k} \ mid L_ {k-1} \ wedge \ cdots \ wedge L_ {1} \ wedge \ delta \ wedge \ pi \ right) = P \ left (L_ {k} \ mid R_ {k} \ wedge \ delta \ wedge \ pi \ right) <79><80>{\ begin {array} {ll} P \ left (S ^ {t} | O ^ {0} \ wedge \ cdots \ wedge O ^ {t} \ right) \\ = P \ left (O ^ {t} | S ^ {t} \ вправо) \ раз \ sum _ {S ^ {t-1}} \ left [P \ le ft (S ^ {t} | S ^ {t-1} \ right) \ times P \ left (S ^ {t- 1} | O ^ {0} \ wedge \ cdots \ wedge O ^ {t-1} \ right) \ right] \ end {array}} <80><81>T <81><82>S ^ {0}, \ ldots, S ^ {T} <82><83>2N <83><84>P \ left (L_ { k} \ mid R_ {k} \ wedge \ delta \ wedge \ pi \ righ t) = P \ left (L \ mid R \ wedge {\ widehat {\ delta}} \ wedge {\ widehat {\ pi}} \ справа) <84><85>P (S ^ {0} \ wedge O ^ {0}) <85><86>(k>0) <86><87>L_ {1}, \ cdots, L_ { K} <87><88>R _ {k}} <88><89>\ Pr {\ begin {cases} Ds {\ begin {cases} Sp (\ pi) {\ begin {cases} Va: { \ text {Spam}}, W_ {0}, W_ {1} \ ldots W_ {N-1} \\ Dc: {\ begin {cases} P ({\ text {Spam}} \ land W_ {0} \ земля \ ldots \ land W_ {n} \ land \ ldots \ land W_ {N- 1}) \\ = P ({\ text {Spam}}) \ prod _ {n = 0} ^ {N-1} P (W_ {n} \ mid {\ text {Spam}}) \ end {case}} \\ Fo: {\ begin {cases} P ({\ text {Spam}}): {\ begin {cases} P ( [{\ text {Spam}} = {\ text {false}}]) = 0,25 \\ P ([{\ text {Spam}} = {\ text {true}}]) = 0,75 \ end {case}} \\ P (W_ {n} \ mid {\ text {Spa m}}): {\ begin {cases} P (W_ {n} \ mid [{\ text {Spam}} = {\ text {false}}]) \\ = {\ frac {1 + a_ {f} ^ {n}} {2 + a_ {f}}} \\ P (W_ {n} \ mid [{\ text {Spam}} = {\ text {true}}]) \\ = {\ frac {1 + a_ {t} ^ {n}} {2 + a_ {t}}} \ end {cases}} \\\ end {cases}} \\\end {cases}} \\ {\ text {Идентификация (на основе}} \ delta) \ end {cases}} \\ Qu: P ({\ text {Spam}} \ mid w_ {0} \ land \ ldots \ land w_ {n} \ land \ ldots \ land w_ {N -1}) \ конец {case}} <89>html
Последняя правка сделана 2021-05-12 07:57:49
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте