Um classificador bayesiano é uma boa abordagem para texto com metadados numéricos?

8

Estou tentando criar uma abordagem para detectar anúncios de fraude no meu site. Acho que o problema tem muito em comum com a detecção de e-mail de spam (para o qual um classificador bayesiano ingênuo é uma solução comum), pois muitos dos sinais que indicam uma fraude serão encontrados no texto do anúncio.

No entanto, existem outras informações que podem ser bons indicadores de fraude, mas não tenho certeza se / como um classificador Bayes poderia usá-las, porque elas envolvem valores numéricos (com valores nos extremos da faixa suspeitos) do que valores binários simples correspondentes à presença ou ausência de uma palavra no texto.

Por exemplo, muitos anúncios de fraude têm o preço do item definido muito baixo (para atrair muitas visualizações), portanto, gostaria que um preço menor que o normal fosse um forte indicador de que o anúncio pode ser uma fraude.

Bayes ainda é um bom ajuste para minhas necessidades; caso contrário, você poderia recomendar uma abordagem diferente?

codebox
fonte

Respostas:

9

Claro que você pode usar o Naive Bayes. Você apenas precisa especificar de que forma a distribuição condicional terá.

Eu posso pensar em algumas opções:

  1. Distribuição binária: binarize seus dados usando um limite e você reverte para o problema que já estava resolvendo.
  2. Distribuição paramétrica: Se houver alguma distribuição paramétrica razoável, por exemplo, Gaussiana, você poderá usá-la.
  3. Distribuição não paramétrica: decida sobre os compartimentos para os dados numéricos e use-os para construir uma distribuição não paramétrica empírica.
Bit a bit
fonte
7

Os classificadores Naive Bayes podem acomodar variáveis ​​numéricas e também discretas sem muito problema. Essencialmente, existem três abordagens: (i) discretizar os valores numéricos (ii) usar um modelo paramétrico de cada atributo numérico (por exemplo, Gaussiano) ou (iii) usar um estimador de densidade não paramétrico (por exemplo, Parzen) para cada atributo numérico.

veja, por exemplo, "classificadores Naive Bayes que executam bem com variáveis ​​contínuas" de Remco Bouckaert

Dikran Marsupial
fonte
1
@LOL mesma resposta que a minha, com a mesma ordem de escolhas e os mesmos exemplos ... quais são as chances? Eu acho que todos nós pensamos da mesma maneira
Bitwise
1
É evidente que eu não deveria ter passado cinco minutos rastrear a referência; o)
Dikran Marsupial
3

Naive Bayes certamente pode trabalhar com atributos numéricos e discretos (preocupações com o módulo sobre a apropriação da distribuição assumida, conforme mencionado em outras respostas). No entanto, você deve considerar se realmente deseja usar o Naive Bayes, pois a metodologia não discriminatória se decompõe cada vez mais à medida que você combina dados de várias fontes, com correlações potencialmente fortes.

Se você deseja reter uma interpretação probabilística, considere a regressão logística, que é um análogo exato de Naive Bayes com um objetivo discriminativo em vez de generativo (consulte este documento, por exemplo: Regressão logística versus Naive Bayes . Você pode encontrar várias implementações: I como Mallet , se você pode usar java (acessível como uma ferramenta de linha de comando ou uma API).

Se uma interpretação probabilística estrita não for necessária, você poderá usar um SVM. Existem muitas implementações disso, mas o padrão de fato (com uma variante disponível na maioria dos idiomas) é o LibSVM .

Ben Allison
fonte
1

Você pode usar valores numéricos facilmente. No termo P (Recurso | esquema = Sim), você pode colocar uma distribuição gaussiana ou qualquer outra distribuição empírica dos dados de treinamento (por exemplo, classificar os dados, criar uma função que retorne o percentil do valor numérico de entrada fornecido). Aqui está uma descrição descrevendo que

brócolis
fonte