pontifÍcia universidade catÓlica do paranÁ 4º bimestre ...laplima/ensino/tcc/concluidos/... ·...

38
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ ESCOLA POLITÉCNICA CURSO DE ENGENHARIA DE COMPUTAÇÃO 4º BIMESTRE RELATÓRIO TÉCNICO FINAL RESOLUÇÃO DO DESAFIO KDD CUP 2009 UTILIZANDO COMITÊ DE MÁQUINAS NOME: LUÍS FELIPE HARTMANN, LUÍS FELIPE NOGOSEKE ORIENTADOR: LEANDRO DOS SANTOS COELHO CURITIBA 2016

Upload: others

Post on 05-Nov-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ

ESCOLA POLITÉCNICA

CURSO DE ENGENHARIA DE COMPUTAÇÃO

4º BIMESTRE

RELATÓRIO TÉCNICO FINAL

RESOLUÇÃO DO DESAFIO KDD CUP 2009 UTILIZANDO COMITÊ DE

MÁQUINAS

NOME: LUÍS FELIPE HARTMANN, LUÍS FELIPE NOGOSEKE

ORIENTADOR: LEANDRO DOS SANTOS COELHO

CURITIBA

2016

Page 2: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

2

RESUMO

Este projeto objetiva apresentar soluções para o desafio proposto pela KDD

Cup 2009 (Knowledge Discovery and Data Mining Cup 2009 ): reconhecer

comportamentos de consumidores importantes para direcionamento de campanhas

de marketing , a partir de uma base de dados da Orange S.A. Esta base de dados foi

disponibilizada durante a KDD Cup 2009, sendo esta competição patrocinada pela

ACM (Association for Computing Machinery ). Para a solução deseja-se utilizar

abordagens de comitê de máquinas (ensemble methods ) oriundos de abordagens

de Aprendizado de Máquina. Neste contexto, para a implementação será adotada a

linguagem R, por esta estar disponível gratuitamente sob a GNU (General Public

License ), possuir muitas bibliotecas com ferramentas de Aprendizado de Máquina

disponíveis e facilidade de gerar gráficos, análises e imagens.

Page 3: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

3

1. INTRODUÇÃO

Os paradigmas da área do conhecimento denominada Aprendizado de

Máquina são utilizados para resolver uma ampla variedade de problemas

relacionados à classificação, regressão e agrupamento de dados. Conforme descrito

pelo teorema No Free Lunch (“não existe almoço de graça”), proposto por Wolpert

em [1], quando uma técnica de aprendizado de máquina apresenta melhor

desempenho em problemas de determinado contexto, isso implica que a mesma

técnica terá um desempenho negativo (não desejado) na mesma proporção em

outros contextos. Em geral, não é possível determinar de antemão qual técnica é a

mais adequada para determinado problema.

Uma técnica que vem sendo utilizada para contornar as deficiências de cada

método e enfatizar as potencialidades é o denominado comitê de máquinas, em que

se faz uma combinação de duas ou mais técnicas (ou modelos diferentes de uma

mesma técnica). Existem várias formas de se combinar os diferentes modelos em

abordagens de bagging , boosting e stacking [2].

Bagging propõe criar diferentes classificadores a partir da geração de

conjuntos de testes fazendo amostragem com reposição do conjunto original [3]. A

proposta do boosting é similar, porém modificando a probabilidade de uma amostra

ser sorteada de acordo com ela ter sido correta ou incorretamente classificada pelos

classificadores treinados anteriormente [4]. E o stacking (empilhamento) propõe

treinar um “meta-classificador” que tenha como entrada as saídas dos primeiros

classificadores [5].

Para aplicar e validar novas abordagens de criação de comitês de máquinas,

este projeto visa lidar com o problema proposto pela KDD Cup 2009: prever o

comportamento de clientes, mais especificamente a propensão de troca de provedor

de um serviço, de adquirir um produto ou realizar um upgrade , a partir de uma base

de dados [6].

O número de clientes que mudam de provedor de serviço (churn rate ) causa

um prejuízo de 4 bilhões de dólares todos os anos na América do Norte e na

Europa. Isto mais do que justifica o interesse das empresas em formas de fazer

Page 4: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

4

estas previsões para que ações possam ser tomadas o quanto antes para evitar a

perda de clientes [7].

O restante deste projeto está organizado da seguinte forma. Na seção 2 é

apresentado o detalhamento do projeto, começando por uma revisão de literatura

dos temas relevantes ao projeto, passando pelos fundamentos do problema a ser

resolvido, descrição do estado da arte, e detalhamento da solução desenvolvida por

este projeto. Na seção 3 detalha-se os procedimentos de teste e validação do

projeto. Na seção 4 é apresentado os resultados obtidos na implementação. E por

fim, na seção 5, são comentadas as conclusões decorrentes da execução deste

projeto e possíveis trabalhos futuros.

Page 5: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

5

2. DETALHAMENTO DO PROJETO

2.1. Revisão de Literatura

Nesta seção é feito um resumo da literatura relevante para a execução deste

projeto.

2.1.1. Comitês de Máquinas

Um comitê de máquinas é uma combinação de componentes ( ou máquinas)

individuais treinados para resolver um mesmo problema e que são combinados para

realizarem novas previsões. Este paradigma tem origem no trabalho de Hansen e

Salamon [8], que demonstraram que a combinação da saída de várias redes neurais

treinadas de forma independente melhora de forma significativa a capacidade de

generalização do modelo.

A Figura 1 apresenta a estrutura básica de um comitê de máquinas, a

entrada é alimentada para todas as m máquinas e suas saídas são combinada para

gerar uma saída.

Figura 1. Estrutura de um comitê de máquinas

Page 6: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

6

Um comitê é gerado em três etapas: geração de componentes, seleção de

componentes e combinação das saídas. Muitas vezes a seleção é omitida e todos

os componentes gerados são utilizados no comitê.

2.1.1.1. Geração de Componentes

Em seu trabalho, Krogh e Vedelsby [9] provaram que o erro de um comitê de

máquinas pode ser dividido em dois termos, um termo medindo o erro médio de

cada componente individual e um termo representando a descorrelação entre os

componentes. A conclusão que se retira do trabalho destes, é que o “bom”

desempenho de um comitê depende de seus componentes terem uma alta taxa de

acerto individualmente e serem o mais diferentes entre si possível. Em seu trabalho

Dietterich [10] afirma que componentes precisos e diversos são condições

necessárias e suficientes para que um comitê supere o desempenho individual de

qualquer um dos componentes. Opitz e Shavlik [11] provaram com testes empíricos

que comitês gerados seguindo esta linha tem boa generalização.

Os métodos para gerar componentes de comitês se baseiam, então, em

gerar componentes que difiram o máximo entre si em suas previsões. Existem três

possibilidades para se conceber componentes distintos para o mesmo problema:

