Tarefa Data Mining - Classificação de Textos

13
What’s Cooking Um Desafio de Classificação de Textos Mineração de Dados 2º Semestre de 2015 Professor: Alexandre PlasAno Aluno: Paulo Lacerda

Transcript of Tarefa Data Mining - Classificação de Textos

Page 1: Tarefa Data Mining - Classificação de Textos

What’s  Cooking  Um  Desafio  de  Classificação  de  Textos  

Mineração  de  Dados  2º  Semestre  de  2015  

Professor:  Alexandre  PlasAno  Aluno:  Paulo  Lacerda  

Page 2: Tarefa Data Mining - Classificação de Textos

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  

Page 3: Tarefa Data Mining - Classificação de Textos

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" ] },

Page 4: Tarefa Data Mining - Classificação de Textos

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  

Page 5: Tarefa Data Mining - Classificação de Textos

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  

Page 6: Tarefa Data Mining - Classificação de Textos

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  

Page 7: Tarefa Data Mining - Classificação de Textos

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  

Page 8: Tarefa Data Mining - Classificação de Textos

•  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  

Page 9: Tarefa Data Mining - Classificação de Textos

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  

Page 10: Tarefa Data Mining - Classificação de Textos

Resultados  ObAdos  •  Naïve  Bayes  

–  train  dataset  size:  39.774  –  recipes  classified:  9.944  –  Accuracy:  0.57862  (10-­‐fold  cross  validaAon)  

•  Ranking:  

Universidade  Federal  Fluminense   10  

…  

…  

Page 11: Tarefa Data Mining - Classificação de Textos

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”  

Page 12: Tarefa Data Mining - Classificação de Textos

Obrigado!  

12  Aprendizado  de  Máquina  –    2  /  2015  

Page 13: Tarefa Data Mining - Classificação de Textos

Distribuição  Dados  de  Treinamento  

Aula  5  -­‐  21/09/2010   13