SlideShare uma empresa Scribd logo
Utilizando Machine Learning e Java
para classificar o conteúdo de
páginas Web
30/06/2016
Joel Pinho Lucas
1
Agenda
• Personalização de conteúdo na Web
• Classificação de páginas Web baseada em interesses
• Classificação baseada em texto
• Implementação dos algoritmos
• Extensão para Latam (espanhol)
• Cases e Resultados
2
Personalização de conteúdo na Web
3
Banner
Banner
?
??
• Dados: 1.5 bilhões de novos registros / dia
• Métricas para medir eficiência: CTR (Click Through Rate)
50% maior
• Resposta rápida: RTB (Real Time Bidding) precisa ser
em até 300ms
4
Personalização de conteúdo na Web -
Tail Target
Personalização de conteúdo na Web
5
Tag
u=1507000A8451375B184024E
Cookie
Classificação de Interesses
• Processar e classificar conteúdo de web links diariamente
6
Classificação de Interesses
7
Classificação Baseada em Texto
Texto
Relevante
Extrator de Texto
Crawling
Representação de um link web:
1 15749 aluguel
2 12208 casa
3 11456 julho
4 10272 dia
5 9232 sao paulo
6 9177 procurar
7 8958 vender
8 8779 imóvel
9 8664 praia
10 8191 garagem
11 7626 carro
12 7580 preço
13 7453 quarto
14 7246 construção
…….
n
Extrator de Termos
Frequentes
Interesse Classificador
1. Obter um conjunto de dados atribuindo um label (classe) em cada registro
2. Transformar (pré-processar) os dados e obter as features a serem
treinadas
3. Dividir o conjunto de dados entre conjunto de treino e conjunto de teste
4. Treinar o conjunto de treino para obter um modelo de classificação
5. Usar o conjunto de teste (retirar label) para avaliar o modelo
6. Retornar ao passo 4 se o resultado não for satisfatório
Aprendizagem Supervisionada - Classificação
9
Classificação Baseada em Texto
1. Obter um conjunto de dados atribuindo um label (classe) em cada registro
10
Crawler
1- http://www.futebolparatodos.com.ar/noticia1.php
2- http://www.futebolparatodos.com.ar/boca.php
3- http://www.futebolparatodos.com.ar/camp/1.php
4- http://www.futebolparatodos.com.ar/pagina2.php
5- http://www.futebolparatodos.com.ar/partidos.html
…
101- http://mundod.lavoz.com.ar/futbol/boca_juniors.asp
102- http://mundod.lavoz.com.ar/futbol/pagina1.html
103- http://mundod.lavoz.com.ar/futbol/river.php
104- http://mundod.lavoz.com.ar/futbol/pagina2.php
105- http://mundod.lavoz.com.ar/futbol/noticia_partido.php
…
3000- http://mundod.lavoz.com.ar/futbol/camp/equipos.php
Tamanho da amostra precisa ser representativo!!
Classificação Baseada em Texto
2. Preparar os dados e obter as features a serem treinadas
11
C. Filtrar Stop Words da língua em questão. Ex: eu, ao, para, é, etc. (Português)
B. Tokenize
A. Estrutura de dados onde as freqüência das palavras no texto sejam as
features (bag of words). Ex:
Classificação Baseada em Texto
2. Transformar (pré-processar) os dados e obter as features a serem
treinadas
12
D. Stemming de texto
Palavra Stem
computador comput
computadores comput
computar comput
bebezinho bebe
bebe bebe
bebezinhos bebe
bebezinha bebe
Classificação Baseada em Texto
2. Transformar (pré-processar) os dados e obter as features a serem
treinadas
13
E. Preparar o input baseado em TF*IDF (Term Frequency * Inverse Document Frequency)
Palavra TF IDF TF*IDF
gol 5 1.217 6.085
dia 8 0.142 1.136
brasil 3 0.987 2.961
trave 3 1.681 5.043
Classificação Baseada em Texto
3. Dividir o conjunto de dados entre conjunto de treino e conjunto de teste
80% treino
20% teste
60% treino
20% teste
20% validação
holdout set-validation
k-fold cross-validation
Classificação Baseada em Texto
4. Usar o conjunto de treino para obter um modelo de classificação
Classificador
Finanças
1 12946 investimento
2 12555 cotação
3 12443 renda
4 11762 câmbio
5 10642 lucro
6 9110 salário
7 8783 bolsa
8 8661 brasil
9 8562 imóvel
10 8388 bolso
11 8217 real
12 8067 economia
13 8016 moeda
15 7742 renda
Futebol
1 26682 gol
2 25256 jogo
3 19407 brasileirão
4 17268 time
5 15354 brasil
6 15297 copa
7 15117 jogador
8 15057 mundial
9 14425 atlético
10 14181 futebol
11 13081 partida
12 13042 vitória
13 12603 seleção
14 12301 bola
Saúde
1 20385 idoso
2 18449 remédio
3 12278 farmácia
4 11094 doença
5 10228 receita
6 10027 grave
7 9701 médico
8 9203 vida
9 8266 aposentadoria
10 7371 oral
11 7331 saúde
12 6901 pílula
13 6840 bula
14 6619 inss
Moda
1 42811 verão
2 37103 look
3 33971 desfile
4 28767 vestido
5 28149 moda
6 26167 março
7 26075 dia
8 23060 coleção
9 22901 modelo
10 21431 inverno
11 20444 bonita
12 19834 fashion
13 19353 festa
14 18471 peça
…
MODELO
Conjunto de
Treino
Classificação Baseada em Texto
5. Usar o conjunto de teste (retirar label) para avaliar o modelo
16
Matriz de Confusão
FUTEBOL MODA BELEZA CINEMA
FUTEBOL 956 9 11 24
MODA 1 890 104 5
BELEZA 3 28 967 2
CINEMA 22 37 26 915
Implementação dos Algoritmos
Apache Mahout:
• Projeto da Apache Software Foundation para disponibilizar algoritmos e
implementações relacionadas a Machine Learning
• Algoritmos para (predominantemente) Classificação, Filtragem
Colaborativa, Clustering, Conjunto de items frequentes
• Bibliotecas Java para operações matemáticas para machine learning,
álgebra linear e estatística
17
Implementação dos Algoritmos
Apache Mahout:
• Grande parte das implementações são rodam de maneira distribuída em
clusters Hadoop (Map-Reduce)
• Possui implementações single-node ou independentes do Hadoop
18
Implementação dos Algoritmos
Implementações disponíveis (06/2015)
Source: Isabel Drost-Fromm, Software Developer, Apache Software Foundation/Nokia Gate 5 GmbH
Implementação dos Algoritmos
Regressão Logística:
• Modelo de classificação usado para prever a probabilidade de ocorrência
de um evento
• Bastante utilizado para detecção de fraude, prever eficiência de anúncios
(clique), probalidade de compra de items, etc
20
Implementação dos Algoritmos
Regressão Logística:
• Função logística (Sigmoide):
21
• Equação com mais de uma variável (x) para estimar o valor do label:
Aprender valores dos coeficientes!
Implementação dos Algoritmos
Regressão Logística:
• Cost function (erro): leva em conta a diferença entre valor previsto e valor
observado
• SGD (Stochastic Gradient Descendent): algoritmo de otimização que
tenta minimizar a cost function iterativamente
22
Implementação dos Algoritmos
Online Logistic Regression:
• Algoritmo sequencial (não paralelo)
23
• Implementa SGD (online): iterar um a um dos exemplos do treino
Implementação dos Algoritmos
Feature vector encoding:
• Codificar os vetores de input do algoritmo de classificação
24
Implementação dos Algoritmos
Adaptive Logistic Regression:
• Executa múltiplos algoritmos de SGD testando diferentes parâmetros
• Composto por 20 CrossFoldLearner
• Escolhe o algoritmo que apresentou melhor modelo
25
Implementação dos Algoritmos
26
1. Confusion Matrix / Precisão (> 96%)
2. Top Frequency Words
Avaliação dos Modelos Treinados:
Futebol
1 26682 gol
2 25256 jogo
3 19407 brasileirão
4 17268 time
5 15354 brasil
6 15297 copa
7 15117 jogador
8 15057 mundial
9 14425 atlético
10 14181 futebol
11 13081 partida
12 13042 vitória
13 12603 seleção
14 12301 bola
Implementação dos Algoritmos
27
3. Teste funcional
Avaliação dos Modelos Treinados:
4. Estatísticas de Top Visited Pages
Extensão para Latam
• Modelos novos (Argentina, Colômbia, México, EUA)
• Sementes novas
• Stemmer novo
• Stop words por língua
• Identificar Interesses sensíveis ao fator local:
ex: Futebol, Política, Música, etc.
contra ex: Moda, Beleza, Mergulho
28
Extensão para Latam
29
México = 8745
Colômbia = 88
Argentina = 32
Chile = 23
Brasil = 3
Acessos por país:
Detecção do País
Algoritmo Detecção
de Língua
http://labs.cybozu.co.jp/en/
+
Cases e Resultados
Treinamento -
Algoritmo
Sites para Treino e
Teste
Lista de Categorias
no Label
Modelo
Lista de URLs com
Label atribuído
Off - line
Classificação
utilizando os
Modelos
Conteúdo Textual
Relevante do Link
Interesse
previsto ao Link
Online
Cases e Resultados
Problema: corridosblindados.org classificado como CorridaDeAventura
Estratégia: Inserir sites de “música narco” nas sementes de música
31
Cases e Resultados
Problema: notícias do MHM classificado como Futebol
Estratégia: filtrar páginas que passaram pelo crawler e que não são de Futebol
32
Cases e Resultados
Problema: mudança de conteúdo de times de futebol
Estratégia: atualizar sementes e re-treinar modelos periodicamente
33
Perguntas - Contato
‣ Linkedin: http://br.linkedin.com/in/joelplucas/
‣ Email: joel@tailtarget.com
34