variar o modelo, isto é, escolher diferentes modelos tais como redes neurais

artificiais, árvores de decisão, máquinas de vetor de suporte, entre outros., variar os

parâmetros iniciais do modelo, como variar os pesos iniciais de uma rede neural

artificial, por exemplo, ou variar os dados usados para treinar o componente.

Os métodos que são mais utilizados são os de variar os dados de

treinamento, e dentre estes os mais conhecidos são Bagging e Boosting . Bagging

foi proposto por Breiman [3], [11] e consiste em gerar vários conjuntos de

treinamento, criados a partir de amostragem uniforme e com reposição do conjunto

original de dados. Boosting foi proposto por [4] e consiste em gerar diversos

conjuntos de treinamento a partir de amostragem uniforme e com reposição do

conjunto inicial, mas a probabilidade de escolha de um dado exemplo depende da

sua contribuição para o erro nos componentes já gerados, ou seja, se os

Page 7: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

7

componentes anteriores cometeram erros ao classificar determinado exemplo, este

terá probabilidade maior de ser sorteado para fazer parte do conjunto de dados do

próximo componente.

2.1.1.1.1. Bagging

Bagging é uma técnica para a geração de conjuntos de treinamento distintos

a partir do conjunto original para que seja possível obter componentes

descorrelacionados.

A partir do conjunto original de N amostras, é feito uma re-amostragem com

reposição e probabilidade igual para todas as amostras de forma a gerar M (número

de componentes) conjuntos com N amostras. Visto que há reposição é possível que

determinada amostra se repita em um mesmo conjunto.

Breiman [12] comprovou que Bagging atua de forma eficiente em algoritmos

instáveis, algoritmos que são fortemente influenciados por diferenças no conjunto de

treinamento. Redes neurais artificiais e árvores de decisão são exemplos de

algoritmos instáveis e que podem se beneficiar do uso de Bagging .

2.1.1.1.2. Boosting

Diferentemente do Bagging , que gera todos os componentes de forma

paralela, Boosting gera seus componentes de forma sequencial. O conjunto de

dados utilizado por um componente depende do desempenho do componente

anterior sobre as amostras. Os exemplos que foram incorretamente classificados

pelo componente anterior terão maior probabilidade de serem escolhidos para fazer

parte do conjunto de treinamento do próximo classificador. Desta forma, o Boosting

tenta gerar novos classificadores capazes de prever corretamente os exemplos que

os classificadores anteriores não conseguiram classificar corretamente.

2.1.1.1.3. Bias Variância

O erro de um algoritmo de aprendizado pode ser dividido em três termos: Um

termo de bias , que representa o erro devido ao modelo escolhido não ser o mesmo

que o processo real. Um termo de variância , que representa o erro devido ao

Page 8: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

8

conjunto de dados de treinamento utilizado. E um termo de erro intrínseco que

representa ruído e não pode ser reduzido [13].

Esta decomposição do erro em termos de bias e variância é bastante

interessante, mas de difícil aplicação prática, pois para descobrir estes termos é

necessário conhecer a função que se está modelando, o que na prática não é

viável, ou então utilizar uma grande quantidade de dados para teste, o que reduz

muito os dados para treinamento [14].

Segundo Bauer e Kohavi [15], tanto Bagging quanto Boosting , reduzem o

erro diminuindo principalmente a variância, mas as duas técnicas também podem

reduzir a polarização (bias ).

2.1.1.2. Seleção de Componentes

Muitas vezes nem todos os componentes gerados contribuem de forma

positiva para o desempenho final do comitê de máquinas, pois mesmo com o uso de

estratégias como Bagging e Boosting os classificadores gerados podem ainda ser

muito correlacionados. Para garantir que apenas os componentes que melhoram o

desempenho fazem parte do comitê é possível fazer uma seleção após ter gerado

todos os componentes. Zhou et al. [16] demonstrou que o uso de seleção em

ensembles de redes neurais artificiais se mostra mais eficaz do que o uso de todos

os componentes gerados. A seleção pode ser feita de forma construtiva ou

destrutiva.

Na forma construtiva começa-se com o comitê vazio e escolhemos dentre os

componentes o que possui a menor taxa de erro. Então calcula-se a taxa de erro ao

adicionar um segundo componente ao comitê, o componente que mais reduzir a

taxa de erro entra no comitê. O processo se repete até que a taxa de erro se

mantenha ao comece a aumentar [17].

Na forma destrutiva começa-se com todos os componente dentro do comitê,

verifica-se então qual componente que ao ser removido melhora a taxa de erro, tal

componente é então removido. O processo se repete até a taxa de erro se manter

ou começar a aumentar [16].

Page 9: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

9

2.1.1.3. Combinação das Saídas

Com o conjunto final de componentes definido, é necessário determinar uma

forma de combinar as suas saídas para gerar a resposta final do comitê. Existem

diversas abordagens para fazer esta combinação na literatura, tais como: média,

combinação não-linear, empilhamento e votação [5], [8], [17], [18].

Média: método simples e popular de combinação. A saída do comitê é gerada a

partir de média simples, ou ponderada pelo desempenho de cada classificador, da

saída dos componentes. Faz se a média de quantos componentes escolheram a

classe, a classe com a maior média será a saída do comitê de máquinas [17].

Combinação não-linear: existem vários métodos de combinação não-linear, um

deles é a combinação por ranqueamento [18]. Neste caso as saídas dos

componentes são classificados com um rank, o maior valor indica a resposta que o

comitê acredita ser a mais provável. É possível definir uma função de custo para

minimizar o erro dos ranqueamentos e desta forma escolher a resposta mais

provável.

Generalização empilhada (stacking ): este método proposto por Wolpert [5] sugere

que um novo componente seja empilhada a saída do comitê, ou seja, as saídas dos

componentes do comitê serão entradas do novo componente que será treinado para

prever a saída correta a partir das saídas dos componentes.

Votação: método simples em que a saída escolhida é a classe que venceu uma

votação majoritária das saídas dos componentes [8].

2.2. Detalhamento do Problema

O problema que este projeto se propõe a resolver é o proposto pela KDD Cup

2009 (Knowledge Discovery and Data Mining Cup) : a partir de uma base de dados

prever a propensão de clientes de trocarem de provedor de serviço (churn ),

Page 10: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

10

comprarem novos produtos (appetency ), a comprar upgrades ou incluirem mais

serviços propostos aos clientes para melhorar a margem de lucro da venda

(up-selling ). Ou seja, três problemas de classificação. [19]

A base de dados disponibilizada para a competição é da empresa francesa

de telecomunicações Orange. A competição apresenta vários desafios: lidar com

uma base de dados bastante grande, milhares de variáveis (tanto numéricas quanto

categóricas), dados com bastante ruído, valores faltando e classes desbalanceadas

