Percebo que essa é uma pergunta antiga, com uma resposta estabelecida. A razão pela qual estou postando é que a resposta aceita tem muitos elementos de k-NN ( k- vizinhos mais próximos), um algoritmo diferente.
O k-NN e o NaiveBayes são algoritmos de classificação. Conceitualmente, o k-NN usa a idéia de "proximidade" para classificar novas entidades. No k-NN, a "proximidade" é modelada com idéias como Distância Euclidiana ou Distância Cosseno. Por outro lado, no NaiveBayes, o conceito de 'probabilidade' é usado para classificar novas entidades.
Como a pergunta é sobre Naive Bayes, eis como eu descreveria as idéias e as etapas para alguém. Vou tentar fazê-lo com o mínimo de equações e em inglês simples, tanto quanto possível.
Primeiro, Probabilidade Condicional e Regra de Bayes
Antes que alguém possa entender e apreciar as nuances dos de Naive Bayes, eles precisam conhecer primeiro alguns conceitos relacionados, a saber, a idéia de Probabilidade Condicional e a Regra de Bayes. (Se você estiver familiarizado com esses conceitos, vá para a seção intitulada Como chegar a Naive Bayes ' )
Probabilidade condicional em inglês simples: qual é a probabilidade de que algo aconteça, considerando que algo já aconteceu.
Digamos que há algum resultado O. e alguma evidência de E. A partir da forma como estas probabilidades são definidas: a probabilidade de ter tanto o O Resultado e Evidência E é: (A probabilidade de ocorrência ó) multiplicado pela (Prob de E dado que O aconteceu)
Um exemplo para entender a probabilidade condicional:
Digamos que temos uma coleção de senadores dos EUA. Os senadores podem ser democratas ou republicanos. Eles também são homens ou mulheres.
Se selecionarmos um senador completamente aleatoriamente, qual é a probabilidade de que essa pessoa seja democrata? A probabilidade condicional pode nos ajudar a responder a isso.
Probabilidade de (democrata e senadora) = Prob (senador é democrata) multiplicado pela probabilidade condicional de ser mulher, uma vez que são democratas.
P(Democrat & Female) = P(Democrat) * P(Female | Democrat)
Poderíamos calcular exatamente a mesma coisa, no sentido inverso:
P(Democrat & Female) = P(Female) * P(Democrat | Female)
Regra de Bayes
Conceitualmente, esse é um caminho para ir de P (Evidence | Known Outcome) para P (Outcome | Known Evidence). Frequentemente, sabemos com que frequência algumas evidências particulares são observadas, dado um resultado conhecido . Temos que usar esse fato conhecido para calcular o inverso, para calcular a chance desse resultado acontecer , com base nas evidências.
P (resultado dado que conhecemos alguma evidência) = P (evidência desde que conhecemos o resultado) vezes Prob (resultado), escalonado pelo P (evidência)
O exemplo clássico para entender a Regra de Bayes:
Probability of Disease D given Test-positive =
Prob(Test is positive|Disease) * P(Disease)
_______________________________________________________________
(scaled by) Prob(Testing Positive, with or without the disease)
Agora, tudo isso era apenas preâmbulo, para chegar a Naive Bayes.
Chegando a Naive Bayes '
Até agora, falamos apenas de uma evidência. Na realidade, temos que prever um resultado, com múltiplas evidências. Nesse caso, a matemática fica muito complicada. Para contornar essa complicação, uma abordagem é 'desacoplar' várias evidências e tratar cada uma delas como independente. Essa abordagem é a razão pela qual isso é chamado de ingênuo Bayes.
P(Outcome|Multiple Evidence) =
P(Evidence1|Outcome) * P(Evidence2|outcome) * ... * P(EvidenceN|outcome) * P(Outcome)
scaled by P(Multiple Evidence)
Muitas pessoas optam por se lembrar disso como:
P(Likelihood of Evidence) * Prior prob of outcome
P(outcome|evidence) = _________________________________________________
P(Evidence)
Observe algumas coisas sobre esta equação:
- Se o Prob (evidência | resultado) for 1, estaremos apenas multiplicando por 1.
- Se o Prob (alguma evidência específica | resultado) for 0, então o prob inteiro. se torna 0. Se você vir evidências contraditórias, podemos excluir esse resultado.
- Como dividimos tudo por P (Evidence), podemos até fugir sem calculá-lo.
- A intuição por trás da multiplicação pelo anterior é para que damos alta probabilidade a resultados mais comuns e baixas probabilidades a resultados improváveis. Eles também são chamados
base rates
e são uma maneira de escalar nossas probabilidades previstas.
Como aplicar o NaiveBayes para prever um resultado?
Basta executar a fórmula acima para cada resultado possível. Como estamos tentando classificar , cada resultado é chamado de class
e ele tem um. class label.
Nosso trabalho é examinar as evidências, considerar a probabilidade de ser essa classe ou essa classe e atribuir um rótulo a cada entidade. Novamente, adotamos uma abordagem muito simples: a classe que tem a maior probabilidade é declarada a "vencedora" e esse rótulo de classe é atribuído a essa combinação de evidências.
Exemplo de frutas
Vamos tentar um exemplo para aumentar nossa compreensão: O OP pediu um exemplo de identificação de 'frutas'.
Digamos que temos dados sobre 1000 pedaços de frutas. Eles são banana , laranja ou alguma outra fruta . Conhecemos 3 características de cada fruta:
- Se é longo
- Se é doce e
- Se a sua cor é amarela.
Este é o nosso 'conjunto de treinamento'. Usaremos isso para prever o tipo de qualquer nova fruta que encontrarmos.
Type Long | Not Long || Sweet | Not Sweet || Yellow |Not Yellow|Total
___________________________________________________________________
Banana | 400 | 100 || 350 | 150 || 450 | 50 | 500
Orange | 0 | 300 || 150 | 150 || 300 | 0 | 300
Other Fruit | 100 | 100 || 150 | 50 || 50 | 150 | 200
____________________________________________________________________
Total | 500 | 500 || 650 | 350 || 800 | 200 | 1000
___________________________________________________________________
Podemos pré-calcular muitas coisas sobre a nossa coleção de frutas.
As chamadas probabilidades "anteriores". (Se não conhecêssemos nenhum dos atributos das frutas, este seria o nosso palpite.) Estes são os nossosbase rates.
P(Banana) = 0.5 (500/1000)
P(Orange) = 0.3
P(Other Fruit) = 0.2
Probabilidade de "evidência"
p(Long) = 0.5
P(Sweet) = 0.65
P(Yellow) = 0.8
Probabilidade de "Probabilidade"
P(Long|Banana) = 0.8
P(Long|Orange) = 0 [Oranges are never long in all the fruit we have seen.]
....
P(Yellow|Other Fruit) = 50/200 = 0.25
P(Not Yellow|Other Fruit) = 0.75
Dada uma fruta, como classificá-la?
Digamos que recebemos as propriedades de uma fruta desconhecida e pedimos para classificá-la. Dizem-nos que a fruta é longa, doce e amarela. É uma banana? É uma laranja? Ou é alguma outra fruta?
Podemos simplesmente executar os números para cada um dos três resultados, um por um. Em seguida, escolhemos a maior probabilidade e 'classificamos' nossos frutos desconhecidos como pertencentes à classe que teve a maior probabilidade com base em nossas evidências anteriores (nosso conjunto de treinamento de 1000 frutos):
P(Banana|Long, Sweet and Yellow)
P(Long|Banana) * P(Sweet|Banana) * P(Yellow|Banana) * P(banana)
= _______________________________________________________________
P(Long) * P(Sweet) * P(Yellow)
= 0.8 * 0.7 * 0.9 * 0.5 / P(evidence)
= 0.252 / P(evidence)
P(Orange|Long, Sweet and Yellow) = 0
P(Other Fruit|Long, Sweet and Yellow)
P(Long|Other fruit) * P(Sweet|Other fruit) * P(Yellow|Other fruit) * P(Other Fruit)
= ____________________________________________________________________________________
P(evidence)
= (100/200 * 150/200 * 50/200 * 200/1000) / P(evidence)
= 0.01875 / P(evidence)
Por uma margem esmagadora (0.252 >> 0.01875
), classificamos esta fruta Doce / Longa / Amarela como provável que seja uma Banana.
Por que o Bayes Classifier é tão popular?
Olhe para o que eventualmente se resume. Apenas algumas contagens e multiplicações. Podemos pré-calcular todos esses termos e, assim, a classificação se torna fácil, rápida e eficiente.
Let z = 1 / P(evidence).
Agora, calculamos rapidamente as três quantidades seguintes.
P(Banana|evidence) = z * Prob(Banana) * Prob(Evidence1|Banana) * Prob(Evidence2|Banana) ...
P(Orange|Evidence) = z * Prob(Orange) * Prob(Evidence1|Orange) * Prob(Evidence2|Orange) ...
P(Other|Evidence) = z * Prob(Other) * Prob(Evidence1|Other) * Prob(Evidence2|Other) ...
Atribua o rótulo de classe ao que for o número mais alto e pronto.
Apesar do nome, Naive Bayes acaba sendo excelente em certas aplicações. A classificação de texto é uma área em que realmente brilha.
Espero que ajude a entender os conceitos por trás do algoritmo Naive Bayes.