Tópicos de machine learning
Classificação de textos




                                    @josevalim
               http:...
Quem sou eu?
Mestrado na Itália com tese em
    classificação de textos
Desenvolvedor Ruby a mais de
 3 anos, contribuidor ativo do
           Rails Core
Motivação
Nas últimas décadas, a robótica
desbravou a visão computacional.
    O que vêm em seguida?
Em 2006, o Google indexou mais
 de 25 bilhões de documentos
95% de todos os e-mails
  enviados são spams
O que é classificação de texto?
É a assinalação de forma
automática de um documento a
   um pré-definido grupo de
    classes baseada em seu
           co...
Conteúdo


• Pré-processamento
• Classificadores
• Medidas
Conteúdo


• Pré-processamento
  - Remoção de stop words
  - Representação
  - Stemming
  - Pesagem
• Classificadores
• Me...
Remoção de stop words
Stop words são palavras em um
texto desprovidas de semântica
Assunto: Especificações do
protocolo http

Eu preciso das especificações,
ou pelo menos, uma
interpretação verbosa das
espec...
Assunto: Especificações do
protocolo http

Eu preciso das especificações,
ou pelo menos, uma
interpretação verbosa das
espec...
Assunto: Especificações do
protocolo http                  especificações protocolo http

Eu preciso das especificações,   pr...
Representação
A representação mais comum é
  em saco de palavras (bag of
           words)
especificações protocolo http

preciso especificações pelo
menos interpretação verbosa
especificações protocolo http
artigos ...
especificações protocolo http   Palavra   Peso
preciso especificações pelo
menos interpretação verbosa
especificações protoco...
especificações protocolo http      Palavra      Peso
preciso especificações pelo     especificações    3
menos interpretação ...
especificações protocolo http      Palavra      Peso
preciso especificações pelo     especificações    3
menos interpretação ...
especificações protocolo http      Palavra      Peso
preciso especificações pelo     especificações    3
menos interpretação ...
especificações protocolo http      Palavra      Peso
preciso especificações pelo     especificações    3
menos interpretação ...
especificações protocolo http      Palavra      Peso
preciso especificações pelo     especificações    3
menos interpretação ...
Stemming
Stemming mapeia cada termo
de um documento para sua raiz
        (morfológica)
andei, andou, andamos
andei, andou, andamos => andar
Pesagem
Pesagem por frequência
Palavra      Peso
especificações    3
  protocolo      2
interpretação    1
   artigos       1
    ajuda        1
Pesagem por TF-IDF
Pesagem por TF-IDF
Pesagem por TF-IDF
Pesagem por TF-IDF

Term frequency
Pesagem por TF-IDF

Term frequency

   Palavra      Peso
especificações    3
  protocolo      2
interpretação    1
   artig...
Pesagem por TF-IDF

Term frequency         *

   Palavra      Peso
especificações    3
  protocolo      2
interpretação    ...
Pesagem por TF-IDF

Term frequency         *

   Palavra      Peso
especificações    3
  protocolo      2
interpretação    ...
Pesagem por TF-IDF

                           Inverse document
Term frequency         *
                               fr...
Pesagem por TF-IDF

                              Inverse document
Term frequency         *
                              ...
Conteúdo


• Pré-processamento
  - Remoção de stop words
  - Representação
  - Stemming
  - Pesagem
• Classificadores
• Me...
Conteúdo


• Pré-processamento
• Classificadores
  - Naive bayes
  - k nearest neighbors
  - Rocchio classifier
  - Suppor...
Naive Bayes
Modelo matématico simples
Baseado no Teorema de Bayes
P(ci|dj)
P(ci|dj) =
P(ci|dj) = P(ci)
P(ci|dj) = P(ci) *
P(ci|dj) = P(ci) * P(dj|ci)
P(ci|dj) = P(ci) * P(dj|ci) / P(dj)
Exemplo: duas classes, cinco
  documentos de exemplo
Document                    Class
Ruby is a dynamic language              Language
Ruby has color between pink and red    ...
Document                    Class
Ruby is a dynamic language              Language
Ruby has color between pink and red    ...
Term      Language   Gemstone
 ruby         3          2
 gems         1          1