(poucas amostras de clientes que trocaram de provedor, por exemplo).

2.2.1. Análise da Base

A base de dados da competição é dividida em base de treinamento e de

testes, estando disponível em duas versões, uma reduzida com 230 variáveis e uma

completa com 15.000 variáveis, porém ambas possuem 50.000 entradas. A base

reduzida conta com 190 dados numéricos e 40 categóricos, já a completa possui

14.740 atributos numéricos e 260 categóricos. Os atributos-meta a serem previstos

estão em arquivos separados, um para churn , um para appetency e um para

up-selling . Estes atributos-meta possuem um valor binário, sendo “-1” uma

pretensão inexistente e “1” uma pretensão presente, portanto, o valor “1” no atributo

churn , representa um usuário que tende a mudar de provedor. A base de testes é

similar a base de treinamento porém sem os arquivos com os atributos-meta [19].

A base de treinamento apresenta classes desbalanceadas, como é possível

ver na Tabela 1, para o problema de appetency apenas 1,8% dos exemplos é

positivo. Além disso, em torno de 60% dos valores não estão presentes.

Problema Exemplos Positivos

Exemplos Negativos

Percentual de Positivos

Churn 3672 46328 7,3%

Appetency 890 49110 1,8%

Up-selling 3682 46318 7,4% Tabela 1. Distribuição de instâncias meta na base de treinamento

Page 11: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

11

Os dados desta base de dados foram alterados a fim de preservar a

identidade e informações dos clientes da empresa. É impossível, portanto, inferir

qual dado representa uma determinada característica do consumidor, entretanto

esta modificação não altera a possibilidade de uso desta base para a geração de

classificadores.

2.3. Estado da Arte

2.3.1. KDD Cup

Um classificador Naïve Bayes é um classificador extremamente simples, ele

assume independência entre as variáveis e faz predições baseadas na correlação

da variável com a meta. Utilizando este classificador Guyon et al. [19] obteve os

resultados descritos na tabela 2. Por ser um dos classificadores mais simples, os

seus resultados são o mínimo a ser superado.

O classificador já utilizado pela Orange utiliza um classificador Naïve Bayes

melhorado [19], [20], incluindo pré processamento e seleção de variáveis. Os

resultados deste classificador também estão na Tabela 2, o desafio da competição é

superar estes resultados, que são calculados através da área embaixo da curva

(Area Under the Curve - AUC).

Problema Naïve Bayes (AUC)

Classificador da Orange (AUC)

IBM Research (AUC)

Churn 0,6468 0,7435 0,7611

Appetency 0,6453 0,8522 0,8830

Up-selling 0,7211 0,8975 0,9038 Tabela 2. Resultados dos classificadores de outros grupos

O ganhador da competição foi um time de pesquisa da IBM (IBM Research ),

utilizando um comitê de máquinas composto de diversos classificadores diferentes.

Eles colocaram esforço no pré processamento de dados, na seleção de variáveis,

codificação de variáveis categóricas e tratamento de valores faltantes. Outros

Page 12: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

12

participantes premiados utilizaram comitês de árvores de decisão, filtros de seleção

de variáveis, boosting , entre outros métodos. Os resultados alcançados pela equipe

vencedora estão na Tabela 2 para fins de comparação futuro [19].

2.3.2. Trabalhos Relacionados

A possibilidade de prever o comportamento de clientes claramente traz

vantagens para as empresas, por isso várias empresas têm investido nesta área. A

abordagem de Mozer et al. [21] para prever o churn de empresas de

telecomunicações nos Estados Unidos da América envolve o uso de regressão

logística, árvores de decisão, redes neurais artificiais e boosting . Um comitê de

redes neurais foi treinado e usado por uma empresa de telecomunicações, clientes

foram divididos em dois grupos, um de controle e um de tratamento. Os clientes do

grupo de tratamento que fossem previstos com risco de mudar de serviço foram

contatados pela empresa. Ao final de 6 semanas a taxa de churn do grupo de

controle foi de 3,7% e a do grupo de tratamento foi de 2,2%.

No trabalho de Burez e Van den Poel [22],[22] modelos utilizando Random

Forests e boosting foram testados em 6 bases de dados para prever churn . O

trabalho foi focado no tratamento da falta de balanceamento das classes nas bases

de dados, mas o resultado demonstra o melhor desempenho dos métodos de

comitê de máquinas sobre implementações únicas, tal como a regressão logística.

2.4. Descrição da Implementação do Projeto

Este projeto desenvolveu uma solução para o problema proposto pela

KDD-Cup 2009 utilizando comitês de máquina heterogêneos. O produto final

entregue é uma aplicação na qual o usuário poderá inserir um arquivo com dados

de clientes e receber as previsões de churn , appetency e up-selling . A Figura 2

apresenta um diagrama de blocos do projeto.

Page 13: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

13

Figura 2. Diagrama de blocos do software final

A parte principal do projeto é portanto a geração dos três modelos para

fazerem as previsões. Isto envolve a preparação dos dados, escolha das variáveis a

serem utilizadas, geração dos componentes, seleção dos componentes e

combinação das saídas. A Figura 3 mostra o diagrama de blocos que representa

este processo.

Figura 3. Diagrama de blocos geral do gerador de classificadores

2.4.1. Tecnologias Escolhidas

O projeto e todos os seus módulos foram desenvolvidos utilizando a

linguagem R, distribuída gratuitamente sob a GNU (General Public License ) [23].

Para as técnicas específicas utilizadas, foram necessárias bibliotecas específicas da

linguagem R, todas disponíveis gratuitamente.

O R foi escolhido por ser uma linguagem criada para o uso em aplicações de

estatística e aprendizado de máquina. Além disto o R apresenta uma grande

capacidade e facilidade de gerar gráficos e imagens, o que auxilia na verificação

durante o desenvolvimento e na produção de relatórios. Outra característica

presente no R é a possibilidade de ligar com código C, C++ e Fortran durante

Page 14: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

14

execução, portanto se alguma tarefa computacionalmente intensiva precisasse ser

executada, seria possível implementá-la em C++ e manipular os objetos do R

diretamente [24], [25].

2.4.2. Criação dos Comitês

A criação dos comitês de máquinas é bastante complexa e com várias partes

que podem ser implementadas de diversas maneiras. Nas subseções seguintes são

descritos como foram implementadas cada etapa.

2.4.2.1. Pré Processamento

A primeira etapa para a criação dos comitês é preparar os dados de forma

que eles estejam formatados adequadamente para serem utilizados pelos

algoritmos de aprendizado de máquina. Além disso existem várias alterações que

podem ser feitas nos dados que podem melhorar o desempenho dos

classificadores, como normalizar variáveis numéricas e a forma de representar

variáveis categóricas.

Para as variáveis da base de dados tipo numérico os valores faltantes foram

