Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Comportamento estranho do MultinomialNB

No final da aula 3, fiz algumas variações até treinar somente com 1 elemento e testar com os outros 999. Para minha surpresa, o algoritmo deu 83% de acerto. Além disso, quando diminui de 90% para 80, 70, 50% dos dados para treino a taxa de acerto aumentou. Isso era para acontecer mesmo? Treinar com mais dados pode ser pior?

O meu código é o seguinte:

import pandas as pd

df = pd.read_csv('buscas.csv')

X_df = df[['home','busca','logado']]
Y_df = df['comprou']

Xdummies_df = pd.get_dummies(X_df).astype(int)
Ydummies_df = Y_df

X = Xdummies_df.values
Y = Ydummies_df.values

porcentagem_treino = 0.001

tamanho_de_treino = int(len(Y) * porcentagem_treino)
tamanho_de_teste = len(Y) - tamanho_de_treino

treino_dados = X[:tamanho_de_treino]
treino_marcacoes = Y[:tamanho_de_treino]

teste_dados = X[-tamanho_de_teste:]
teste_marcacoes = Y[-tamanho_de_teste:]

from sklearn.naive_bayes import MultinomialNB
modelo = MultinomialNB()
modelo.fit(treino_dados, treino_marcacoes)

resultado = modelo.predict(teste_dados)

diferencas = resultado - teste_marcacoes

acertos = [d for d in diferencas if d == 0]
total_de_acertos = len(acertos)
total_de_elementos = len(teste_dados)

taxa_de_acerto = 100.0 * total_de_acertos / total_de_elementos

print(taxa_de_acerto)
print(total_de_elementos)
3 respostas

Cara, ficar variando essas coisas pode ser um problema grande, você pode estar caindo em um caso especifico que ficou melhor, isso não quer dizer que vai se comportar assim para o mundo real.

O machine learning pode ter levar a crer em algo que não é realmente se ficar fazendo muitos testes variando parametros. O ideal é definir um conjunto de parâmetros e utiliza-lo, sem ficar fazendo variações.

Henrique, eu concordo com você. Ao diminuir o universo para treinamento, posso estar pegando dados mais representativos.

Mas mesmo assim, treinar com 1 elemento e conseguir 83% de acerto me pareceu muito estranho. Talvez estes dados das planilhas não sejam reais e estejam viciados de alguma forma.

solução!

Eu entendi o que aconteceu ao ver os primeiros vídeos da aula 4. Como os dados do arquivo dados_busca.csv tem 82,3% de compras e o primeiro elemento dos dados é uma compra. O algoritmo consegue acertar 82,3% das vezes. Ou seja, os dados estão com uma tendência muito forte para compra.