Вопрос

Я работаю над реализацией наивного байесовского классификатора. Программирование Коллективного Разума знакомит с этим предметом, описывая теорему Байеса как:

Pr(A | B) = Pr(B | A) x Pr(A)/Pr(B)

А также конкретный пример, имеющий отношение к классификации документов:

Pr(Category | Document) = Pr(Document | Category) x Pr(Category) / Pr(Document)

Я надеялся, что кто-нибудь сможет объяснить мне используемые здесь обозначения, что делать Pr(A | B) и Pr(A) в смысле?Это похоже на какую-то функцию, но тогда что делает канал ("|") имею в виду и т.д.?

Это было полезно?

Решение

  • Pr(A | B) = Вероятность события A, учитывая, что B уже произошло.
  • Pr(A) = Вероятность того, что произойдет

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

Видишь http://en.wikipedia.org/wiki/Naive_Bayes_classifier для полного примера

Другие советы

Я думаю, они ознакомили вас с основами.

Pr(A | B) = Pr(B | A) x Pr(A)/Pr(B)

читает:вероятность заданного B равна вероятности B , заданной A , умноженной на вероятность A , деленную на вероятность B.Обычно он используется, когда вы можете измерить вероятность B и пытаетесь выяснить, заставляет ли B нас верить в A.Или, другими словами, мы действительно заботимся об A, но мы можем измерить B более непосредственно, поэтому давайте начнем с того, что мы можем измерить.

Позвольте мне привести вам один вывод, который упрощает написание кода.Это исходит от Жемчужина Иудеи.Я немного боролся с этим, но после того, как я понял, как Pearl помогает нам превращать теорию в код, для меня зажегся свет.

Предыдущие Коэффициенты:

O(H) = P(H) / 1 - P(H)

Коэффициент правдоподобия:

L(e|H) = P(e|H) / P(e|¬H)

Задние Коэффициенты:

O(H|e) = L(e|H)O(H)

На английском языке мы говорим, что вероятность того, что что-то вас заинтересует (H для гипотезы) - это просто количество раз, когда вы находите, что что-то соответствует действительности, деленное на количество раз, когда вы обнаруживаете, что это не соответствует действительности.Итак, допустим, каждый день грабят один дом из 10 000.Это означает, что у вас есть 1/10 000 шансов быть ограбленным, без учета каких-либо других доказательств.

Следующий этап - это измерение доказательств, на которые вы смотрите.Какова вероятность увидеть доказательства, которые вы видите, когда ваш вопрос соответствует действительности, деленная на вероятность увидеть доказательства, которые вы видите, когда ваш вопрос не соответствует действительности.Допустим, вы слышите, как срабатывает ваша охранная сигнализация.Как часто вы получаете этот сигнал тревоги, когда он должен сработать (кто-то открывает окно, когда включен будильник), по сравнению с тем, когда он не должен срабатывать (ветер отключил будильник).Если у вас есть 95%-ная вероятность того, что сигнализацию сработает грабитель, и 1%-ная вероятность того, что сигнализацию сработает что-то другое, то у вас есть вероятность 95,0.

Ваше общее убеждение - это всего лишь вероятность * предыдущих шансов.В данном случае это:

((0.95/0.01) * ((10**-4)/(1 - (10**-4))))
# => 0.0095009500950095

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

Я реализовал это на Python.Это очень легко понять, потому что все формулы для теоремы Байеса находятся в отдельных функциях:

#Bayes Theorem

def get_outcomes(sample_space, f_name='', e_name=''):
    outcomes = 0
    for e_k, e_v in sample_space.items():
        if f_name=='' or f_name==e_k:
            for se_k, se_v in e_v.items():
                if e_name!='' and se_k == e_name:
                    outcomes+=se_v
                elif e_name=='':
                    outcomes+=se_v
    return outcomes

def p(sample_space, f_name):
    return get_outcomes(sample_space, f_name) / get_outcomes(sample_space, '', '')

def p_inters(sample_space, f_name, e_name):
    return get_outcomes(sample_space, f_name, e_name) / get_outcomes(sample_space, '', '')

def p_conditional(sample_space, f_name, e_name):
    return p_inters(sample_space, f_name, e_name) / p(sample_space, f_name)

def bayes(sample_space, f, given_e):
    sum = 0;
    for e_k, e_v in sample_space.items():
        sum+=p(sample_space, e_k) * p_conditional(sample_space, e_k, given_e)
    return p(sample_space, f) * p_conditional(sample_space, f, given_e) / sum

sample_space = {'UK':{'Boy':10, 'Girl':20},
                'FR':{'Boy':10, 'Girl':10},
                'CA':{'Boy':10, 'Girl':30}}

print('Probability of being from FR:', p(sample_space, 'FR'))
print('Probability to be French Boy:', p_inters(sample_space, 'FR', 'Boy'))
print('Probability of being a Boy given a person is from FR:', p_conditional(sample_space, 'FR', 'Boy'))
print('Probability to be from France given person is Boy:', bayes(sample_space, 'FR', 'Boy'))

sample_space = {'Grow' :{'Up':160, 'Down':40},
                'Slows':{'Up':30, 'Down':70}}

print('Probability economy is growing when stock is Up:', bayes(sample_space, 'Grow', 'Up'))

Pr (A | B):Условная вероятность того, что :т. е.вероятность A, учитывая, что все, что мы знаем, это B

Pr(A) :Априорная вероятность того, что

Pr - это вероятность, Pr(A|B) - условная вероятность.

Проверьте википедию для получения подробной информации.

труба (|) означает "данная".Вероятность заданного B равна вероятности B при заданном A x Pr(A)/Pr(B)

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

Я бы порекомендовал вам эту книгу http://www.athenasc.com/probbook.html или посмотрите на Программное обеспечение MIT OpenCourseWare.

Канал используется для представления условной вероятности.Pr(A | B) = Вероятность заданного B

Пример:Допустим, вы плохо себя чувствуете и просматриваете веб-страницы в поисках симптомов.И интернет говорит вам, что если у вас есть эти симптомы, значит, у вас болезнь XYZ.

В данном случае:Pr (A | B) - это то, что вы пытаетесь выяснить, а именно:Вероятность того, что у вас есть XYZ, УЧИТЫВАЯ, что у вас есть определенные симптомы.

Pr(A) - вероятность наличия заболевания XYZ

Pr(B) - вероятность наличия этих симптомов

Pr (B | A) - это то, что вы узнаете из Интернета, который:Вероятность наличия симптомов, УЧИТЫВАЯ, что у вас есть заболевание.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top