substituídos pela média da variável. Os atributos numéricos também foram

normalizados de forma a obter, para cada um, média próxima de zero e variância

próxima de 1.

Para as variáveis do tipo categórico os valores faltantes foram substituídos

pela moda. Para atributos categóricos com mais de 10 níveis, foram mantidos os 9

níveis mais frequentes e todos os outros foram agrupados em um novo nível.

2.4.2.2. Seleção das Variáveis

A base de dados fornecida contém 230 variáveis, uma quantidade

consideravelmente grande. O uso de todas estas variáveis não era aconselhável,

pois provavelmente algumas variáveis possuem pouco ou nenhum valor preditivo

para as metas que desejamos prever, variáveis repetidas e variáveis redundantes.

Portanto foi necessário fazer uma análise de quais variáveis são relevantes e

possuem valor preditivo significante.

Page 15: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

15

A primeira etapa foi a verificação da existência de atributos constantes, ou

seja, com valores idênticos para todos os exemplos, estes atributos foram

eliminados.

O segundo passo foi eliminar atributos que tivessem mais de 60% dos dados

faltantes, pois isto implica que o atributo possui uma quantidade reduzida de

informação.

O terceiro passo foi procurar por variáveis redundantes, com alta correlação.

Para esta função utilizamos uma funcionalidade da biblioteca caret , o método

“findCorrelation ”, e eliminamos atributos que possuíam correlação igual ou superior

a 75%. Abaixo está um exemplo de código em R fazendo esta operação.

# calcular matriz de correlação corr <- cor(Dataset) # Encontrar variáveis com correlação maior do que 75% AltaCorr <- findCorrelation(corr, cutoff=0.75) # Remover variáveis com alta correlação da base NovoDataset <- subset(Dataset, select=-AltaCorr)

2.4.2.3. Geração de Componentes

Com os dados formatados e as variáveis a serem utilizadas escolhidas, o

próximo passo é gerar todos os classificadores que poderão fazer parte do comitê.

A geração e seleção foram feitas seguindo [26], porém os algoritmos de

classificação base utilizados, não foram implementados, foram utilizados pacotes

disponíveis para a linguagem R, já que o foco do projeto foi a geração dos comitês

de máquinas. Os classificadores utilizados foram: árvores de decisão [29], florestas

aleatórias [32], redes neurais, GBM [27] e XGBoost [28], descritos a seguir..

2.4.2.3.1. Floresta Aleatória

Floresta aleatória é um comitê de máquinas que gera um grupo de árvores de

decisão pelo método de Bagging ou Boosting . As árvores de decisão são algoritmos

que se baseiam em classificar uma entrada a partir de hierarquias entre seus

atributos. Para a geração de componentes de árvore de decisão, foi usado o pacote

Page 16: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

16

“rpart”, que possuí implementação similar ao descrito por [29]. Abaixo está um

exemplo de pseudocódigo para implementação de uma árvore de decisão.

Árvore de Decisão: 1 Árvore(nó_pai): 2 | Selecionar casos do nó pai 3 | Para cada atributo Ai 4 | | Calcular o ganho de informação ao separar por Ai 5 | | Se ganho de Ai > A_melhor: A_melhor <- Ai 6 | FIM 7 | Se ganho < 0 : FIM 8 | Criar nó de decisão em A_melhor 9 | Para cada valor Vi de A_melhor : Árvore(Vi) 10 FIM

Para cada um dos modelos, foi gerado dois grupos com um número finito de

árvores, utilizando uma parcela de 56.25% da base de dados, sendo um grupo de

cem e outro de duzentos e cinquenta, para cada um dos problemas à ser resolvido.

Para permitir que diferentes árvores fossem geradas pelo mesmo algoritmo, os

exemplos de entrada para cada componente foram re-amostrados de acordo com

as estratégias de bagging descrita a seguir.

Bagging: 1 D <- dados de treinamento 2 N <- quantidade de entradas por componente 3 X <- quantidade de componentes a ser gerado 4 Para X 5 | Selecionar um subconjunto de D de tamanho N -> S, aleatoriamente 6 | Treinar um Componente Ci com o conjunto S 7 | Armazenar Ci 8 FIM

Após a geração dos dois grupos citados, o grupo com cem árvores passou

por um processo de seleção construtiva de componentes, já que nem todos os

componentes gerados podem trazer um ganho de desempenho para o comitê. Esta

seleção de componentes tem como objetivo obter o melhor comitê sem fazer

overfitting . Esta seleção foi implementada segundo o pseudo código a seguir,

utilizando uma parcela de 18.75% da base de dados:

Page 17: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

17

Seleção construtiva: Começa-se com o comitê vazio e é escolhido componente

mais reduz a taxa de erro, até não ser possível melhorar a taxa de acerto, como

descreve o pseudocódigo a seguir:

1 Iniciar um Ensemble vazio 2 Enquanto melhora > 0: 3 | Para cada componente Ci não adicionada ao ensemble 4 | | Combinar Ci ao Ensemble 5 | | Calcular a performance do ensemble 6 | | Retirar Ci do Ensemble 7 | FIM 8 | Selecionar a componente com maior melhora 9 | Se melhora do componente selecionado é > 0 10 | | Adiciona o componente ao Ensemble 11 | FIM 12 FIM

Por fim, foram gerados três modelos para cada um dos problemas, sendo um

uma floresta aleatória com cem árvores, outro modelo com uma parcela das cem

árvores do modelo anterior e o último modelo com duzentas e cinquenta árvores.

Estes modelos foram testados com os 25% restantes da base de dados, para que

não fosse utilizado para teste dados utilizados anteriormente para treinamento.

2.4.2.3.2. Comitê Heterogêneo

Para este comitê testado, foi decidido combinar diferentes classificadores

base. Os classificadores base utilizados foram: árvore de decisão, bagging de

árvores, rede neural artificial e GBM (Gradient Boosting Machine ).

GBM: É em si um comitê de árvores de decisão, inicia treinando uma árvore e

medindo seu desempenho, então iterativamente novas árvores são criadas tendo

como foco melhorar a árvore anterior, acertar onde a anterior errou. Desta forma

fazendo uma otimização através de um gradiente descendente [27].

Redes neurais artificiais: É um algoritmo que cria uma rede de neurônios

artificiais, cujos pesos são atualizados durante várias iterações a partir do erro de

classificações, como apresentado no pseudocódigo abaixo. O pacote utilizado para

a geração dos componentes de redes neurais foi o “nnet”.

Page 18: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

18

1 Determinar os parâmetros de controle da rede 2 Inicializar Camadas da Rede 3 Inicializar Pesos 4 Para N iterações 5 | Selecionar dados de entrada 6 | Classificar cada entrada 7 | Calcular erro 8 | Propagar erro reversamente 9 | Atualizar Pesos 10 FIM 11 Retornar Rede

