De StatSoft, Inc. (2013), Electronic Statistics Textbook , "Naive Bayes Classifier" :
Para demonstrar o conceito de Classificação Naïve Bayes, considere o exemplo exibido na ilustração acima. Conforme indicado, os objetos podem ser classificados como VERDE ou VERMELHO. Minha tarefa é classificar novos casos à medida que eles chegam, ou seja, decidir a qual rótulo de classe eles pertencem, com base nos objetos que estão saindo no momento.
Como há o dobro de objetos VERDES que o VERMELHO, é razoável acreditar que um novo caso (que ainda não tenha sido observado) tem duas vezes mais chances de ser membro de VERDE do que de VERMELHO. Na análise bayesiana, essa crença é conhecida como probabilidade anterior. As probabilidades anteriores são baseadas na experiência anterior, neste caso a porcentagem de objetos VERDE e VERMELHO, e frequentemente usadas para prever resultados antes que eles realmente ocorram.
Assim, podemos escrever:
Como há um total de 60 objetos, 40 dos quais são VERDES e 20 VERMELHOS, nossas probabilidades anteriores de associação à classe são:
Tendo formulado nossa probabilidade anterior, agora estamos prontos para classificar um novo objeto (círculo BRANCO). Como os objetos estão bem agrupados, é razoável supor que quanto mais objetos VERDE (ou VERMELHO) estiverem próximos a X, maior a probabilidade de os novos casos pertencerem a essa cor específica. Para medir essa probabilidade, desenhamos um círculo em torno de X que engloba um número (a ser escolhido a priori) de pontos, independentemente de seus rótulos de classe. Em seguida, calculamos o número de pontos no círculo pertencentes a cada rótulo de classe. A partir disso, calculamos a probabilidade:
A partir da ilustração acima, é claro que a probabilidade de X dar VERDE é menor que a probabilidade de X dar VERMELHO, uma vez que o círculo abrange 1 objeto VERDE e 3 objetos VERMELHOS. Portanto:
Embora as probabilidades anteriores indiquem que X pode pertencer a VERDE (dado que há o dobro de VERDE em comparação com VERMELHO), a probabilidade indica o contrário; que a associação de classe de X é RED (dado que há mais objetos RED nas proximidades de X que GREEN). Na análise bayesiana, a classificação final é produzida pela combinação das duas fontes de informação, isto é, a anterior e a probabilidade, para formar uma probabilidade posterior usando a chamada regra de Bayes (em homenagem a Rev. Thomas Bayes 1702-1761).
Por fim, classificamos X como RED, pois sua associação à classe atinge a maior probabilidade posterior.
É aqui que entra a dificuldade do meu entendimento de matemática.
p (Cj | x1, x2, x ..., xd) é a probabilidade posterior de pertencer a uma classe, ou seja, a probabilidade de que X pertença a Cj, mas por que escrevê-lo assim?
Calculando a probabilidade?
Probabilidade posterior?
Eu nunca fiz matemática, mas meu entendimento de bayes ingênuos é bom, acho que apenas quando se trata desses métodos decompostos me confunde. Alguém poderia ajudar na visualização desses métodos e como escrever a matemática de uma maneira compreensível?
Respostas:
Vou percorrer todo o processo do Naive Bayes do zero, já que não está totalmente claro para mim onde você está sendo desligado.
Queremos encontrar a probabilidade de um novo exemplo pertencer a cada classe: ). Em seguida, calculamos essa probabilidade para cada classe e escolhemos a classe mais provável. O problema é que geralmente não temos essas probabilidades. No entanto, o Teorema de Bayes nos permite reescrever essa equação de uma forma mais tratável.P(class|feature1,feature2,...,featuren
O ponto de partida de Bayes é simplesmente ou em termos de nosso problema:P(A|B)=P(B|A)⋅P(A)P(B) P(class|features)=P(features|class)⋅P(class)P(features)
Podemos simplificar isso removendo . Podemos fazer isso porque vamos classificar para cada valor da ; será o mesmo - não depende da . Isso nos deixa comP(features) P(class|features) class P(features) class P(class|features)∝P(features|class)⋅P(class)
As probabilidades anteriores, , podem ser calculadas conforme descrito em sua pergunta.P(class)
Isso deixa . Queremos eliminar a probabilidade conjunta maciça e provavelmente muito esparsa . Se cada recurso for independente, Mesmo que não sejam realmente independentes, podemos assumir que são (esse é o " ingênuo "parte de ingênuo Bayes). Pessoalmente, acho que é mais fácil pensar nisso para variáveis discretas (ou seja, categóricas), então vamos usar uma versão ligeiramente diferente do seu exemplo. Aqui, dividi cada dimensão do recurso em duas variáveis categóricas.P(features|class) P(feature1,feature2,...,featuren|class) P(feature1,feature2,...,featuren|class)=∏iP(featurei|class)
.
Exemplo: Treinando o classifer
Para treinar o classificador, contamos vários subconjuntos de pontos e os usamos para calcular as probabilidades anteriores e condicionais.
Os anteriores são triviais: existem sessenta pontos no total, quarenta são verdes e vinte são vermelhos. Assim,P(class=green)=4060=2/3 and P(class=red)=2060=1/3
Em seguida, temos que calcular as probabilidades condicionais de cada valor de recurso, dada uma classe. Aqui, existem dois recursos: e , cada um com um de dois valores (A ou B para um, X ou Y para o outro). Portanto, precisamos saber o seguinte:feature1 feature2
Estes são fáceis de calcular contando e dividindo também. Por exemplo, para , examinamos apenas os pontos vermelhos e contamos quantos deles estão na região 'A' para o . Existem vinte pontos vermelhos, todos na região 'A', então . Nenhum dos pontos vermelhos está na região B, então . Em seguida, fazemos o mesmo, mas consideramos apenas os pontos verdes. Isso nos dá e . Repetimos esse processo para o , para arredondar a tabela de probabilidades. Supondo que contei corretamente, obtemosP(feature1=A|class=red) feature1 P(feature1=A|class=red)=20/20=1 P(feature1|class=red)=0/20=0 P(feature1=A|class=green)=5/40=1/8 P(feature1=B|class=green)=35/40=7/8 feature2
Essas dez probabilidades (os dois anteriores e as oito condicionais) são o nosso modelo
Classificando um novo exemplo
Vamos classificar o ponto branco do seu exemplo. Está na região "A" para o e na região "Y" para o . Queremos encontrar a probabilidade de que esteja em cada classe. Vamos começar com vermelho. Usando a fórmula anterior, sabemos que: Subbing nas probabilidades da tabela, obtemosfeature1 feature2 P(class=red|example)∝P(class=red)⋅P(feature1=A|class=red)⋅P(feature2=Y|class=red)
Sub-agrupar esses valores nos leva a 0 ( ). Finalmente, procuramos ver qual classe nos deu a maior probabilidade. Nesse caso, é claramente a classe vermelha, então é aí que atribuímos o ponto.2/3⋅0⋅2/10
Notas
No seu exemplo original, os recursos são contínuos. Nesse caso, você precisa encontrar uma maneira de atribuir P (recurso = valor | classe) a cada classe. Você pode considerar ajustar-se a uma distribuição de probabilidade conhecida (por exemplo, um gaussiano). Durante o treinamento, você encontrará a média e a variação de cada classe ao longo de cada dimensão de recurso. Para classificar um ponto, você encontra inserindo a média e a variação apropriadas para cada classe. Outras distribuições podem ser mais apropriadas, dependendo dos detalhes de seus dados, mas um gaussiano seria um ponto de partida decente.P(feature=value|class)
Não estou muito familiarizado com o conjunto de dados DARPA, mas você faria essencialmente a mesma coisa. Você provavelmente acabará computando algo como P (ataque = VERDADEIRO | serviço = dedo), P (ataque = falso | serviço = dedo), P (ataque = VERDADEIRO | serviço = ftp), etc. e depois combiná-los no mesma maneira que o exemplo. Como uma observação lateral, parte do truque aqui é apresentar bons recursos. O IP de origem, por exemplo, provavelmente será irremediavelmente escasso - você provavelmente terá apenas um ou dois exemplos para um determinado IP. Você pode fazer muito melhor se você geolocalizou o IP e usa "Source_in_same_building_as_dest (true / false)" ou algo como um recurso.
Espero que ajude mais. Se alguma coisa precisar de esclarecimentos, ficarei feliz em tentar novamente!
fonte
Simplificando a notação com denotando os dados, queremos descobrir qual dos vários é o maior. Agora, a fórmula de Bayes fornece onde o denominador no certo é o mesmo para todos . Se quisermos descobrir qual de , é o maior, podemos, é claro, calcular cada e comparar os valores. Mas observe que as comparações não são realmente afetadas pelo valor de que é o mesmo em todos os casos. Poderíamos igualmente calcular todos osD P(Cj∣D)
fonte
A principal suposição por trás do modelo ingênuo de bayes é que cada recurso (x_i) é condicionalmente independente de todos os outros recursos, dada a classe. Essa suposição é o que nos permite escrever a probabilidade como um produto simples (como você mostrou).
É também isso que ajuda o modelo ingênuo de bayes a generalizar bem na prática. Considere a fase de treinamento: se não fizermos essa suposição, o aprendizado envolveria a estimativa de uma distribuição complicada e de alta dimensão: p (x1, x2, ..., xn, c) na qual todos os recursos são distribuídos em conjunto. Em vez disso, podemos treinar estimando p (x1, c), p (x2, c), ..., p (xn, c), pois, sabendo o valor c, torna irrelevantes os valores de todos os outros recursos (eles fornecem nenhuma informação adicional sobre x_i).
Não conheço uma boa maneira de visualizar isso (além da notação do modelo gráfico padrão), mas para torná-lo mais concreto, você pode escrever algum código para aprender um modelo do Naive bayes ( você pode pegar alguns dados de exemplo aqui ). Treine e teste. Agora descarte a suposição de independência condicional e modifique o código. Treine, teste e compare com o modelo anterior.
fonte