faculdade assis gurgacz - fag coordenaÇÃo de pÓs...

20
FACULDADE ASSIS GURGACZ - FAG COORDENAÇÃO DE PÓS-GRADUAÇÃO ESPECIALIZAÇÃO EM BI E BIG DATA USO DE MACHINE LEARNING PARA A REDUÇÃO DE CHURN ENTRE DISCENTES DE EAD LEANDRO DE SOUZA CASCAVEL PR 2018

Upload: others

Post on 06-Dec-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

FACULDADE ASSIS GURGACZ - FAG

COORDENAÇÃO DE PÓS-GRADUAÇÃO

ESPECIALIZAÇÃO EM BI E BIG DATA

USO DE MACHINE LEARNING PARA A REDUÇÃO DE CHURN ENTRE

DISCENTES DE EAD

LEANDRO DE SOUZA

CASCAVEL – PR

2018

LEANDRO DE SOUZA

USO DE MACHINE LEARNING PARA A REDUÇÃO DE CHURN ENTRE

DISCENTES DE EAD

Trabalho de Conclusão do Curso de

Especialização em BI e Big Data, Faculdade

Assis Gurgacz - FAG.

Orientador: Wendel Brustolin

CASCAVEL – PR

2018

SUMÁRIO

INTRODUÇÃO ........................................................................................................................ 1

1 IDENTIFICAÇÃO ............................................................................................................... 2

1.1 Nome 2

1.2 Título do projeto 2

1.3 Orientador 2

1.4 Área e sub-área de estudo 2

2 OBJETIVOS ......................................................................................................................... 2

2.1 Objetivo geral 2

2.2 Objetivos específicos 2

3 JUSTIFICATIVA ................................................................................................................ 3

4 FUNDAMENTAÇÃO TEÓRICA ...................................................................................... 3

4.1 Revisão da literatura3

4.2 Identificação do problema de pesquisa 5

5 HIPÓTESES ......................................................................................................................... 5

6 DEFINIÇÃO DAS VARIÁVEIS ........................................................................................ 5

7 METODOLOGIA ................................................................................................................ 5

8 DESENVOLVIMENTO ...................................................................................................... 6

Configuração e extração de dados 6

Análise Exploratória 7

Entendendo as características 7

Preparação dos dados 8

Missing Values e NaNs 10

Transformação dos dados 11

Finalizando os ajustes dos dados 12

Modelagem Preditiva 12

4

Criação e avaliação do Modelo 13

Treinamento do algoritmo 13

Análise de resultados - Validando nosso modelo 13

9 CONCLUSÃO ...................................................................................................................... 15

REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................. 16

INTRODUÇÃO

A retenção de clientes é tão importante quanto recrutar novos, uma vez que mantê-los

é mais barato que conquistar outros. E no universo de Educação à Distância (EAD) isso é cada

vez mais evidente pois a falta de estímulo e as dificuldades para estudo podem desestimular a

persistência e esforço necessários.

Uma das métricas que deve ser mensurada é o churn rate – que é a taxa de

cliente/alunos que deixam de fazer parte da base (taxa de abandono).

Por meio de processos de Machine Learning (Aprendizagem de Máquina) é possível

descobrir padrões e a probabilidade de churn oferecendo assim a possibilidade de tomada de

ações para que a taxa de desistências seja minimizada.

Tendo estes pontos como referência deve-se definir os principais indicadores de

performance (Key Performance Indicators – KPIs) relacionados ao EAD e possuir uma base de

dados com eles para que sejam tratados e estudados por algoritmos de Machine Learning em

uma parte desta base com o intuito de “ensinar” o que leva um aluno à desistência do curso.

Quando estes pontos são analisados e aplicados a uma base nova pode-se ter uma

predição percentual do abandono individualmente e com tempo verificar quais fatores elevam

a taxa de churn.

Obviamente que em se tratando de educação há fatores externos que podem

influenciar, mas estes podem ser tratados em outro momento.

1 IDENTIFICAÇÃO

1.1 Nome

Leandro de Souza

1.2 Título do projeto

USO DE MACHINE LEARNING PARA A REDUÇÃO DE CHURN ENTRE

DISCENTES DE EAD

1.3 Orientador

Wendel Brustolin

1.4 Área e sub-área de estudo

Área: BigData

Sub-área: Machine Learning

2 OBJETIVOS

2.1 Objetivo geral

Este projeto tem por objetivo a análise de tendências a churn usando-se de Machine

Learning. Por meio de modelos aplicados a base de dados, descobrir padrões dos alunos que