Cada um dos classificadores base foram treinados com uma parcela de

56.25% da base de dados. Para então combinar a saída de cada um destes

classificadores base foi implementado um stacking , cuja estrutura básica está

representada na Figura 4. Uma nova rede neural foi treinada, tendo como entrada

as previsões geradas por estes classificadores base utilizando uma outra parcela de

18.75% da base de dados.

A avaliação final do desempenho foi feita utilizando os 25% restantes da base

de dados.

Figura 4. Estrutura de uma rede neural formando um stacking

Page 19: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

19

Stacking : Sendo a base de dados D = {(x(1), y(1)), …, (x(N), y(N))}, x são os atributos

e y a variável meta, C1, …, CT são os os classificadores do primeiro nível e C’ o

classificador do segundo nível. O pseudocódigo para a implementação do stacking é

o seguinte:

# Treinamento dos classificadores do primeiro nível Para (t = 1, …, T) {

ht = Ct(D); } # Criar uma nova base de dados D’ = Ø Para (i = 1, …, N) {

For (t = 1, …, T) { zit = ht(x(i)) # previsões do primeiro nível

} D’ = D’ ∪ {((zi1, …, ziT), y(i)}

} # Treinar o classificador de segundo nível h’ = C’(D’)

2.4.2.3.3. XGBoost

O XGBoost é uma implementação baseada no modelo do GBM, capaz de

treinar as árvores de forma paralela e com uso eficiente de memória. Esta

implementação permite trabalhar com muitos parâmetros para um ajuste mais fino

do modelo, de forma a controlar a relação de bias e variância e controlar o

overfitting [28].

Page 20: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

20

2.4.3. Aplicação

A aplicação onde será utilizado os dados para classificação foi desenvolvida

para web. Um servidor roda o serviço e o usuário pode acessar a página web onde

pode realizar o upload de um arquivo com os dados de clientes dos quais deseja

prever a possibilidade de churn , appetency e up-selling . O servidor então processa

os dados e gera um arquivo com as previsões feitas, e disponibiliza o arquivo para

download pelo cliente.

Esta aplicação foi implementada utilizando a biblioteca em R shiny . Na

página é possível enviar um arquivo com os dados novos, gerar um arquivo com as

previsões para os três objetivos e também é possível ver gráficos que mostram a

distribuição das previsões.

O servidor ao receber o arquivo novo faz o mesmo pré processamento que

os dados de treinamento receberam, para que os dados estejam no formato

esperado pelos modelos treinados.

A Figura 5 mostra um diagrama de blocos do funcionamento da aplicação.

Figura 5. Diagrama de blocos da aplicação

Page 21: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

21

3. PROCEDIMENTO DE TESTES E VALIDAÇÃO DO PROJETO

Os testes dos classificadores foram realizados utilizando parte da base de

treinamento disponível, calculando a área embaixo da curva a partir dos parâmetros

de sensitividade e especificidade extraídos da matriz de confusão para cada um dos

três comportamentos. Seguindo o mesmo padrão utilizado pelo desafio da KDD-Cup

de 2009, sendo então possível comparar com os escores atingidos pelas equipes

participantes do desafio. Será considerado um bom classificador aqueles que

atingirem valores superiores aos atingidos pelo algoritmo Naïve Bayes, apresentado

na tabela 2.

3.1. Matriz de Confusão

A matriz de confusão é uma maneira fácil de comparar os resultados obtidos

por um classificador, com os resultados esperados. Nesta matriz temos nas linhas

os resultados esperados e nas colunas os resultados preditos pelo classificador,

como podemos observar na Tabela 3, onde são representadas três classes.

Tabela 3. Exemplo de matriz de confusão

Se espera, idealmente, uma matriz com todos os casos caindo em sua

diagonal principal, enquanto a sua volta se tem zeros. Porém em classificadores

reais é esperado se ter erros, sendo estes representados pelos valores fora da

diagonal principal, como é possível identificar na Tabela 3, onde na diagonal

principal se encontra a maior parte dos resultados. Sendo possível, também,

identificar em quais classes estes exemplos estão sendo classificadas

erroneamente.

Page 22: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

22

Caso o problema apresente apenas duas saídas possíveis, como o problema

descrito neste trabalho em que um consumidor pode ou não apresentar um

comportamento, pode se utilizar os termos positivos ou negativos verdadeiros, ou

falso positivo ou negativo, como exemplificado na tabela 4. Estes termos são

interessantes, pois, além de serem muito úteis para abstrair métricas para análise,

dependendo do problema pode ser melhor ter falsos positivos do que falsos

negativos, ou vice-versa.

Tabela 4. Exemplo de matriz de confusão binária

3.2. Sensibilidade e Especificidade

A sensibilidade (sen) é a probabilidade de acerto para predições positivas,

sendo calculado pela razão entre os verdadeiros positivos com o total de exemplos

positivos, como mostra a equação 1. Já a especificidade (esp) é a taxa de acerto de

predições negativas, sendo calculado a partir da razão entre a quantidade de

verdadeiros negativos com o número total de exemplos negativos, como mostra a

equação 2. [6]

(1)en p/(V p p)S = V + F

(2)sp n/(V n p)E = V + F

Onde

Vp é o Verdadeiro Positivo;

Fp é o Falso Positivo;

Vn é o Verdadeiro Negativo;

Fn é o Falso Negativo.

Page 23: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

23

3.3. Área Abaixo da Curva e Acurácia Balanceada

O cálculo do escore de cada um dos classificadores será realizado por meio

da área abaixo da curva de sensitividade por especificidade (AUC – Area Under the

Curve ), como apresentado pela figura 7. Neste caso, por se tratar de uma

classificação binária, será utilizando uma aproximação trapezoidal entre os pontos

(0, 1), (esp, sen) e (1, 0), também denominada acurácia balanceada (BAC -

Balanced Accuracy ), descrita pela equação 3. [6]

Figura 6. Representação da AUC e BAC

