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

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

  • 1.
    Utilizando Machine Learninge Java para classificar o conteúdo de páginas Web 30/06/2016 Joel Pinho Lucas 1
  • 2.
    Agenda • Personalização deconteú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údona Web 3 Banner Banner ? ??
  • 4.
    • Dados: 1.5bilhõ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údona Web 5 Tag u=1507000A8451375B184024E Cookie
  • 6.
    Classificação de Interesses •Processar e classificar conteúdo de web links diariamente 6
  • 7.
  • 8.
    Classificação Baseada emTexto 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 umconjunto 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 emTexto 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 emTexto 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 emTexto 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 emTexto 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 emTexto 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 emTexto 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 emTexto 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 ApacheMahout: • 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 ApacheMahout: • 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çõesdisponíveis (06/2015) Source: Isabel Drost-Fromm, Software Developer, Apache Software Foundation/Nokia Gate 5 GmbH
  • 20.
    Implementação dos Algoritmos RegressãoLogí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ãoLogí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ãoLogí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 OnlineLogistic Regression: • Algoritmo sequencial (não paralelo) 23 • Implementa SGD (online): iterar um a um dos exemplos do treino
  • 24.
    Implementação dos Algoritmos Featurevector encoding: • Codificar os vetores de input do algoritmo de classificação 24
  • 25.
    Implementação dos Algoritmos AdaptiveLogistic 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