Technical
Integração do Conhecimento de Domínio na Estimativa do Customer Lifetime Value
Paulo Maia · 6 de abril de 2020
Com o crescimento das Redes Neuronais Profundas na comunidade de Machine Learning, observamos uma abordagem cada vez mais centrada no ajuste e previsão, onde os profissionais de IA raramente dedicam tempo a pensar sobre o conhecimento de domínio já disponível e como integrá-lo nos modelos. Neste artigo, descrevemos como criamos redes neuronais profundas personalizadas que combinam conhecimento de domínio para estimar o customer lifetime value em múltiplos períodos, num projeto desenvolvido em parceria com uma das principais operadoras de telecomunicações em Portugal. Começaremos por explicar o problema e as diferentes abordagens exploradas na literatura, seguindo-se a nossa solução e o modo como a construímos incrementalmente.
Embora este artigo reflita ideias aplicadas na indústria de telecomunicações, pode ser facilmente extrapolado para qualquer outra indústria baseada em modelos de subscrição.
O que é Customer Lifetime Value e como estimá-lo?
O customer lifetime value é o valor presente líquido da margem de lucro acumulada de um cliente durante um determinado número de meses [1]. Especificamente, na indústria de telecomunicações, onde as transições de preço são limitadas, a margem mensal do cliente e a curva de sobrevivência do cliente são os dois componentes principais desta variável.
Existem várias abordagens na literatura para estimar o Customer Lifetime Value (CLTV). As abordagens mais clássicas baseiam-se em modelos estatísticos (por exemplo, Buy 'Til You Die Models, modelo Pareto/NBD, valor Recency-Frequency-Monetary [2]) e consideram características como a frequência de compra e as compras mais recentes, ajustando-as a uma distribuição estatística específica. Mais recentemente, surgem na literatura abordagens baseadas em machine learning, que utilizam características configuradas manualmente [3, 4].
Baseando-nos numa ideia previamente apresentada para um modelo de recomendação do melhor pacote para um cliente, propusemo-nos criar um modelo capaz de estimar o customer lifetime value numa janela temporal de N meses, considerando essa recomendação. Pretendíamos construir uma ferramenta que permitisse compreender se o CLTV poderia apoiar os decisores na escolha do melhor pacote a oferecer numa chamada de outbound. Ao maximizar o CLTV para um conjunto de possíveis transições de pacote, espera-se que a satisfação e a lealdade do cliente aumentem.
Regras de Negócio e Características Importantes do Dataset
Após aceitar uma oferta, os clientes concordam com um período de fidelização/contrato de 24 meses. Se a oferta for rejeitada, o período de fidelização mantém-se igual, e o risco de o cliente deixar a empresa (churn) aumenta.
O nosso dataset contém dois grupos de características:
- Características Comportamentais: padrões de consumo, interações com os canais da empresa, etc.
- Características de Oferta: características como velocidade de internet, tipo de pacote, número de canais de TV, …
Ao longo deste artigo, utilizamos a seguinte notação: o mês da oferta é o mês 0, e os meses subsequentes designam-se mês 1, … N. Se as variáveis alvo aparecem entre chavetas, isso significa que a entrada é um dicionário de arrays. Se não, é um único array.
A partir dos dados disponíveis, podemos calcular três variáveis alvo diferentes, todas úteis para a tomada de decisão empresarial, em casos de uso distintos:
: O cliente não deixou a empresa no mês N (está ativo/não sofreu churn)
: Receita Mensal (Preço), simplificada como valor de subscrição
: O cliente aceitou o pacote oferecido
Após considerar várias abordagens para estimar o CLTV baseadas em funções de otimização ou modelos de machine learning que utilizassem scores de modelos pré-treinados como características (para mais detalhes, consulte o apêndice), optamos por desenvolver uma abordagem baseada em Redes Neuronais Profundas.
Abordagem com Redes Neuronais Profundas
O deep learning promoveu uma abordagem de caixa negra onde as pessoas não pensam sobre o que estão a tentar fazer e simplesmente ligam as suas características de entrada a um modelo e obtêm um valor de saída. Na NILG.AI, pensamos sempre sobre o impacto nos negócios e como criar modelos explicáveis para ajudar a comunicar com os responsáveis pelas decisões empresariais.
Como podemos criar um modelo baseado em blocos que pudéssemos manipular rapidamente se quiséssemos testar diferentes abordagens? Como podemos aprender representações holísticas do cliente que cubram mais do que um sinal de interesse (por exemplo, CLTV, churn, upselling, etc.)? De uma forma muito geral, planeamos construir um modelo que pudesse ser single ou multi-output, single ou multi-task, com conhecimento de domínio integrado.
As secções seguintes explicam os blocos de construção desta arquitetura.
Melhorámos o Mean Absolute Error em 50% utilizando a nossa arquitetura personalizada em comparação com um modelo de regressão disponível no mercado
DNN User
O DNN User é um loop de N camadas Dense seguidas por camadas Dropout, com uma camada Dense final que cria um espaço latente comum para as tarefas seguintes. Basicamente, trata-se de um passo de extração de características que extrai características relevantes específicas do utilizador a partir das características de entrada.
Por enquanto, consideremos que estamos a produzir apenas o Preço para um determinado mês após o mês da oferta ( ).
Tarefa de Churn + Regressão – Single Output
Se estivéssemos a construir um modelo de regressão simples, tudo o que seria necessário para finalizar esta arquitetura seria adicionar uma ativação não-negativa final (por exemplo, ReLU/ELU), prevendo . Decidimos adicionar uma tarefa extra: estimar a probabilidade de sobrevivência do cliente, incluindo uma camada sigmoid para prever .
Como forma de garantir que uma redução na probabilidade de sobrevivência do cliente resulta numa diminuição do CLTV, adicionamos a seguinte regra de negócio à nossa rede neural:

onde o segundo termo é igual a 0, uma vez que o Preço quando o cliente sofreu churn () é zero. Por conseguinte, esta equação reduz-se a uma multiplicação entre a probabilidade de sobrevivência e , um espaço latente que pode ser interpretado como o valor potencial que o cliente está disposto a pagar pelo serviço, sem considerar a satisfação do cliente e a concorrência.
A rede que construímos até agora é resumida abaixo:
Onde as saídas da caixa vermelha são aprendidas de forma supervisionada multitarefa.
A função de perda é calculada de acordo com a seguinte equação:

Tarefa de Churn + Regressão – Multiple Output
A rede acima prediz . No entanto, o CLTV é estimado somando o Preço ao longo de vários meses.
Para criar um modelo multi-output, tudo o que é necessário é repetir os blocos acima e deslocar a variável alvo um mês para cada bloco.
A função de perda é então calculada como:

Tarefa de Churn + Regressão + Taker Task
Também podemos adicionar uma tarefa extra para maior explicabilidade: a probabilidade de o cliente aceitar a oferta (yTaker), que pode ser modelada como uma regra de negócio na rede pela seguinte equação:

Que é a soma do valor de subscrição se o cliente aceita a oferta e se não aceita. Este valor esperado é então multiplicado pela probabilidade de sobrevivência nesse período, como na arquitetura anterior.
A equação final (que pode ser seguida de uma ativação não-negativa, como ReLu) é então escrita como:

Resultados
Esta arquitetura foi comparada com um modelo de regressão de base. O erro absoluto médio (MAE) entre o Preço predito e estimado foi calculado. Melhorámos o Mean Absolute Error em 50% utilizando a nossa arquitetura personalizada em comparação com um modelo de regressão disponível no mercado.
Embora em alguns casos isto possa não ter um impacto direto nos resultados do modelo (e até possa levar a um desempenho reduzido, se alguns dos rótulos forem ruidosos e contraditórios), adicionar estes priors pode levar a uma maior regularização do modelo e reduzir o overfitting a valores ruidosos, outliers ou eventos esporádicos ao longo do tempo.
Conclusão
Conseguimos inovar nesta área de estimativa do Customer Lifetime Value ao criar um modelo multitarefa capaz de prever churn do cliente, lifetime value e propensão para aceitar uma oferta. Apesar das Redes Neuronais Profundas serem tipicamente consideradas como caixas negras, demonstramos que, ao pensarmos em DNNs como Programas Diferenciáveis (conforme encorajado por Yann LeCunn), podemos adicionar diferentes tarefas para aumentar a interpretabilidade e a tomada de decisão.
Com isto, conseguimos compreender qual é a melhor oferta para melhorar a satisfação e a retenção do cliente. Por exemplo, uma oferta que resulta numa baixa propensão e numa elevada probabilidade de churn provavelmente não é a melhor oferta para esse cliente.
Existem várias outras formas como podemos adicionar conhecimento de domínio a este modelo, como uma função de perda que penaliza mais clientes num determinado grupo de risco, garantir que características monótonas têm impacto monótono, entre outras.
Referências
- Lu, J., & Park, O. (2003). Modeling customer lifetime value using survival analysis—an application in the telecommunications industry. Data Mining Techniques, 120-128.
- Peter S. Fader, Bruce G. S. Hardie, and Ka Lok Lee. 2005. RFM and CLV: Using Iso-Value Curves for Customer Base Analysis. Journal of Marketing Research XLII, November (2005), 415–430
- Chamberlain, B. P., Cardoso, A., Liu, C. H., Pagliari, R., & Deisenroth, M. P. (2017, August). Customer lifetime value prediction using embeddings. In Proceedings of the 23rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (pp. 1753-1762). ACM.
- Vanderveld, A., Pandey, A., Han, A., & Parekh, R. (2016, August). An engagement-based customer lifetime value system for e-commerce. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (pp. 293-302). ACM.