Mais conteúdo relacionado

Semelhante a Utilizando Machine Learning e Java para classificar o conteúdo de páginas Web

Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring Databases
Ismael
 
TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016
Fernando Santiago
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
softeam
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Éberli Cabistani Riella
 
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Renato Groff
 
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Renato Groff
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - Linux
Dell Technologies
 
[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloud[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloud
Bárbara Cabral da Conceição, CTFL
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
Saulo Arruda
 
Machine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produçãoMachine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produção
Marlesson Santana
 
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
Fabrício Catae
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
e-Setorial
 
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...
Renato Groff
 
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - Dev...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - Dev...Monitorando aplicações Web com Application Insights, Logic Apps e Slack - Dev...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - Dev...
Renato Groff
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
Eric Gallardo
 
5 coisas que todo desenvolvedor deveria saber sobre sql server
5 coisas que todo desenvolvedor deveria saber sobre sql server5 coisas que todo desenvolvedor deveria saber sobre sql server
5 coisas que todo desenvolvedor deveria saber sobre sql server
Marcos Freccia
 
Campus Party - Sistemas de Recomendação
Campus Party - Sistemas de RecomendaçãoCampus Party - Sistemas de Recomendação
Campus Party - Sistemas de Recomendação
Marlesson Santana
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
Norberto Santos
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdf14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdf
gabriel-colman
 

Semelhante a Utilizando Machine Learning e Java para classificar o conteúdo de páginas Web (20)

Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring Databases
 
TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
 
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - Linux
 
[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloud[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloud
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Machine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produçãoMachine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produção
 
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...
 
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - Dev...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - Dev...Monitorando aplicações Web com Application Insights, Logic Apps e Slack - Dev...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - Dev...
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
5 coisas que todo desenvolvedor deveria saber sobre sql server
5 coisas que todo desenvolvedor deveria saber sobre sql server5 coisas que todo desenvolvedor deveria saber sobre sql server
5 coisas que todo desenvolvedor deveria saber sobre sql server
 
Campus Party - Sistemas de Recomendação
Campus Party - Sistemas de RecomendaçãoCampus Party - Sistemas de Recomendação
Campus Party - Sistemas de Recomendação
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdf14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdf
 

Mais de Joel Pinho Lucas

Engajando usuários nos portais de conteúdo digital da Globo através de Sistem...
Engajando usuários nos portais de conteúdo digital da Globo através de Sistem...Engajando usuários nos portais de conteúdo digital da Globo através de Sistem...
Engajando usuários nos portais de conteúdo digital da Globo através de Sistem...
Joel Pinho Lucas
 
Boas práticas de desenvolvimento para Jupyter Notebooks
Boas práticas de desenvolvimento para Jupyter NotebooksBoas práticas de desenvolvimento para Jupyter Notebooks
Boas práticas de desenvolvimento para Jupyter Notebooks
Joel Pinho Lucas
 
Discovering Lookalike audiences at scale for digital publishing with Spark MLlib
Discovering Lookalike audiences at scale for digital publishing with Spark MLlibDiscovering Lookalike audiences at scale for digital publishing with Spark MLlib
Discovering Lookalike audiences at scale for digital publishing with Spark MLlib
Joel Pinho Lucas
 
Casos de Uso de Big Data e Ciência de Dados no Mercado
 Casos de Uso de Big Data e Ciência de Dados no Mercado Casos de Uso de Big Data e Ciência de Dados no Mercado
Casos de Uso de Big Data e Ciência de Dados no Mercado
Joel Pinho Lucas
 
Building machine learning applications locally with spark
Building machine learning applications locally with sparkBuilding machine learning applications locally with spark
Building machine learning applications locally with spark
Joel Pinho Lucas
 
Conceitos e práticas em Sistemas de Recomendação
Conceitos e práticas em Sistemas de RecomendaçãoConceitos e práticas em Sistemas de Recomendação
Conceitos e práticas em Sistemas de Recomendação
Joel Pinho Lucas
 
Bigdata gameverse
Bigdata gameverseBigdata gameverse
Bigdata gameverse
Joel Pinho Lucas
 

Mais de Joel Pinho Lucas (7)

Engajando usuários nos portais de conteúdo digital da Globo através de Sistem...
Engajando usuários nos portais de conteúdo digital da Globo através de Sistem...Engajando usuários nos portais de conteúdo digital da Globo através de Sistem...
Engajando usuários nos portais de conteúdo digital da Globo através de Sistem...
 
Boas práticas de desenvolvimento para Jupyter Notebooks
Boas práticas de desenvolvimento para Jupyter NotebooksBoas práticas de desenvolvimento para Jupyter Notebooks
Boas práticas de desenvolvimento para Jupyter Notebooks
 
Discovering Lookalike audiences at scale for digital publishing with Spark MLlib
Discovering Lookalike audiences at scale for digital publishing with Spark MLlibDiscovering Lookalike audiences at scale for digital publishing with Spark MLlib
Discovering Lookalike audiences at scale for digital publishing with Spark MLlib
 
Casos de Uso de Big Data e Ciência de Dados no Mercado
 Casos de Uso de Big Data e Ciência de Dados no Mercado Casos de Uso de Big Data e Ciência de Dados no Mercado
Casos de Uso de Big Data e Ciência de Dados no Mercado
 
Building machine learning applications locally with spark
Building machine learning applications locally with sparkBuilding machine learning applications locally with spark
Building machine learning applications locally with spark
 
Conceitos e práticas em Sistemas de Recomendação
Conceitos e práticas em Sistemas de RecomendaçãoConceitos e práticas em Sistemas de Recomendação
Conceitos e práticas em Sistemas de Recomendação
 
Bigdata gameverse
Bigdata gameverseBigdata gameverse
Bigdata gameverse
 

Utilizando Machine Learning e Java para classificar o conteúdo de páginas Web

  • 1. Utilizando Machine Learning e Java para classificar o conteúdo de páginas Web 30/06/2016 Joel Pinho Lucas 1
  • 2. Agenda • Personalização de conteúdo na Web • Classificação de páginas Web baseada em interesses • Classificação baseada em texto • Implementação dos algoritmos • Extensão para Latam (espanhol) • Cases e Resultados 2
  • 3. Personalização de conteúdo na Web 3 Banner Banner ? ??
  • 4. • Dados: 1.5 bilhões de novos registros / dia • Métricas para medir eficiência: CTR (Click Through Rate) 50% maior • Resposta rápida: RTB (Real Time Bidding) precisa ser em até 300ms 4 Personalização de conteúdo na Web - Tail Target
  • 5. Personalização de conteúdo na Web 5 Tag u=1507000A8451375B184024E Cookie
  • 6. Classificação de Interesses • Processar e classificar conteúdo de web links diariamente 6
  • 8. Classificação Baseada em Texto Texto Relevante Extrator de Texto Crawling Representação de um link web: 1 15749 aluguel 2 12208 casa 3 11456 julho 4 10272 dia 5 9232 sao paulo 6 9177 procurar 7 8958 vender 8 8779 imóvel 9 8664 praia 10 8191 garagem 11 7626 carro 12 7580 preço 13 7453 quarto 14 7246 construção ……. n Extrator de Termos Frequentes Interesse Classificador
  • 9. 1. Obter um conjunto de dados atribuindo um label (classe) em cada registro 2. Transformar (pré-processar) os dados e obter as features a serem treinadas 3. Dividir o conjunto de dados entre conjunto de treino e conjunto de teste 4. Treinar o conjunto de treino para obter um modelo de classificação 5. Usar o conjunto de teste (retirar label) para avaliar o modelo 6. Retornar ao passo 4 se o resultado não for satisfatório Aprendizagem Supervisionada - Classificação 9
  • 10. Classificação Baseada em Texto 1. Obter um conjunto de dados atribuindo um label (classe) em cada registro 10 Crawler 1- http://www.futebolparatodos.com.ar/noticia1.php 2- http://www.futebolparatodos.com.ar/boca.php 3- http://www.futebolparatodos.com.ar/camp/1.php 4- http://www.futebolparatodos.com.ar/pagina2.php 5- http://www.futebolparatodos.com.ar/partidos.html … 101- http://mundod.lavoz.com.ar/futbol/boca_juniors.asp 102- http://mundod.lavoz.com.ar/futbol/pagina1.html 103- http://mundod.lavoz.com.ar/futbol/river.php 104- http://mundod.lavoz.com.ar/futbol/pagina2.php 105- http://mundod.lavoz.com.ar/futbol/noticia_partido.php … 3000- http://mundod.lavoz.com.ar/futbol/camp/equipos.php Tamanho da amostra precisa ser representativo!!
  • 11. Classificação Baseada em Texto 2. Preparar os dados e obter as features a serem treinadas 11 C. Filtrar Stop Words da língua em questão. Ex: eu, ao, para, é, etc. (Português) B. Tokenize A. Estrutura de dados onde as freqüência das palavras no texto sejam as features (bag of words). Ex:
  • 12. Classificação Baseada em Texto 2. Transformar (pré-processar) os dados e obter as features a serem treinadas 12 D. Stemming de texto Palavra Stem computador comput computadores comput computar comput bebezinho bebe bebe bebe bebezinhos bebe bebezinha bebe
  • 13. Classificação Baseada em Texto 2. Transformar (pré-processar) os dados e obter as features a serem treinadas 13 E. Preparar o input baseado em TF*IDF (Term Frequency * Inverse Document Frequency) Palavra TF IDF TF*IDF gol 5 1.217 6.085 dia 8 0.142 1.136 brasil 3 0.987 2.961 trave 3 1.681 5.043
  • 14. Classificação Baseada em Texto 3. Dividir o conjunto de dados entre conjunto de treino e conjunto de teste 80% treino 20% teste 60% treino 20% teste 20% validação holdout set-validation k-fold cross-validation
  • 15. Classificação Baseada em Texto 4. Usar o conjunto de treino para obter um modelo de classificação Classificador Finanças 1 12946 investimento 2 12555 cotação 3 12443 renda 4 11762 câmbio 5 10642 lucro 6 9110 salário 7 8783 bolsa 8 8661 brasil 9 8562 imóvel 10 8388 bolso 11 8217 real 12 8067 economia 13 8016 moeda 15 7742 renda Futebol 1 26682 gol 2 25256 jogo 3 19407 brasileirão 4 17268 time 5 15354 brasil 6 15297 copa 7 15117 jogador 8 15057 mundial 9 14425 atlético 10 14181 futebol 11 13081 partida 12 13042 vitória 13 12603 seleção 14 12301 bola Saúde 1 20385 idoso 2 18449 remédio 3 12278 farmácia 4 11094 doença 5 10228 receita 6 10027 grave 7 9701 médico 8 9203 vida 9 8266 aposentadoria 10 7371 oral 11 7331 saúde 12 6901 pílula 13 6840 bula 14 6619 inss Moda 1 42811 verão 2 37103 look 3 33971 desfile 4 28767 vestido 5 28149 moda 6 26167 março 7 26075 dia 8 23060 coleção 9 22901 modelo 10 21431 inverno 11 20444 bonita 12 19834 fashion 13 19353 festa 14 18471 peça … MODELO Conjunto de Treino
  • 16. Classificação Baseada em Texto 5. Usar o conjunto de teste (retirar label) para avaliar o modelo 16 Matriz de Confusão FUTEBOL MODA BELEZA CINEMA FUTEBOL 956 9 11 24 MODA 1 890 104 5 BELEZA 3 28 967 2 CINEMA 22 37 26 915
  • 17. Implementação dos Algoritmos Apache Mahout: • Projeto da Apache Software Foundation para disponibilizar algoritmos e implementações relacionadas a Machine Learning • Algoritmos para (predominantemente) Classificação, Filtragem Colaborativa, Clustering, Conjunto de items frequentes • Bibliotecas Java para operações matemáticas para machine learning, álgebra linear e estatística 17
  • 18. Implementação dos Algoritmos Apache Mahout: • Grande parte das implementações são rodam de maneira distribuída em clusters Hadoop (Map-Reduce) • Possui implementações single-node ou independentes do Hadoop 18
  • 19. Implementação dos Algoritmos Implementações disponíveis (06/2015) Source: Isabel Drost-Fromm, Software Developer, Apache Software Foundation/Nokia Gate 5 GmbH
  • 20. Implementação dos Algoritmos Regressão Logística: • Modelo de classificação usado para prever a probabilidade de ocorrência de um evento • Bastante utilizado para detecção de fraude, prever eficiência de anúncios (clique), probalidade de compra de items, etc 20
  • 21. Implementação dos Algoritmos Regressão Logística: • Função logística (Sigmoide): 21 • Equação com mais de uma variável (x) para estimar o valor do label: Aprender valores dos coeficientes!
  • 22. Implementação dos Algoritmos Regressão Logística: • Cost function (erro): leva em conta a diferença entre valor previsto e valor observado • SGD (Stochastic Gradient Descendent): algoritmo de otimização que tenta minimizar a cost function iterativamente 22
  • 23. Implementação dos Algoritmos Online Logistic Regression: • Algoritmo sequencial (não paralelo) 23 • Implementa SGD (online): iterar um a um dos exemplos do treino
  • 24. Implementação dos Algoritmos Feature vector encoding: • Codificar os vetores de input do algoritmo de classificação 24
  • 25. Implementação dos Algoritmos Adaptive Logistic Regression: • Executa múltiplos algoritmos de SGD testando diferentes parâmetros • Composto por 20 CrossFoldLearner • Escolhe o algoritmo que apresentou melhor modelo 25
  • 26. Implementação dos Algoritmos 26 1. Confusion Matrix / Precisão (> 96%) 2. Top Frequency Words Avaliação dos Modelos Treinados: Futebol 1 26682 gol 2 25256 jogo 3 19407 brasileirão 4 17268 time 5 15354 brasil 6 15297 copa 7 15117 jogador 8 15057 mundial 9 14425 atlético 10 14181 futebol 11 13081 partida 12 13042 vitória 13 12603 seleção 14 12301 bola
  • 27. Implementação dos Algoritmos 27 3. Teste funcional Avaliação dos Modelos Treinados: 4. Estatísticas de Top Visited Pages
  • 28. Extensão para Latam • Modelos novos (Argentina, Colômbia, México, EUA) • Sementes novas • Stemmer novo • Stop words por língua • Identificar Interesses sensíveis ao fator local: ex: Futebol, Política, Música, etc. contra ex: Moda, Beleza, Mergulho 28
  • 29. Extensão para Latam 29 México = 8745 Colômbia = 88 Argentina = 32 Chile = 23 Brasil = 3 Acessos por país: Detecção do País Algoritmo Detecção de Língua http://labs.cybozu.co.jp/en/ +
  • 30. Cases e Resultados Treinamento - Algoritmo Sites para Treino e Teste Lista de Categorias no Label Modelo Lista de URLs com Label atribuído Off - line Classificação utilizando os Modelos Conteúdo Textual Relevante do Link Interesse previsto ao Link Online
  • 31. Cases e Resultados Problema: corridosblindados.org classificado como CorridaDeAventura Estratégia: Inserir sites de “música narco” nas sementes de música 31
  • 32. Cases e Resultados Problema: notícias do MHM classificado como Futebol Estratégia: filtrar páginas que passaram pelo crawler e que não são de Futebol 32
  • 33. Cases e Resultados Problema: mudança de conteúdo de times de futebol Estratégia: atualizar sementes e re-treinar modelos periodicamente 33
  • 34. Perguntas - Contato ‣ Linkedin: http://br.linkedin.com/in/joelplucas/ ‣ Email: joel@tailtarget.com 34