dynamic       1          0
language   ...
(valor inicial + ocorrencias de wk em ci)
P(wk|ci) =
               (peso do valor inicial + numero de
                   ...
(0.5 + ocorrencias de wk em ci)
P(wk|ci) =
             (1 + numero de documentos em ci)
Term         Language       Gemstone
 ruby      (0.5+3) / (1+3) (0.5+2) / (1+2)
 gems      (0.5+1) / (1+3) (0.5+1) / (1+2)...
Term      Language   Gemstone
 ruby        0.88       0.83
 gems        0.38       0.5
dynamic      0.38       0.17
langua...
A qual classe pertence o documento:
  “My ruby gems arrived in a pink
              package”
A qual classe pertence o documento:
  “My ruby gems arrived in a pink
              package”
P(language|d) = P(ci) * P(d|ci) / P(d)
P(language|d) = P(ci) * P(d|ci) / P(d)
P(language|d) = P(ci) * P(d|ci) / P(d)

documentos em language /
  total documentos = 0.6
P(language|d) = P(ci) * P(d|ci) / P(d)

documentos em language /
  total documentos = 0.6
P(language|d) = P(ci) * P(d|ci) / P(d)

documentos em language /
  total documentos = 0.6

 P(ruby|language) * P(gems|lang...
P(language|d) = P(ci) * P(d|ci) / P(d)

documentos em language /
  total documentos = 0.6

 P(ruby|language) * P(gems|lang...
P(language|d) = P(ci) * P(d|ci) / P(d)

documentos em language /
  total documentos = 0.6

 P(ruby|language) * P(gems|lang...
P(gemstone|d) = P(ci) * P(d|ci) / P(d)
P(gemstone|d) = P(ci) * P(d|ci) / P(d)
P(gemstone|d) = P(ci) * P(d|ci) / P(d)

documentos em gemstone /
  total documentos = 0.4
P(gemstone|d) = P(ci) * P(d|ci) / P(d)

documentos em gemstone /
  total documentos = 0.4
P(gemstone|d) = P(ci) * P(d|ci) / P(d)

documentos em gemstone /
  total documentos = 0.4

 P(ruby|gemstone) * P(gems|gems...
P(gemstone|d) = P(ci) * P(d|ci) / P(d)

documentos em gemstone /
  total documentos = 0.4

 P(ruby|gemstone) * P(gems|gems...
P(gemstone|d) = P(ci) * P(d|ci) / P(d)

documentos em gemstone /
  total documentos = 0.4

 P(ruby|gemstone) * P(gems|gems...
P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d)
P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d)

 P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d)
P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d)

 P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d)


          ...
P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d)

 P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d)


          ...
P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d)

 P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d)


          ...
P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d)

 P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d)


          ...
Considera que as palavras em
    um documento são
      independentes
Simples e rápido
k-nearest neighbor (k-nn)
Representa documentos no espaço
como um vetor em função dos seus
             pesos
Um documento é classificado ao
analizar os k documentos mais
        próximos a ele
Document                    Class
Ruby is a dynamic language              Language
Ruby has color between pink and red    ...
<ruby, language, dynamic, gems, color, pink, red, package, precious, japan>

                   <1, 1, 1, 0, 0, 0, 0, 0, 0...
A qual classe pertence o documento:
  “My ruby gems arrived in a pink
              package”
<ruby, language, dynamic, gems, color, pink, red, package, precious, japan>

                   <1, 1, 1, 0, 0, 0, 0, 0, 0...
Documents               Distance     Class

<1, 1, 1, 0, 0, 0, 0, 0, 0, 0>      5       Language
<1, 0, 0, 0, 1, 1, 1, 0, ...
5   4   3   2   1   ?




                        language
                        gemstone
5   4   3   2   1   ?




                        language
                        gemstone
5   4   3   2   1   ?




                        language
                        gemstone
5   4   3   2   1   ?




                        language
                        gemstone
5   4   3   2   1   ?




                        language
                        gemstone