desistem de seus cursos e prever quando um aluno tem grandes chances de desistir.

2.2 Objetivos específicos

Formular o problema principal a ser analisado

Definir a ferramenta de Machine Learning

Definir os principais KPIs para análise de Churn

3

Levantar uma base de dados (dataset) para treinamento

Definir uma ferramenta de Machine Learning

Aplicar o algoritmo a amostra para treiná-lo

Aplicar a um novo grupo para comparar os resultados obtidos

Aplicar a novos alunos

Descobrir e apresentar qual o comportamento recorrente e correlacionado dos

alunos que desistem

3 JUSTIFICATIVA

Perder clientes é caro para qualquer negócio, logo a manutenção deste representa

significativa fonte de receita recorrente com menor esforço. Antever quando um cliente está

propenso a desistir dá a chance de realizações de ações para aumentar o engajamento e a

satisfação dele e tratar de suas necessidades por meio de um serviço de concierge, campanhas

de marketing ou fazendo uso de conteúdos especiais.

4 FUNDAMENTAÇÃO TEÓRICA

4.1 Revisão da literatura

Um problema enfrentado desde a criação das instituições de ensino é a evasão escolar.

Com o passar dos anos os índices que eram considerados aceitáveis dentro de um movimento

natural do mercado. Mas para instituições de ensino privadas a evasão causa impactos diretos

na sua receita, logo cria-se o seguinte dilema: Como reter o maior número de alunos, mantendo-

os satisfeitos sem abrir mão da qualidade de ensino?

A desistência de serviços existe em todos os setores e vários mensuram a quantidade

de saída de clientes por meio de uma métrica conhecida como churn rate - termo usado para

descrever a rotatividade da clientela de serviços de uma empresa.

Na área de educação podemos dizer que o churn são as desistências, trancamento de

matrículas ou transferências para outras instituições e geralmente são situações motivadas por

fatores conhecidos como: inadimplência, desgaste no relacionamento com a instituição, falta

de interesse no curso escolhido ou valores diferentes na concorrência.

Também não são apenas clientes insatisfeitos e inadimplentes que evadem, alguns

fatores estão ocultos e são desconhecidos a uma primeira análise. Os alunos buscam, além da

4

qualidade do curso, atendimento personalizado, menores custos o que pode torná-los suscetíveis

à sedução de promoções e ofertas de Marketing de concorrentes.

Por falar em marketing, este historicamente tem atuado de forma a captar novos alunos

enquanto o processo conhecido como marketing defensivo (aquele que visa a manutenção da

base de alunos ativos) tem ficado em segundo ou terceiro plano.

Segundo a American Marketing Association (AMA), o custo para reter um cliente fica

entre cinco a quinze vezes menos que captar um novo cliente.

Há ainda a questão de que quanto mais tempo um aluno permanece na base, mais

propensos a indicar novos alunos eles se tornam.

Para isso, a instituição precisa desenvolver ações de retenção cada vez mais assertivas,

afim de satisfazer os anseios e individualidades dos alunos. É neste ponto que um processo de

aprendizado de máquina (Machine Learning) pode ser útil na orientação e definição de quais

fatores podem reduzir o churn rate.

Para entender melhor o papel do Machine Learning (ML) no processo, veja a definição

do termo segundo a Data Science Brigade:

“Machine Learning da maneira mais básica é a prática

de usar algoritmos para coletar dados, aprender com eles, e

então fazer uma determinação ou predição sobre alguma coisa

no mundo. Então ao invés de implementar as rotinas de software

na mão, com um set específico de instruções para completar uma

tarefa em particular, a máquina é “treinada” usando uma

quantidade grande de dados e algoritmos que dão e ela a

habilidade de aprender como executar a tarefa.”(Brigade, 2018)¹

Com o uso do ML, a maior parte do trabalho deverá se concentrar em três estágios e

seis passos da análise²:

1) Formulação do Problema

a. Reconhecimento do Problema → Evasão

b. Revisão de descobertas anteriores

2) Solução do Problema

a. Modelagem

b. Coleta de dados

c. Análise de dados

3) Resultados: comunicação e ação

5

a. Apresentação de resultados e adoção de providência

Isto posto, passamos para a seleção e preparação dos dados de clientes obtidos de um

sistema de CRM de uma empresa de ensino a distância (EAD) que contém um histórico de ação

de usuários no ano de 2017 para então iniciarmos as etapas posteriores.

4.2 Identificação do problema de pesquisa

Quais fatores levam os alunos a desistirem de seus cursos após já estarem matriculados