(3)AC esp en)/2B = ( + s

O escore final será calculado a partir da média aritmética entre cada um dos

três classificadores, sendo assim possível comparar os resultados deste trabalho

com os obtidos por outros grupos durante a KDD Cup 2009. Este escore geral

Page 24: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

24

também promove um parâmetro para comparar os diferentes classificadores

gerados durante o trabalho.

3.4. Plano de Testes

Nesta seção é descrito a estratégia de testes e os casos de testes que foram

utilizados para garantir a qualidade e garantir que que o projeto está correto. Esta

seção serve como guia a ser seguido para testar o projeto ao longo de seu

desenvolvimento. Os casos de teste a seguir foram divididos entre testes caixa preta

e caixa branca.

Testes Caixa Preta:

[TCP01]

Descrição: Testar o determinismo dos classificadores. Ao entrar com dados

repetidos, a previsão também deve se repetir.

Módulo testado: Módulo de Geração de Previsões.

Resultado esperado: As previsões feitas a partir das mesmas entradas

devem ser iguais confirmando que não existe nenhum componente aleatório nas

previsões.

Função Testada Passo Resultado Esperado

01 Envio de dados de entrada.

Inserir arquivo com dados de clientes utilizando o botão “Choose Input”. Todas as entradas do arquivo devem conter os mesmos dados.

O arquivo é enviado ao servidor que calcula as previsões. O usuário vê na tela a mensagem de upload completo.

02 Download das previsões. Selecionar o botão “Download Results”.

O servidor envia para o cliente o arquivo com as previsões.

03 Determinismo dos classificadores.

Comparar as previsões.

Todas as previsões devem ser iguais.

Page 25: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

25

Testes de Caixa Branca:

[TCB01]

Descrição: Testar funcionamento do algoritmo de pré processamento. Ao

entrar com dados preparados, ter na saída os dados processados da forma

esperada.

Módulo testado: Módulo de Pré Processamento.

Resultado esperado: Os atributos da base, tanto numéricos quanto

categóricos, sem valores faltantes, variáveis numéricas com média 0 e variáveis

categóricas com no máximo 10 níveis.

Função Testada Passo Resultado Esperado

01 Entrada de dados Inserir dados de teste Dados tratados são gerados

02 Pré Processamento Verificar os valores faltantes

Nenhum valor deve estar faltando

03 Pré Processamento Verificar normalização dos atributos numéricos

As colunas numéricas devem estar com média igual a 0

04 Pré Processamento Verificar níveis dos atributos categóricos

As colunas categóricas não devem conter mais de 10 níveis diferentes

Page 26: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

26

[TCB02]

Descrição: Teste do funcionamento do algoritmo de seleção de variáveis.

Módulo testado: Módulo de Seleção das Variáveis.

Resultado esperado: As variáveis com muitos valores faltantes devem ter

sido eliminadas, variáveis com correlação muito alta devem ter sido eliminadas.

Função Testada Passo Resultado Esperado

01 Entrada de dados Inserir dados de teste Variáveis são selecionadas

02 Seleção de variáveis Verificar a coluna com mais de 60% de valores faltantes

Coluna com mais de 60% de valores faltantes deve ter sido eliminada

03 Seleção de variáveis Verificar colunas com alta correlação

As colunas com correlação maior do que 75% devem ter sido eliminadas

[TCB03]

Descrição: Teste do funcionamento do algoritmo de seleção de

componentes.

Módulo testado:

Resultado esperado:

Função Testada Passo Resultado Esperado

01 Seleção dos componentes

Inserir componentes gerados

Lista de componentes selecionados é gerada

02 Rodar seleção de componentes

Uma sub lista de componentes é selecionada

03 Testar modelo com componentes selecionados

Resultado gerado é satisfatório, mas não necessariamente melhor do que utilizar todos os componentes

Page 27: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

27

[TCB04]

Descrição: Teste do funcionamento do algoritmo de combinação dos

componentes.

Módulo testado:

Resultado esperado:

Função Testada Passo Resultado Esperado

01 Combinação dos componentes

Inserir componentes regados no modelo

Os modelos são carregados no sistema

02 Insere dados de teste no modelo

Dados são carregados

03 Executa código de combinação de componentes

Resultado gerado é satisfatório, mas não necessariamente melhor do que utilizar apenas um componente

Page 28: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

28

4. TESTES E RESULTADOS

4.1. Árvores de decisão

Os testes das árvores geradas para cada um dos três problemas, foi

realizado utilizando a parcela de 20% de casos separados durante a etapa de

pré-processamento dos dados. Com os testes foi obtido as matrizes de confusão 5,

que correspondem aos modelos gerados para churn , appetency e upselling . O

escore AUC para cada um dos teste foram de 0.511, 0.526 e 0.709,

respectivamente, obtendo um escore final de 0.582, como mostra a tabela 6, isto

indica que utilizando apenas uma árvore de decisão não é possível obter resultados

satisfatórios, já que o resultado ficou muito abaixo do resultado usando Naive

Bayes, que seria o mínimo aceitável para o projeto.

Predito

Churn Appetency Upselling

-1 1 -1 1 -1 1

Real -1 11465 117 12240 37 11443 136

1 888 30 210 12 524 396

Tabela 5. Matrizes de confusão para árvore de decisão

Problema

Naïve Bayes

(AUC)

Classificador da

Orange (AUC)

Árvore de

decisão

Churn 0.6468 0.7435 0.5113

Appetency 0.6453 0.8522 0.5255

Upselling 0.7211 0.8975 0.7093

Escore final 0.6711 0.8311 0.5821

Tabela 6. escores para árvore de decisão

Page 29: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

29

4.2. Floresta Aleatória

Para realizar os testes dos modelos gerados com o algoritmo de floresta

aleatória implementado, foi utilizado a parcela de 20% de casos separados durante

a etapa de pré-processamento dos dados. Inicialmente foi realizado um teste

construindo 100 árvores sem realizar a seleção dos modelos, obtendo as matrizes

de confusão 7, que correspondem aos modelos gerados para churn , appetency e

upselling . O escore AUC para cada um dos teste foram de 0.659, 0.638 e 0.758,

respectivamente, obtendo um escore final de 0.685.

Os resultados gerados a partir deste primeiro teste mostraram um potencial

de ensembles funcionarem para classificação do problema descrito por este

trabalho, já que foi obtido um escore final 0.103 acima do resultado obtido usando

apenas uma árvore.

Predito

Churn Appetency Upselling

-1 1 -1 1 -1 1

Real -1 8484 3098 11959 318 9703 1876

1 381 537 155 67 296 624

Tabela 7. Matrizes de confusão para 100 árvores, sem seleção

Seguindo o mesmo modelo dos testes anteriores, foi realizada a seleção das

componentes, pelo método construtivo, usando como critério de parada um

incremento abaixo de 0.1%. Esta seleção resultou na escolha de 27, 14 e 10

árvores para churn , appetency e upselling , respectivamente. O teste destes modelos

reduzidos resultou nas matrizes de confusão apresentadas na tabela 8, com um

escore final de 0.657, que é um pouco abaixo dos resultados obtidos pelo modelo

completo, porém mostra que não é necessário um quantidade grande de modelos

para gerar um resultado satisfatório, porém pode ser necessário selecionar modelos

dentro de um grande grupo de modelos.

Page 30: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

30

Predito

Churn Appetency Upselling

-1 1 -1 1 -1 1

Real -1 9688 1894 12042 235 11037 542

1 520 398 175 47 434 486

Tabela 8. Matrizes de confusão para 100 árvores, com seleção

Por fim foi realizado um teste gerando uma floresta com duzentas e

cinquenta árvores de decisão, sem realizar a seleção de variáveis, com o resultado

dos testes apresentado nas matrizes de confusão da tabela 9. Com este teste foi

obtido um escore final de 0.695, porém é possível perceber que foi obtido um valor

muito baixo para a especificidade do classificador de taxa de churn, que foi de

0.635, enquanto que nos classificadores anteriores ficou acima de 0.730, o que

indica que com o aumento da quantidade de modelos, há um aumento da

sensibilidade do classificador com uma redução da especificidade do mesmo.

Predito

Churn Appetency Upselling

-1 1 -1 1 -1 1

Real -1 7357 4225 11804 473 8897 2682

1 271 647 142 80 242 678

Tabela 9. Matrizes de confusão para 250 árvores, sem seleção

Analisando a tabela 10, que apresenta os escores atingidos pelos modelos

gerados com o método de florestas aleatórias é possível verificar que o método de

florestas aleatória funciona, porém não parece promissor para classificar os

problemas apresentados, já que os modelos não conseguiram superar o resultado

do classificador da Orange. Este método, entretanto, não se mostrou promissor para

classificar appetency, pois embora tenha superado o modelo gerado por naive

bayes, ele ficou muito atrás do modelo da Orange. Este resultado foi obtido,

Page 31: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

31

provavelmente, pela natureza dos dados, já que na base de dados apenas 1.8% dos

casos são positivos para appetency .

Problema Naïve Bayes

Classificador

da Orange

100 Árvores

sem seleção

100 Árvores

com seleção

250 Árvores

sem seleção

Churn 0.6468 0.7435 0.6587 0.6350 0.6700

Appetency 0.6453 0.8522 0.6379 0.5963 0.6609

Upselling 0.7211 0.8975 0.7581 0.7407 0.7527

Escore final 0.6711 0.8311 0.6849 0.6573 0.6945

Tabela 10. Escores obtidos com árvores aleatórias

4.3. Comitê Heterogêneo

Os dois comitês utilizando stacking implementados foram testados da mesma

forma que os modelos anteriores. O stacking com os quatro classificadores (gbm,

árvore, bagging de árvores e rede neural) apresentou os seguinte escores AUC para

churn , appetency e upselling , respectivamente, 0.674, 0.724 e 0.748. Portanto o

escore final foi de 0.716. O resultado para o appetency foi melhor do que os

atingidos pelo comitê de árvores aleatórias, mas os outros dois parâmetros não

foram tão bons. As matrizes de confusão estão presentes na tabela 11.

Predito

Churn Appetency Upselling

-1 1 -1 1 -1 1

Real -1 5423 3263 6999 2209 7556 1128

1 190 498 52 115 258 432

Tabela 11. Matrizes de confusão para stacking com 4 modelos

Page 32: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

32

4.4. XGBoost

Os modelos gerados utilizando o algoritmo XGBoost apresentaram

bons resultados para upselling e para appetency , porém não para churn . Os escores

AUC para churn , appetency e upselling foram, respectivamente, 0.663, 0.741 e

0.763. O escore final ficou em 0.722. Na tabela 12 estão as matrizes de confusão

para a base de teste utilizando estes modelos.

Predito

Churn Appetency Upselling

-1 1 -1 1 -1 1

Real -1 6762 1924 7197 2011 7176 1508

1 312 376 50 117 208 482

Tabela 12. Matrizes de confusão para XGBoost

4.5. Performance dos Modelos Gerados

Embora não tenha sido possível gerar modelos melhores do que o utilizado

pela Orange, foi possível gerar modelos que superaram o modelo gerado pelo

método Naive Bayes com todos os comitês de máquinas implementados. O

algoritmo que apresentou a melhor performance geral foi o XGBoost, com um

escore final de 0.721, como mostra a tabela 13. O comitê heterogêneo, entretanto,

superou o XGBoost para a classificação de taxa de churn, portanto ao utilizar este

modelo, se tem um escore final de 0.725.

Problema

Naïve

Bayes

Classificador

da Orange

Árvore de

decisão

Floresta

Aleatória

Comitê

Heterogêne

o

XGBoos

t

Melhores

Modelos

Churn 0.6468 0.7435 0.5113 0.6700 0.6741 0.6625 0.6741

Appetency 0.6453 0.8522 0.5255 0.6609 0.7244 0.7390 0.7390

Upselling 0.7211 0.8975 0.7093 0.7581 0.7481 0.7624 0.7624

Final Score 0.6711 0.8311 0.5821 0.6963 0.7155 0.7213 0.7252

Tabela 13. Escores obtidos com os modelos gerados

Page 33: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

33

Outra análise possível de ser realizada do aumento da eficiência de uma

campanha de marketing, comparando uma campanha aleatória, com uma

campanha direcionada utilizando os dados gerados pelo aplicativo gerado. Como

mostra a tabela 14, onde é analisado a eficiência da campanha com o modelo

gerado por florestas aleatórias. Com esta análise é possível verificar que, embora o

escore AUC para appetency não tenha sido alto, o modelo seria suficiente para

causar um aumento de 838% na eficiência de uma campanha de marketing.

Problema

Campanha

Aleatória

Campanha

Direcionada

Aumento de

Eficiência

Churn 7.34% 17.36% 136.45%

Appetency 1.78% 16.67% 838.36%

Upselling 7.36% 47.28% 542.29%

Tabela 14. Comparação de eficiência de campanha de marketing

4.6. Aplicação

Como um produto final foi desenvolvida uma aplicação web incorporando os

modelos treinados. Nas figuras 7 e 8 estão apresentadas imagens da aplicação.

Figura 7. Tela para enviar dados e receber previsões da aplicação

Page 34: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

34

Figura 8. Gráfico gerado pela aplicação

Page 35: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

35

5. CONCLUSÃO

Este projeto desenvolveu uma aplicação que prevê o comportamento de

clientes da operadora de telecomunicações Orange S.A. com base nos dados

disponibilizados na KDD cup de 2009. Para isso foram implementados comitês de

máquinas fazendo combinações de diversos métodos de aprendizado de máquina,

assim como métodos de pré processamento e seleção de dados. O projeto,

entretanto, não implementou os algoritmos de base do comitê de máquinas,

utilizando, portanto, pacotes já disponíveis para a linguagem R.

Os resultados obtidos com os ensembles implementado durante o projeto

conseguiram classificar os clientes dentro dos três parâmetros estabelecidos,

superando o modelo Naive-Bayes simples em todos os objetivos. Embora os

resultados não tenham sido ideais na métrica AUC, eles demonstram o potencial da

abordagem de problemas de classificação por meio de ensembles .

No ponto de vista do produto final, é possível verificar que este software teria

um real impacto na gerência de campanhas de marketing. Pois com ele seria

possível direcionar as campanhas para aqueles clientes que pretendem deixar a

empresa ou àqueles que possuem predisposição a adquirir novos produtos da

empresa. A utilização deste software, portanto, reduziria custos de marketing e

aumentaria a eficiência das campanhas, resultando em lucro maior para a empresa.

A principal dificuldade encontrada foi em utilizar a base de dados maior, com

15000 colunas, pois o processamento acabava consumindo toda a memória. A

alternativa foi utilizar a base reduzida e investir nos métodos de seleção de variáveis

para trabalhar com o menor número de colunas possível.

Para continuar o trabalho seria necessário investir na parte preparação e

seleção das variáveis, pois não foram feitas muitas variações ou experimentos nesta

etapa. Seria possível testar outras formas de tratar variáveis faltantes, e

principalmente trabalhar na criação de novas variáveis, algo que não foi feito neste

projeto.

Page 36: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

36

REFERÊNCIAS

[1] D. H. Wolpert, “The Lack of A Priori Distinctions Between Learning Algorithms,”

Neural Computation. , vol. 8, no. 7, pp. 1341–1390, 1996.

[2] G. Seni and J. Elder, Ensemble Methods in Data Mining: Improving Accuracy

Through Combining Predictions . Morgan & Claypool Publishers, 2010.

[3] L. Breiman and B. Leo, “Bagging predictors,” Machine Learning , vol. 24, no. 2,

pp. 123–140, 1996.

[4] R. E. Schapire, “The strength of weak learnability,” Machine Learning , vol. 5, no.

2, pp. 197–227, 1990.

[5] D. H. Wolpert, “Stacked generalization,” Neural Networks , vol. 5, no. 2, pp.

241–259, 1992.

[6] S. Blog, “SIGKDD : KDD Cup 2009 : Customer relationship prediction.” [Online].

Disponível em: http://www.kdd.org/kdd-cup/view/kdd-cup-2009/Intro. [Acessado

em: 02-Jun-2016].