5   4   3   2   1   ?




                        language
                        gemstone
Para k = 1
5   4   3   2   1   ?




                        language
                        gemstone
Documento pertence a language
Para k = 3
5   4   3   2   1   ?




                        language
                        gemstone
Documento pertence a gemstone
Porém, k-nn sempre precisa de
   todos os dados de treino
Classificador pesado e lento
Rocchio classifier
Similar ao k-nn, porém
representa os documentos
     como uma média
5   4   3   2   1   ?




                        language
                        gemstone
5   4   3   2   1   ?




                        language
                        gemstone
5   4   3   2   1   ?




                        language
                        gemstone
5   4   3   2   1   ?




                        language
                        gemstone
5   4   3   2   1   ?




                        language
                        gemstone
Para classificar um documento,
 calculamos a sua distância às
             médias
3.5

5   4   3    2     1   ?



            3.66



                                 language
                           ...
Documento pertence a gemstone
Rocchio é leve e rápido, porém
 possui um problema óbvio...
?
?
Support Vector Machines
         (SVM)
Teoria matemática complexa
Também representa os documentos
          no espaço
Acha um hiperplano que divide o
espaço dos documentos em dois
5   4   3   2   1




                    language
                    gemstone
language
gemstone
language
gemstone
Calcular este hiperplano,
geralmente exige muito
    processamento
Porém classificar um documento é
rápido, basta determinar qual lado
      do hiperplano ele está
language
gemstone
?




    language
    gemstone
?




    language
    gemstone
Conteúdo


• Pré-processamento
• Classificadores
  - Naive bayes
  - k nearest neighbors
  - Rocchio classifier
  - Suppor...
Conteúdo


• Pré-processamento
• Classificadores
  - Naive bayes
  - k nearest neighbors
  - Rocchio classifier
  - Suppor...
Medidas
Analisar um classificador por
   sua acurácia é errado
Classe real

                 p                 n
            Verdadeiro       Falso
          p
Classe       Positivo    ...
Acurácia = (VP + VN) / (VP + VN + FP + FN)
A acurácia esconde potenciais
   falso positivos ou falso
          negativos
Use precisão e revocação
Precisão = VP / (VP + FP)
Revocação = VP / (VP + FN)
Alta precisão significa poucos
 falso positivos, alta revocação
equivale a poucos falso negativos
Alguns resultados...
Dataset da Reuters - RCV1-v2
Precisão      Revocação

100%
         94.5                                      93.4 92.2
                              9...
No geral, SVM possui os melhores
            resultados
Naive Bayes possui altíssima
precisão, excelente para filtros
           anti-spam
Conteúdo


• Pré-processamento
• Classificadores
• Medidas
?!
                      @josevalim
 http://blog.plataformatec.com.br
Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009
Upcoming SlideShare
Loading in...5
×

Classificação de textos - Dev in Sampa - 28nov2009

2,027

Published on

José Valim talks in portuguese about Text Classification at Dev in Sampa 2009

Published in: Technology
1 Comment
10 Likes
Statistics
Notes
  • Essa apresentação de slides me ajudou muito em um trabalho de inteligência artificial. Muito obrigada por dividir esse conhecimento na web.
    Tenho uma pergunta, no algoritmo de Naive Bayes, como se faz a escolha do valor inicial e do peso inicial? (slide 62).
    Desde já agradeço novamente,
    Sheila Genesine Dada
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
2,027
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
88
Comments
1
Likes
10
Embeds 0
No embeds