e estudando?

5 HIPÓTESES

Frustação com a área escolhida.

Dificuldades de aprendizado.

Optou pela concorrência.

Dificuldade financeiras (inadimplência).

Qualidade do serviço prestado (Materiais e Professores).

Dificuldade de uso da plataforma EAD (Ambiente Virtual de Aprendizagem -

AVA).

Mudança de estilo de vida (casamento, mudança, filhos,…)

6 DEFINIÇÃO DAS VARIÁVEIS

Identificar quais fatores levam os alunos a desistirem do curso

Definir quais as melhores ações preventivas para a redução do churn rate.

7 METODOLOGIA

Obter uma base de dados com histórico de atividades de alunos (desistentes e ativos)

para a criação de um modelo de Machine Learning.

Separar uma amostrar deste modelo e usá-la num processo chamado trainning.

Depois de treinar o modelo, rodar novamente agora com as informações de perfil de

um cliente desistente (a mesma informação de perfil que usamos para treinar o modelo), prever

a tendência de churn desse cliente e comparar o percentual retornado para homologar o

trainning.

6

8 DESENVOLVIMENTO

Para o desenvolvimento, utilizamos a linguagem Python pois ela é simples, de código

aberto e fácil de utilizar, mas isto não a torna pouco eficiente, muito pelo contrário: trata-se de

uma linguagem de alto nível, robusta e poderosa para a criação de aplicações, além de possuir

uma grande comunidade e uma vasta biblioteca de algoritmos, sendo comumente utilizada em:

Processos de efeitos especiais em filmes;

Back-end de sistemas de internet, CRMs e ERPs;

Análise de Dados;

Aprendizado de Máquina.

Fizemos o uso da linguagem em sua versão 3.6.4. Dividimos nosso processo em:

1. Configuração e extração de dados

2. Análise Exploratória e Limpeza dos dados

3. Pré-processamento dos dados

4. Criação e avaliação do Modelo

5. Análise de resultados

6. Aplicação

Configuração e extração de dados

Da base de clientes, extraímos uma parcela de modo aleatório da base por meio de uma

consulta SQL. Definimos quais os principais itens armazenados de log dos clientes seriam mais

úteis e geramos um dataset contendo mais de 7,8K de registros.

Formulação do Problema

Preparação dos dados

Pré-processamento

Criacão e avaliação do

modelo

Análise dos resultados

Aplicação

7

Análise Exploratória

A análise exploratória de dados é o processo inicial de análise em que resumimos

características de dados como padrão, tendências, outliers e testes de hipóteses usando

estatística descritiva e visualização.

Preparamos o nosso dataset, que é composto de informações relacionadas a mais de

78.000 clientes que incluem variáveis independentes como: sexo, tempo de cadastro em dias,

quantidade de eventos assistidos, quantidade de cursos adquiridos, ticket acumulado,

quantidade de minutos de aulas assistidas e se possuem os dois aplicativos da escola instalado.

A variável dependente que nos interessa é se o aluno/cliente desistiu (churned) ou não

do curso, ela será indicada por 1 quando ocorreu a desistência e 0 quando ele permaneceu no

curso.

Para determinar quais são as variáveis responsáveis pelo Churn e se o aluno desistiu

ou não, realizamos testes de análise de Regressão Linear Múltipla com dados para determinar

quais características têm maior influência. Esta análise não será explicada aqui por não ser o

foco deste trabalho, basta dizer que a função utilizada foi: 𝑦 = 𝑏0 + 𝑏1𝑥1 + 𝑏2𝑥2 + ⋯ + 𝑏𝑛𝑥𝑛,

onde y é nossa variável alvo, b nossa constante , bn o coeficiente e xn a característica (feature).

Entendendo as características

Precisamos entender o que significa cada coluna para podermos extrair o máximo de

informações e gerar outras que nos permitam trazer uma assertividade maior de nosso

algoritmo:

id_person: É a chave primária que identifica o aluno no sistema.

sexo: Gênero do aluno.

app_anotacoes: Aplicativo de anotações que o aluno pode instalar e utilizar durante

as aulas para criar marcações e notas.

app_aulas: Aplicativo disponível para assistir às aulas em dispositivos móveis.

cursos_free: Cursos de degustação que o aluno pode se inscrever para ter acesso

gratuitamente.

ticket_acumulado _total: Valor total investido pelo aluno.

qtd_minutos_aulas_assistidas: Somatório de minutos de videoaulas assistidas pelo

player do site.

ultimo_login: Quantidade de dias da realização do último login até a data da coleta