[7] L. Yan, Y. Lian, D. J. Miller, M. C. Mozer, and R. Wolniewicz, “Improving

prediction of customer behavior in nonstationary environments,” in IJCNN’01.

International Joint Conference on Neural Networks.

[8] L. K. Hansen and P. Salamon, “Neural network ensembles,” IEEE Trans.

Pattern Anal. Mach. Intell. , vol. 12, no. 10, pp. 993–1001, 1990.

[9] Krogh A & Vedelsby, “Neural network ensembles, cross validation, and active

learning,” Advancements in Neural Information Processing Systems , vol. 7, pp.

231–238, 1995.

[10] T. G. Dietterich, “An Overview of MAXQ Hierarchical Reinforcement Learning,”

in Lecture Notes in Computer Science , 2000, pp. 26–44.

[11] Opitz D & Shavlik, “Generating accurate and diverse members of a neural

network ensemble,” In Touretsky, D., Mozer, M., & Hasselmo, M. (Eds.),

Advances in Neural Information Processing Systems , vol. 8, pp. 535–541, 1996.

[12] L. Breiman and B. Leo, “Stacked regressions,” Mach. Learn. , vol. 24, no. 1, pp.

49–64, 1996.

[13] S. Geman, G. Stuart, B. Elie, and D. René, “Neural Networks and the

