Este documento resume um projeto de classificação de receitas culinárias em categorias usando aprendizado de máquina. O autor treinou um classificador de Naive Bayes usando ingredientes de receitas e obteve uma acurácia de 57%. Futuros passos incluem testar outros algoritmos e melhorar a preparação dos dados.
Case Study: How Caixa Econômica in Brazil Uses IBM® Rational® Insight and Per...
Tarefa Data Mining - Classificação de Textos
1. What’s
Cooking
Um
Desafio
de
Classificação
de
Textos
Mineração
de
Dados
2º
Semestre
de
2015
Professor:
Alexandre
PlasAno
Aluno:
Paulo
Lacerda
2. Aprendizado
de
Máquina
–
2
/
2015
Agenda
• Introdução
ao
Desafio
• Abordagem
UAlizada
• Método
de
Aprendizado
• Implementação
do
Algoritmo
• Resultados
ObAdos
• Próximos
Passos
2
3. What’s
Cooking
hUps://www.kaggle.com/c/whats-‐cooking
Obje2vo:
dado
um
conjunto
de
9.944
receitas,
classificar
cada
uma
delas
em
um
Apo
de
culinária,
baseado
nos
seus
ingredientes.
Dados
de
treinamento:
• 39.774
receitas
classificadas
de
acordo
com
o
Apo
de
culinária.
• 20
Apos
de
culinária
(italian,
mexican,
southern_us,
indian,
...)
• Exemplo:
Universidade
Federal
Fluminense
3
{
"id": 24717,
"cuisine": "indian",
"ingredients": [
"tumeric",
"vegetable stock",
"tomatoes",
"garam masala",
"naan",
"red lentils",
"red chili peppers",
"onions",
"spinach",
"sweet potatoes"
]
},
4. Abordagem
UAlizada
Universidade
Federal
Fluminense
4
Treinamento
Classificação
Dados
de
Treinamento
Classificação
de
Texto
com
Método
Supervisionado
de
Aprendizado
de
Máquina
1
2
Modelo
Classificador
Receitas
a
Classificar
Receitas
Classificadas
5. Abordagem
UAlizada
Universidade
Federal
Fluminense
5
Algoritmo
de
Aprendizado
de
Máquina
Treinamento
{
"id":
2941,
"cuisine":
"thai",
"ingredients":
[
"sugar",
"hot
chili",
"lime
juice"
]
}
...
0
1
0
0
0
0
0
1
1
1
feature
vector
Extrator
de
Features
(bag-‐of-‐words)
Classe
Dados
de
Treinamento
Modelo
Classificador
para
cada
receita
do
data
set
de
treinamento
6. Abordagem
UAlizada
Universidade
Federal
Fluminense
6
Classificação
{
"id":
8732,
"cuisine":
"?",
"ingredients":
[
"salt",
"rice",
"black
beans"
]
}
...
0
1
0
0
0
0
0
1
1
1
feature
vector
Extrator
de
Features
(bag-‐of-‐words)
Receitas
a
Classificar
Modelo
Classificador
Receitas
Classificadas
para
cada
receita
do
data
set
a
classificar
7. Método
de
Aprendizado
Qual
método
uAlizar?
• Diversos
métodos
podem
ser
usados
para
classificação
de
texto:
Naive
Bayes,
LogisAc
Regression,
k-‐NN,
Redes
Neurais,
SVM,
Ensembles.
(Mining
Text
Data,
Springer,
2012)
• Naïve
Bayes
foi
escolhido
para
o
trabalho,
pois
tem
algumas
caracterísAcas
interessantes
para
este
caso:
– Boa
performance
– Simples
de
implementar
– Hipótese
de
independência
das
probabilidades
condicionais
é
aceitável
• Resultado
será
baseline
para
outros
métodos
Universidade
Federal
Fluminense
7
8. • Teorema
de
Bayes
Dado
uma
receita
r
e
uma
classe
c:
• Como
classificar
uma
nova
receita
r?
Obtendo
a
classe
que
gere
a
maior
P(c|r):
Sendo
que
P(r|c) = P(w1, w2, w3, ..., wn | c)
(bag
of
words)
Assumindo
independência
entre
as
probabilidades
condicionais
(Naïve):
P(r|c) = P(w1|c) x P(w2|c) x P(w3|c) x ... x P(wN|c)
Naïve
Bayes
Universidade
Federal
Fluminense
8
9. Implementação
do
Algoritmo
• Linguagem
Python
– Simples
e
bastante
uAlizada
em
referências
da
área
– Trabalha
bem
com
operações
em
vetores
(NumPy)
• Duas
funções
principais:
–
trainNB(trainRecipes,
vocabulary,
classes)
–
classifyNB(pc,
pwc,
ingredFeatVector)
• Código-‐fonte:
– hUps://github.com/placerda/whatscooking
Universidade
Federal
Fluminense
9
11. Próximos
Passos
Aplicar
outros
métodos:
– SVM
e
kNN
(A
loss
funcAon
analysis
for
classificaAon
methods
in
text
categorizaAon.Li,
Fan,
and
Yiming
Yang.
2003.)
• OAmizar
NB
– upweigh(ng
Adicionar
pesos
manualmente
(um
ingrediente
tem
mais
peso
que
outro
em
determinadas
classes)
• Preparar
os
dados:
normalização,
stemming,
etc.
– “50%
less
sodium
black
beans”
– “black
beans”
Universidade
Federal
Fluminense
11
“black
beans”