dos dados.

8

Preparação dos dados

De nosso dataset inicial, definimos alguns parâmetros para limpeza e normalização de

nossos dados. Por considerarmos mais interessante determinamos que o considerar apenas

alunos com até 2 anos de cadastro, que tenham assistido a pelo menos uma aula.

Reduzimos assim, de 78K para 38K de registros

Neste ponto é necessária uma normalização dos dados para preparamos para os

trabalhos iniciais.

A primeira coisa que precisamos fazer é importar todas as bibliotecas python

relevantes que precisaremos para nossa análise. Bibliotecas como numpy, pandas, statsmodels

e scikit-learn são frequentemente utilizadas pela comunidade de ciência de dados.

Daremos a seguir um breve resumo sobre as bibliotecas essenciais utilizadas no

processo. As definições foram extraídas do livro Python para Análise de Dados, que tem como

autor o próprio criador da biblioteca pandas: Wes McKinney.

Pandas: “Oferece estrutura de dados de alto nível e funções, projetadas para fazer

com que trabalhar com dados estruturados ou tabulares seja rápido, fácil e expressivo... O

pandas combina as ideias de processamento de alto desempenho de arrays da NumPy com

recursos flexíveis de manipulação de dados das planilhas e dos bancos de dados relacionais

(como o SQL). Ele disponibiliza uma funcionalidade sofisticada de indexação para facilitar a

reformatação, a manipulação, as agregações e a seleção de subconjunto de dados. ”

Matplotlib: “A matplotlib é a biblioteca Python mais popular para fazer plotagens e

gerar outras visualizações de dados bidimensionais”

Scikit-learn: “Transformou-se no principal kit de ferramentas de propósito geral para

aprendizado de máquina... inclui submódulos como: Classificação, regressão, redução de

dimensionalidade, seleção de modelos e pré-processamento. ”

Statsmodels: “É um pacote de análise estatística...contém algoritmos para estatística

clássica e econometria. ”

Para interpretar o Python, vamos utilizar a ferramenta Jupyter Notebook por sua

capacidade de trabalhar com o desenvolvimento de forma interativa.

Criamos um novo arquivo e começamos pela importação das bibliotecas e alguns

módulos:

9

Importamos nosso dataset e solicitamos a visualização das 5 primeiras linhas com a

instrução head().

Neste ponto, é necessário separarmos o dataset em base de treino e base de teste.

Extraímos 25% da base e a reservamos para ver a assertividade de nosso modelo. Os 75%

restantes utilizamos para treiná-lo. Utilizamos uma função do Sklearn chamada ShuffleSplit.

Não iremos nos aprofundar nisto por não ser o core de nosso estudo.

Continuando.

Podemos ter uma visão inicial do total de registros e gerarmos um gráfico que nos dará

uma ideia da quantidade de Churn.

10

Missing Values e NaNs

É comum que haja no dataset informações faltantes. O Pandas os nomeia como Not-

a-Number (NaN). Vamos preencher com as informações que estão faltando.

Vamos localizar os campos com valor NaN:

Vamos ajustar estes valores.

No caso do ultimo_login, como temos apenas um campo vamos atribuir o valor 0

(zero) a ele.

11

O mesmo raciocínio vamos usar para os cursos_free:

No caso da idade, faremos algo diferente, como ela pode ser relevante, nos campos

NaNs vamos atribuir a média do conjunto.

Transformação dos dados

Nesta etapa, vamos transformar o que é variável categórica (texto) em variáveis

numéricas para facilitarmos o trabalho de nosso modelo matemático, pelo fato de que eles são

textos e nossos algoritmos tratam apenas números. Nosso dataset possui apenas 3 colunas não

numéricas: sexo, app_anotacoes e app_aulas.

Vamos começar pela categoria sexo, criando um dicionário com os itens, criando um

mapeamento:

Executando os comandos acima teremos:

E passando para isso:

12

Finalizando os ajustes dos dados

Para terminarmos a preparação de nossos dados e sua preparação para o modelo,

vamos eliminar alguns dados que não são úteis, como é o caso do id_person.

Modelagem Preditiva

Começaremos a implementar nosso algoritmo de Machine Learning para prever o

nosso Churn. Para garantir que não ajustemos nosso modelo aos dados causando um over-

fitting, dividimos os alunos/clientes em um conjunto de treinamento e um conjunto de teste,

este último com 25% do total de nossos registros.

O X terá as características que temos no banco de dados e a partir delas, informamos

ao modelo: é isso que queremos predizer (Y), ou seja, passamos um conjunto de características