Bias/Variance Dilemma,” Neural Computation , vol. 4, no. 1, pp. 1–58, 1992.

Page 37: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

37

[14] L. Breiman, “Bias, variance, and arcing classifiers,” Tech , 1996.

[15] Bauer E & Kohavi, “An empirical comparison of voting classification algorithms:

Bagging, boosting, and variants,” Machine Learning , vol. 36, pp. 105–139, 1999.

[16] Z.-H. Zhou, Z. Zhi-Hua, W. Jianxin, and T. Wei, “Ensembling neural networks:

Many could be better than all,” Artificial Intelligence , vol. 137, no. 1–2, pp.

239–263, 2002.

[17] M. P. Perrone, L. N. Cooper, United States. Army Research Office, Brown

University. Institute for Brain and Neural Systems, United States. Office of Naval

Research, and National Science Foundation (U.S.), When Networks Disagree:

Ensemble Methods for Hybrid Neural Networks . 1992.

[18] K. A. Al-Ghoneim and B. V. Kumar, “Learning ranks with neural networks,” in

Applications and Science of Artificial Neural Networks , 1995.

[19] Guyon, Isabelle Lemaire, Vincent Boullé, Marc Dror, Gideon Vogel, David,

“Analysis of the KDD Cup 2009: Fast Scoring on a Large Orange Customer

Database,” Journal of Machine Learning Research Workshop and Conference

Proceedings , vol. 7, pp. 1–22, 2009.

[20] M. Boullé and B. Marc, “An Enhanced Selective Naïve Bayes Method with

Optimal Discretization,” in Studies in Fuzziness and Soft Computing , pp.

499–507.

[21] M. C. Mozer, R. Wolniewicz, D. B. Grimes, E. Johnson, and H. Kaushansky,

“Predicting subscriber dissatisfaction and improving retention in the wireless

telecommunications industry,” IEEE Trans. Neural Netw. , vol. 11, no. 3, pp.

690–696, 2000.

[22] J. Burez and D. Van den Poel, “Handling class imbalance in customer churn

prediction,” Expert Systems Applications , vol. 36, no. 3, pp. 4626–4636, 2009.

[23] “R: The R Project for Statistical Computing.” [Online]. Disponível em:

https://www.r-project.org/. [Acessado em: 03-Out-2016].

[24] “R: What is R?” [Online]. Disponível em: https://www.r-project.org/about.html.

[Acessado em: 17-Jun-2016].

[25] R. Ihaka, I. Ross, and G. Robert, “R: A Language for Data Analysis and

Graphics,” Journal of Computational and Graphical Statistics , vol. 5, no. 3, pp.

Page 38: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ 4º BIMESTRE ...laplima/ensino/tcc/concluidos/... · artificial, por exemplo, ou variar os dados usados para treinar o componente. Os

38

299–314, 1996.

[26] R. Caruana, C. Rich, N.-M. Alexandru, C. Geoff, and K. Alex, “Ensemble

selection from libraries of models,” in Twenty-first international conference on

Machine learning - ICML ’04 , 2004.

[27] J. H. Friedman, “Greedy function approximation: a gradient boosting machine,”

Annals of Statistics , pp. 1189–1232, 2001.

[28] “Introduction to Boosted Trees,” XGBoost . [Online]. Disponível em:

https://xgboost.readthedocs.io/en/latest/model.html. [Acessado em

15-Nov-2016].

[29] I. G. Maglogiannis, Emerging Artificial Intelligence Applications in Computer

Engineering: Real Word AI Systems with Applications in EHealth, HCI,

Information Retrieval and Pervasive Technologies . IOS Press, 2007.

ORIENTADOR

_____________________________ Prof. Dr. Leandro do Santos Coelho