No notes for slide
  • Transcript of "Classificação de textos - Dev in Sampa - 28nov2009"

    1. 1. Tópicos de machine learning Classificação de textos @josevalim http://blog.plataformatec.com.br
    2. 2. Quem sou eu?
    3. 3. Mestrado na Itália com tese em classificação de textos
    4. 4. Desenvolvedor Ruby a mais de 3 anos, contribuidor ativo do Rails Core
    5. 5. Motivação
    6. 6. Nas últimas décadas, a robótica desbravou a visão computacional. O que vêm em seguida?
    7. 7. Em 2006, o Google indexou mais de 25 bilhões de documentos
    8. 8. 95% de todos os e-mails enviados são spams
    9. 9. O que é classificação de texto?
    10. 10. É a assinalação de forma automática de um documento a um pré-definido grupo de classes baseada em seu conteúdo
    11. 11. Conteúdo • Pré-processamento • Classificadores • Medidas
    12. 12. Conteúdo • Pré-processamento - Remoção de stop words - Representação - Stemming - Pesagem • Classificadores • Medidas
    13. 13. Remoção de stop words
    14. 14. Stop words são palavras em um texto desprovidas de semântica
    15. 15. Assunto: Especificações do protocolo http Eu preciso das especificações, ou pelo menos, uma interpretação verbosa das especificações do protocolo http. Artigos técnicos ou referência a livros também seriam de grande ajuda.
    16. 16. Assunto: Especificações do protocolo http Eu preciso das especificações, ou pelo menos, uma interpretação verbosa das especificações do protocolo http. Artigos técnicos ou referência a livros também seriam de grande ajuda.
    17. 17. Assunto: Especificações do protocolo http especificações protocolo http Eu preciso das especificações, preciso especificações pelo ou pelo menos, uma menos interpretação verbosa interpretação verbosa das especificações protocolo http especificações do protocolo artigos técnicos referência http. Artigos técnicos ou livros também seriam grande referência a livros também ajuda seriam de grande ajuda.
    18. 18. Representação
    19. 19. A representação mais comum é em saco de palavras (bag of words)
    20. 20. especificações protocolo http preciso especificações pelo menos interpretação verbosa especificações protocolo http artigos técnicos referência livros também seriam grande ajuda
    21. 21. especificações protocolo http Palavra Peso preciso especificações pelo menos interpretação verbosa especificações protocolo http artigos técnicos referência livros também seriam grande ajuda
    22. 22. especificações protocolo http Palavra Peso preciso especificações pelo especificações 3 menos interpretação verbosa especificações protocolo http artigos técnicos referência livros também seriam grande ajuda
    23. 23. especificações protocolo http Palavra Peso preciso especificações pelo especificações 3 menos interpretação verbosa protocolo 2 especificações protocolo http artigos técnicos referência livros também seriam grande ajuda
    24. 24. especificações protocolo http Palavra Peso preciso especificações pelo especificações 3 menos interpretação verbosa protocolo 2 especificações protocolo http interpretação 1 artigos técnicos referência livros também seriam grande ajuda
    25. 25. especificações protocolo http Palavra Peso preciso especificações pelo especificações 3 menos interpretação verbosa protocolo 2 especificações protocolo http interpretação 1 artigos técnicos referência artigos 1 livros também seriam grande ajuda
    26. 26. especificações protocolo http Palavra Peso preciso especificações pelo especificações 3 menos interpretação verbosa protocolo 2 especificações protocolo http interpretação 1 artigos técnicos referência artigos 1 livros também seriam grande ajuda ajuda 1
    27. 27. Stemming
    28. 28. Stemming mapeia cada termo de um documento para sua raiz (morfológica)
    29. 29. andei, andou, andamos
    30. 30. andei, andou, andamos => andar
    31. 31. Pesagem
    32. 32. Pesagem por frequência
    33. 33. Palavra Peso especificações 3 protocolo 2 interpretação 1 artigos 1 ajuda 1
    34. 34. Pesagem por TF-IDF
    35. 35. Pesagem por TF-IDF
    36. 36. Pesagem por TF-IDF
    37. 37. Pesagem por TF-IDF Term frequency
    38. 38. Pesagem por TF-IDF Term frequency Palavra Peso especificações 3 protocolo 2 interpretação 1 artigos 1 ajuda 1
    39. 39. Pesagem por TF-IDF Term frequency * Palavra Peso especificações 3 protocolo 2 interpretação 1 artigos 1 ajuda 1
    40. 40. Pesagem por TF-IDF Term frequency * Palavra Peso especificações 3 protocolo 2 interpretação 1 artigos 1 ajuda 1
    41. 41. Pesagem por TF-IDF Inverse document Term frequency * frequency Palavra Peso especificações 3 protocolo 2 interpretação 1 artigos 1 ajuda 1
    42. 42. Pesagem por TF-IDF Inverse document Term frequency * frequency Palavra Peso especificações 3 protocolo 2 idf(tk) = log |N / df(tk)| interpretação 1 artigos 1 ajuda 1
    43. 43. Conteúdo • Pré-processamento - Remoção de stop words - Representação - Stemming - Pesagem • Classificadores • Medidas
    44. 44. Conteúdo • Pré-processamento • Classificadores - Naive bayes - k nearest neighbors - Rocchio classifier - Support vector machines • Medidas
    45. 45. Naive Bayes
    46. 46. Modelo matématico simples
    47. 47. Baseado no Teorema de Bayes
    48. 48. P(ci|dj)
    49. 49. P(ci|dj) =
    50. 50. P(ci|dj) = P(ci)
    51. 51. P(ci|dj) = P(ci) *
    52. 52. P(ci|dj) = P(ci) * P(dj|ci)
    53. 53. P(ci|dj) = P(ci) * P(dj|ci) / P(dj)
    54. 54. Exemplo: duas classes, cinco documentos de exemplo
    55. 55. Document Class Ruby is a dynamic language Language Ruby has color between pink and red Gemstone Gems is a ruby packaging system Language Ruby is one of the four precious gems Gemstone The Ruby language was born in Japan Language
    56. 56. Document Class Ruby is a dynamic language Language Ruby has color between pink and red Gemstone Gems is a ruby packaging system Language Ruby is one of the four precious gems Gemstone The Ruby language was born in Japan Language
    57. 57. Term Language Gemstone ruby 3 2 gems 1 1 dynamic 1 0 language 2 0 color 0 1 pink 0 1 red 0 1 package 1 0 precious 0 1 japan 1 0
    58. 58. (valor inicial + ocorrencias de wk em ci) P(wk|ci) = (peso do valor inicial + numero de documentos em ci)
    59. 59. (0.5 + ocorrencias de wk em ci) P(wk|ci) = (1 + numero de documentos em ci)
    60. 60. Term Language Gemstone ruby (0.5+3) / (1+3) (0.5+2) / (1+2) gems (0.5+1) / (1+3) (0.5+1) / (1+2) dynamic (0.5+1) / (1+3) (0.5+0) / (1+2) language (0.5+2) / (1+3) (0.5+0) / (1+2) color (0.5+0) / (1+3) (0.5+1) / (1+2) pink (0.5+0) / (1+3) (0.5+1) / (1+2) red (0.5+0) / (1+3) (0.5+1) / (1+2) package (0.5+1) / (1+3) (0.5+0) / (1+2) precious (0.5+0) / (1+3) (0.5+1) / (1+2) japan (0.5+1) / (1+3) (0.5+0) / (1+2)
    61. 61. Term Language Gemstone ruby 0.88 0.83 gems 0.38 0.5 dynamic 0.38 0.17 language 0.62 0.17 color 0.12 0.5 pink 0.12 0.5 red 0.12 0.5 package 0.38 0.17 precious 0.12 0.5 japan 0.38 0.17
    62. 62. A qual classe pertence o documento: “My ruby gems arrived in a pink package”
    63. 63. A qual classe pertence o documento: “My ruby gems arrived in a pink package”
    64. 64. P(language|d) = P(ci) * P(d|ci) / P(d)
    65. 65. P(language|d) = P(ci) * P(d|ci) / P(d)
    66. 66. P(language|d) = P(ci) * P(d|ci) / P(d) documentos em language / total documentos = 0.6
    67. 67. P(language|d) = P(ci) * P(d|ci) / P(d) documentos em language / total documentos = 0.6
    68. 68. P(language|d) = P(ci) * P(d|ci) / P(d) documentos em language / total documentos = 0.6 P(ruby|language) * P(gems|language) * P(pink|language) * P(package|language)
    69. 69. P(language|d) = P(ci) * P(d|ci) / P(d) documentos em language / total documentos = 0.6 P(ruby|language) * P(gems|language) * P(pink|language) * P(package|language)
    70. 70. P(language|d) = P(ci) * P(d|ci) / P(d) documentos em language / total documentos = 0.6 P(ruby|language) * P(gems|language) * P(pink|language) * P(package|language) Não importa ...
    71. 71. P(gemstone|d) = P(ci) * P(d|ci) / P(d)
    72. 72. P(gemstone|d) = P(ci) * P(d|ci) / P(d)
    73. 73. P(gemstone|d) = P(ci) * P(d|ci) / P(d) documentos em gemstone / total documentos = 0.4
    74. 74. P(gemstone|d) = P(ci) * P(d|ci) / P(d) documentos em gemstone / total documentos = 0.4
    75. 75. P(gemstone|d) = P(ci) * P(d|ci) / P(d) documentos em gemstone / total documentos = 0.4 P(ruby|gemstone) * P(gems|gemstone) * P(pink|gemstone) * P(package|gemstone)
    76. 76. P(gemstone|d) = P(ci) * P(d|ci) / P(d) documentos em gemstone / total documentos = 0.4 P(ruby|gemstone) * P(gems|gemstone) * P(pink|gemstone) * P(package|gemstone)
    77. 77. P(gemstone|d) = P(ci) * P(d|ci) / P(d) documentos em gemstone / total documentos = 0.4 P(ruby|gemstone) * P(gems|gemstone) * P(pink|gemstone) * P(package|gemstone) Não importa ...
    78. 78. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d)
    79. 79. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d) P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d)
    80. 80. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d) P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d) P(language|d) = 0.009149 / P(d)
    81. 81. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d) P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d) P(language|d) = 0.009149 / P(d) P(gemstone|d) =0.014110 / P(d)
    82. 82. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d) P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d) P(language|d) = 0.009149 / P(d) P(gemstone|d) =0.014110 / P(d) P(gemstone|d) > P(language|d)
    83. 83. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d) P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d) P(language|d) = 0.009149 / P(d) P(gemstone|d) =0.014110 / P(d) P(gemstone|d) > P(language|d) d pertence à classe gemstone
    84. 84. Considera que as palavras em um documento são independentes
    85. 85. Simples e rápido
    86. 86. k-nearest neighbor (k-nn)
    87. 87. Representa documentos no espaço como um vetor em função dos seus pesos
    88. 88. Um documento é classificado ao analizar os k documentos mais próximos a ele
    89. 89. Document Class Ruby is a dynamic language Language Ruby has color between pink and red Gemstone Gems is a ruby packaging system Language Ruby is one of the four precious gems Gemstone The Ruby language was born in Japan Language
    90. 90. <ruby, language, dynamic, gems, color, pink, red, package, precious, japan> <1, 1, 1, 0, 0, 0, 0, 0, 0, 0> <1, 0, 0, 1, 1, 1, 1, 0, 0, 0> <1, 0, 0, 1, 0, 0, 0, 1, 0, 0> <1, 0, 0, 1, 0, 0, 0, 0, 1, 0> <1, 1, 0, 0, 0, 0, 0, 0, 0, 1>
    91. 91. A qual classe pertence o documento: “My ruby gems arrived in a pink package”
    92. 92. <ruby, language, dynamic, gems, color, pink, red, package, precious, japan> <1, 1, 1, 0, 0, 0, 0, 0, 0, 0> <1, 0, 0, 1, 1, 1, 1, 0, 0, 0> <1, 0, 0, 1, 0, 0, 0, 1, 0, 0> <1, 0, 0, 1, 0, 0, 0, 0, 1, 0> <1, 1, 0, 0, 0, 0, 0, 0, 0, 1> <1, 0, 0, 1, 0, 1, 0, 1, 0, 0>
    93. 93. Documents Distance Class <1, 1, 1, 0, 0, 0, 0, 0, 0, 0> 5 Language <1, 0, 0, 0, 1, 1, 1, 0, 0, 0> 4 Gemstone <1, 0, 0, 1, 0, 0, 0, 1, 0, 0> 1 Language <1, 0, 0, 1, 0, 0, 0, 0, 1, 0> 3 Gemstone <1, 1, 0, 0, 0, 0, 0, 0, 0, 1> 5 Language <1, 0, 0, 1, 0, 1, 0, 1, 0, 0>
    94. 94. 5 4 3 2 1 ? language gemstone
    95. 95. 5 4 3 2 1 ? language gemstone
    96. 96. 5 4 3 2 1 ? language gemstone
    97. 97. 5 4 3 2 1 ? language gemstone
    98. 98. 5 4 3 2 1 ? language gemstone
    99. 99. 5 4 3 2 1 ? language gemstone
    100. 100. Para k = 1
    101. 101. 5 4 3 2 1 ? language gemstone
    102. 102. Documento pertence a language
    103. 103. Para k = 3
    104. 104. 5 4 3 2 1 ? language gemstone
    105. 105. Documento pertence a gemstone
    106. 106. Porém, k-nn sempre precisa de todos os dados de treino
    107. 107. Classificador pesado e lento
    108. 108. Rocchio classifier
    109. 109. Similar ao k-nn, porém representa os documentos como uma média
    110. 110. 5 4 3 2 1 ? language gemstone
    111. 111. 5 4 3 2 1 ? language gemstone
    112. 112. 5 4 3 2 1 ? language gemstone
    113. 113. 5 4 3 2 1 ? language gemstone
    114. 114. 5 4 3 2 1 ? language gemstone
    115. 115. Para classificar um documento, calculamos a sua distância às médias
    116. 116. 3.5 5 4 3 2 1 ? 3.66 language gemstone
    117. 117. Documento pertence a gemstone
    118. 118. Rocchio é leve e rápido, porém possui um problema óbvio...
    119. 119. ?
    120. 120. ?
    121. 121. Support Vector Machines (SVM)
    122. 122. Teoria matemática complexa
    123. 123. Também representa os documentos no espaço
    124. 124. Acha um hiperplano que divide o espaço dos documentos em dois
    125. 125. 5 4 3 2 1 language gemstone
    126. 126. language gemstone
    127. 127. language gemstone
    128. 128. Calcular este hiperplano, geralmente exige muito processamento
    129. 129. Porém classificar um documento é rápido, basta determinar qual lado do hiperplano ele está
    130. 130. language gemstone
    131. 131. ? language gemstone
    132. 132. ? language gemstone
    133. 133. Conteúdo • Pré-processamento • Classificadores - Naive bayes - k nearest neighbors - Rocchio classifier - Support vector machines • Medidas
    134. 134. Conteúdo • Pré-processamento • Classificadores - Naive bayes - k nearest neighbors - Rocchio classifier - Support vector machines • Medidas
    135. 135. Medidas
    136. 136. Analisar um classificador por sua acurácia é errado
    137. 137. Classe real p n Verdadeiro Falso p Classe Positivo Positivo predita Falso Verdadeiro n Negativo Negativo
    138. 138. Acurácia = (VP + VN) / (VP + VN + FP + FN)
    139. 139. A acurácia esconde potenciais falso positivos ou falso negativos
    140. 140. Use precisão e revocação
    141. 141. Precisão = VP / (VP + FP)
    142. 142. Revocação = VP / (VP + FN)
    143. 143. Alta precisão significa poucos falso positivos, alta revocação equivale a poucos falso negativos
    144. 144. Alguns resultados...
    145. 145. Dataset da Reuters - RCV1-v2
    146. 146. Precisão Revocação 100% 94.5 93.4 92.2 92.3 87.5% 89.9 85.5 80.3 75% 75.7 62.5% 50% Naive Bayes k-NN Rocchio SVM
    147. 147. No geral, SVM possui os melhores resultados
    148. 148. Naive Bayes possui altíssima precisão, excelente para filtros anti-spam
    149. 149. Conteúdo • Pré-processamento • Classificadores • Medidas
    150. 150. ?! @josevalim http://blog.plataformatec.com.br
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×