é dizemos se houve ou não Churn para que o modelo depois consiga predizer analisando as

características fornecida de outros alunos.

X_train: Base do treinamento com todas as informações com exceção do target

(Churn).

Y_train: O Churn, ou seja, é o valor que buscamos.

X_test: Nossa base de teste que vamos utilizar para saber se a base está acertando

ou não.

Separaramos nossa base para o teste e treino:

13

Criação e avaliação do Modelo

Utilizamos um método de aprendizado denominado Random Forest. Este algoritmo

induz várias árvores de decisão e faz uma avaliação por meio de um processo de votação.

Treinamento do algoritmo

Criamos nosso primeiro modelo usando um random forest classifier

Estamos dizendo que baseado nas características de X_train, temos y_train

Com isso já temos um modelo que podemos utilizar para predizer nossos valores.

Agora podemos pegar dados de nossa base de teste (test_df) e pegaremos nosso modelo

(random_forest) que treinamos com a função fit.

Veja que obtemos uma acurácia de quase 84%.

Análise de resultados - Validando nosso modelo

Utilizamos uma técnica de Matriz de confusão. Existem quatro possibilidades na

avaliação de desempenho do nosso classificador:

Verdadeiros positivos (VP): Alunos que deram Churn quando o modelo previu

(modelo acertou)

Falsos negativos (FN): Alunos que deram Churn quando o modelo previu que não

dariam (modelo errou)

14

Verdadeiros negativos (VN): Alunos que não deram Churn conforme o modelo

previra. (modelo acertou)

Falsos positivos: (FP) Alunos que não deram Churn quando o modelo previu que

dariam (modelo errou).

Simplificando VP e VN são acertos do modelo enquanto FN e FP são erros. A

frequência de erros e acertos colocadas em uma tabela é a nossa matriz de confusão e com esta

informação podemos melhorar nosso modelo.

15

9 CONCLUSÃO

Ao produzir este estudo, notadamente percebe-se a necessidade de acompanhar o

aluno que em sistemas de Ensino à Distância não possui o mesmo contato e ao trabalhar com

ele de forma personalizada, identificando suas necessidades pode melhorar seus resultados e

manter seu interesse no curso Além disso, também nota-se a importância para a empresa em

manter seus alunos, o que reduz suas despesas na geração e captura de novas receitas e a

aplicação de mecanismos automatizados possibilita que setores como o de marketing crie

ações personalizadas para estes grupos, acionando-os no tempo certo e da forma correta.

Os métodos e mecanismos aqui apresentados não foram esgotados, o que permite que

sejam ampliadas as formas e meios de melhorar os processos de anti-churn.

Apesar disso, a situação dos clientes não pode ser analisada friamente apenas no uso

do software. Este é um problema bastante complexo para resolver e requer entender o cliente

por completo, integrando diversos tipos de dados e realizado diferentes análises, que não

necessariamente estão ligadas apenas ao uso da ferramenta.

REFERÊNCIAS BIBLIOGRÁFICAS

²DAVENPORT, Thomas. Dados demais! Como desenvolver habilidades analíticas

para resolver problemas complexos, reduzir riscos e decidir melhor. 1.ed – Rio de Janeiro,

Editora Campus, 2014

AMARAl, Fernando. Introdução à Ciência de Dados: Mineração de Dados e BigData.

1.ed – Rio de Janeiro, AltaBooks, 2016

Cortana Intelligence, Customer Churn Prediction. Disponível em:

<https://gallery.cortanaintelligence.com/Solution/Customer-Churn-Prediction-3 >. Acesso em

17 fevereiro de 2018.

Microsoft Azure, Previsão de rotatividade de clientes usando o Azure Machine

Learning Disponível em: <https://docs.microsoft.com/pt-br/azure/machine-

learning/preview/scenario-churn-prediction>Acesso em 17 fevereiro de 2018.

American Marketing Association, Customer Acquisition and Retention Spending: An

Analytical Model and Empirical Investigation in Wireless Telecommunications Markets.

Disponível em:

<https://www.ama.org/publications/JournalOfMarketingResearch/Pages/customer-

acquisition-and-retention-spending.aspx> Acesso em 17 de fevereiro de 2018.

¹Data Science Brigade, A Diferença Entre Inteligência Artificial, Machine Learning e

Deep Learning. Disponível em: <https://medium.com/data-science-brigade/a-diferença-entre-

inteligência-artificial-machine-learning-e-deep-learning-930b5cc2aa42> Acesso em 17 de

fevereiro de 2018.