Objetivo deste artigo não é discutir teorias de modelos de Machine Learning, mas sim mostrar na prática como um problema pode ser resolvido utilizando diferentes tecnologias de análise de dados, tais como: Spark, Python, R e KNIME.
Foi construída a seguinte arquitetura de Big Data Analytics para processar os modelos de machine learning apresentados neste artigo:
Este conjunto de plataformas permite desenvolver:
– Integração de dados e ETL
– Business intelligence (BI) e Analytics (BA)
– Computação de alto desempenho
– Processamento em Real-time e/ou em fluxo continuo
– Machine learning
Este workflow feito no KNIME contém alguns dos processamentos apresentados neste texto.
O problema da previsão da Perda de cliente (Churn)
O evento churn, por envolver a perda de clientes, traz um impacto direto na receita e imagem da empresa. Por isso é de extrema importância saber com antecedência quais os clientes estão em risco de deixarem a empresa, para desta forma, desenvolver ações proativas de retenção.
Este é um tipo de problema em que modelagem preditiva pode contribuir para gerar ações de retenção de clientes.
Este exemplo utilizou dados provenientes de telecom (Churn Analysis) contendo informações; sócio-demográficas, perfil de utilização dos serviços e etc.
O desenvolvimento do modelo de machine learning contemplou as seguintes etapas:
Obtenção das informações
Os dados foram obtidos através da conexão com o Apache Hive. O Hive é uma infraestrutura de data warehouse alicerçada no Hadoop. Esta infraestrutura permite fazer sumarização e consulta de base dados, útil especialmente para grandes volumes de dados.
Pré-processamento
Nesta etapa foi feita a obtenção dos dados e as devidas manipulações, filtros, transformação de variáveis, retirada dos missings, com o objetivo de preparar os dados para serem consumidos pelos modelos analíticos.
Treinamento dos dados
Os algoritmos de machine learning precisam ser treinados e avaliados. Por isso, para cada processamento dos modelos foram feitas partições do conjunto de dados (80%) para treinamento e o restante (20%) para avaliação.
Avaliação dos modelos
Após o treinamento de um determinado modelo, ainda não há certeza de que este modelo tenha aprendido algo relevante. Por isso é necessário fazer uma avaliação da sua assertividade, antes de aplicá-lo nos dados reais.
O teste da avaliação foi realizado com base nos resultados do modelo obtidos quando aplicado na amostra de 20% da base de dados, amostra esta que foi separada para este fim na etapa de treinamento.
Após aplicado o modelo nesta amostra, o resultados é confrontado com a realidade. Se o modelo predisse que um determinado cliente apresentaria o Churn e de fato o cliente tenha apresentado este evento, então ocorreu um acerto, caso contrário o modelo errou. A precisão foi medidas através da área sob a curva ROC, onde valores mais próximos de 1 indicam maior assertividade do modelo.
Curva ROC de processamentos de alguns modelos:
Resultados
Os resultados apresentados no dashboard feito no Spotfire, foram obtidos através do processamento do Modelo Random Forests processados no Python.
Processamentos do Spark, R e KNIME, foram muito semelhantes. A escolha de apresentar o Python no dashboard, não foi baseada em nenhum critério técnico.
Observando os resultados obtidos através das curvas ROCs apresentados no dashboard, inota-se que não houveram diferenças importantes entre os modelos processados independentemente da tecnologia.
Se o volume de informações fosse maior e/ou se fossem avaliadas outras características, possivelmente, as tecnologias apresentariam resultados diferentes inclusive em relação a performance, ainda que este post, não tenha discutido esta questão.
Outro resultado interessante foi que o KNIME, possibilitou amigável e eficiente integração com o R, Python, Spark e plataforma de Big Data em MapR.
Em breve promoverei um Webinar que irá apresentar com um pouco mais de detalhes este processo de analytics em Big Data .
——–
marcus@hupdata.com