Retenção: como escrevemos ferramentas de código aberto para análise de produtos em Python e Pandas

Olá, Habr. Este artigo é dedicado aos resultados de quatro anos de desenvolvimento de um conjunto de métodos e ferramentas para processamento de trajetórias de movimento de usuários em um aplicativo ou site. Autor do desenvolvimento - Máximo Godzi, que lidera a equipe de criadores de produtos e também é autor do artigo. O produto em si foi chamado Retentioneering; agora foi convertido em uma biblioteca de código aberto e postado no Github para que qualquer pessoa possa usá-lo. Tudo isso pode ser de interesse para aqueles envolvidos na análise de produtos e marketing, promoção e desenvolvimento de produtos. A propósito, em Habré já foi publicado artigo sobre um dos casos de trabalho com Retentioneering. O novo material explica o que o produto pode fazer e como pode ser usado.

Depois de ler o artigo, você mesmo poderá escrever seu próprio Retentioneering; pode ser qualquer método padronizado para processar trajetórias de usuários na aplicação e além, permitindo ver em detalhes as características do comportamento e extrair insights disso para o crescimento de métricas de negócios.

O que é retenção e por que é necessário?

Nosso objetivo inicial era mover o Growth Hacking do mundo da “bruxaria digital” para o mundo dos números, análises e previsões. Como consequência, a análise de produtos é reduzida à matemática pura e à programação para aqueles que preferem números em vez de histórias fantásticas, e as fórmulas a chavões como “rebranding”, “reposicionamento”, etc., que parecem legais, mas na prática pouco ajudam.

Para resolver esses problemas, precisávamos de uma estrutura de análise por meio de gráficos e trajetórias e, ao mesmo tempo, de uma biblioteca que simplificasse as rotinas típicas de analistas, como forma de descrever tarefas regulares de análise de produtos que fossem compreensíveis tanto para pessoas quanto para robôs. A biblioteca oferece a capacidade de descrever o comportamento do usuário e vinculá-lo às métricas de negócios do produto em uma linguagem tão formal e clara que simplifica e automatiza as tarefas rotineiras de desenvolvedores e analistas e facilita sua comunicação com o negócio.

Retentioneering é um método e uma ferramenta de software analítico que pode ser adaptado e integrado em qualquer produto digital (e não só).

Começamos a trabalhar no produto em 2015. Agora, este é um conjunto pronto, embora ainda não ideal, de ferramentas em Python e Pandas para trabalhar com dados, modelos de aprendizado de máquina com API semelhante ao sklearn, ferramentas para interpretar os resultados dos modelos de aprendizado de máquina eli5 e shap.

Está tudo embrulhado para uma biblioteca de código aberto conveniente no repositório aberto do Github - ferramentas de retenção. Usar a biblioteca não é difícil; quase qualquer pessoa que adora análise de produtos, mas nunca escreveu código antes, pode aplicar nossos métodos de análise aos seus dados de forma independente e sem investimento significativo de tempo.

Bem, um programador, criador de aplicativo ou membro de uma equipe de desenvolvimento ou teste que nunca fez análises antes pode começar a brincar com esse código e ver os padrões de uso de seu aplicativo sem ajuda externa.

Trajetória do usuário como elemento básico de análise e métodos para seu processamento

A trajetória do usuário é uma sequência de estados do usuário em determinados pontos no tempo. Além disso, os eventos podem vir de diferentes fontes de dados, tanto online como offline. Eventos que acontecem com o usuário fazem parte de sua trajetória. Exemplos:
• apertou o botão
• viu a foto
• acertar a tela
• recebeu um e-mail
• recomendou o produto a um amigo
• preencheu o formulário
• tocou na tela
• rolado
• foi até a caixa registradora
• pedi um burrito
• comi um burrito
• foi envenenado ao comer um burrito
• entrou no café pela entrada dos fundos
• entrado pela entrada frontal
• minimizou a aplicação
• recebeu uma notificação push
• ficou preso na tela por mais tempo que X
• pago pelo pedido
• comprou o pedido
• foi recusado um empréstimo

Se você pegar os dados da trajetória de um grupo de usuários e estudar como as transições são estruturadas, poderá rastrear exatamente como seu comportamento no aplicativo é estruturado. É conveniente fazer isso através de um gráfico no qual os estados são nós e as transições entre estados são arestas:

Retenção: como escrevemos ferramentas de código aberto para análise de produtos em Python e Pandas

“Trajetória” é um conceito muito conveniente - contém informações detalhadas sobre todas as ações do usuário, com a capacidade de adicionar quaisquer dados adicionais à descrição dessas ações. Isso o torna um objeto universal. Se você tiver ferramentas bonitas e convenientes que permitem trabalhar com trajetórias, poderá encontrar semelhanças e segmentá-las.

A segmentação de trajetórias pode parecer muito complicada à primeira vista. Em uma situação normal, este é o caso - você precisa usar comparação de matriz de conectividade ou alinhamento de sequência. Conseguimos encontrar uma maneira mais simples - estudar um grande número de trajetórias e segmentá-las por meio de agrupamento.

Acontece que é possível transformar uma trajetória em um ponto usando representações contínuas, por exemplo, TF-IDF. Após a transformação, a trajetória torna-se um ponto no espaço onde a ocorrência normalizada de vários eventos e transições entre eles na trajetória é traçada ao longo dos eixos. Essa coisa de um enorme espaço de mil ou mais dimensões (dimS=sum(event types)+sum(ngrams_2 types)) pode ser projetada em um plano usando TSNE. TSNE é uma transformação que reduz a dimensão do espaço para 2 eixos e, se possível, preserva as distâncias relativas entre os pontos. Assim, torna-se possível em um mapa plano, um mapa de projeção figurativa de trajetórias, estudar como os pontos de diferentes trajetórias se localizavam entre si. Ele analisa o quão próximos ou diferentes eles estavam entre si, se formaram aglomerados ou se estavam espalhados pelo mapa, etc.:

Retenção: como escrevemos ferramentas de código aberto para análise de produtos em Python e Pandas

As ferramentas analíticas de retenção fornecem a capacidade de transformar dados e trajetórias complexas em uma visão que pode ser comparada entre si e, então, o resultado da transformação pode ser examinado e interpretado.

Falando sobre métodos padrão para processamento de trajetórias, queremos dizer três ferramentas principais que implementamos em Retenção - gráficos, matrizes de passos e mapas de projeção de trajetória.

Trabalhar com Google Analytics, Firebase e sistemas analíticos semelhantes é bastante complexo e não 100% eficaz. O problema é uma série de restrições para o usuário, fazendo com que o trabalho do analista nesses sistemas dependa de cliques do mouse e seleção de fatias. A retenção permite trabalhar com trajetórias de usuários, e não apenas com funis, como no Google Analytics, onde o nível de detalhe muitas vezes é reduzido a um funil, ainda que construído para um determinado segmento.

Retenção e casos

Como exemplo de utilização da ferramenta desenvolvida, podemos citar o caso de um grande nicho de serviços na Rússia. Esta empresa possui um aplicativo móvel Android que é popular entre os clientes. O faturamento anual do aplicativo móvel foi de cerca de 7 milhões de rublos, as flutuações sazonais variaram de 60 a 130 mil.A mesma empresa também possui um aplicativo para iOS, e a fatura média de um usuário do aplicativo Apple foi superior à fatura média de um cliente usando um aplicativo Android - 1080 rublos. versus 1300 esfregar.

A empresa decidiu aumentar a eficiência da aplicação Android, para a qual realizou uma análise aprofundada. Várias dezenas de hipóteses foram geradas sobre como aumentar a eficácia do aplicativo. Depois de usar o Retentionneering, descobriu-se que o problema estava nas mensagens mostradas aos novos usuários. Eles receberam informações sobre a marca, benefícios da empresa e preços. Mas, como se viu, as mensagens deveriam ajudar o usuário a aprender como trabalhar no aplicativo.

Retenção: como escrevemos ferramentas de código aberto para análise de produtos em Python e Pandas

Isso foi feito e com isso o aplicativo passou a ser menos desinstalado e o aumento na conversão em pedido foi de 23%. No início, 20 por cento do tráfego de entrada foi destinado ao teste, mas depois de alguns dias, após analisar os primeiros resultados e avaliar a tendência, inverteram as proporções e, pelo contrário, deixaram 20 por cento para o grupo de controle, e oitenta por cento foram colocados no teste. Uma semana depois, decidiu-se adicionar sequencialmente o teste de mais duas hipóteses. Em apenas sete semanas, o faturamento do aplicativo Android aumentou uma vez e meia em relação ao nível anterior.

Como trabalhar com Retenção?

Os primeiros passos são bastante simples - baixe a biblioteca com o comando pip install retentor. O próprio repositório contém exemplos prontos e casos de processamento de dados para algumas tarefas de análise de produtos. O conjunto é constantemente atualizado até que seja suficiente para um primeiro contato. Qualquer pessoa pode pegar módulos prontos e aplicá-los imediatamente às suas tarefas - isso permite configurar imediatamente o processo de análise mais detalhada e otimização das trajetórias dos usuários da maneira mais rápida e eficiente possível. Tudo isso permite encontrar padrões de uso de aplicações por meio de código claro e compartilhar essa experiência com colegas.

A retenção é uma ferramenta que vale a pena usar durante toda a vida do seu aplicativo, e aqui está o porquê:

  • A retenção é eficaz para rastrear e otimizar continuamente as trajetórias dos usuários e melhorar o desempenho dos negócios. Assim, muitas vezes são adicionadas novas funcionalidades às aplicações de comércio eletrónico, cujo impacto no produto nem sempre pode ser previsto corretamente. Em alguns casos, surgem problemas de compatibilidade entre funções novas e antigas - por exemplo, as novas “canibalizam” as existentes. E nesta situação, a análise constante das trajetórias é precisamente o que é necessário.
  • A situação é semelhante quando se trabalha com canais de publicidade: novas fontes de tráfego e criativos publicitários são constantemente testados, é necessário monitorar a sazonalidade, as tendências e a influência de outros eventos, o que leva ao surgimento de cada vez mais novas classes de problemas. Isso também requer monitoramento e interpretação constantes da mecânica do usuário.
  • Existem vários fatores que afetam constantemente o desempenho de um aplicativo. Por exemplo, novos lançamentos de desenvolvedores: fechando um problema atual, eles involuntariamente devolvem o antigo ou criam um completamente novo. Com o tempo, o número de novos lançamentos cresce e o processo de rastreamento de erros precisa ser automatizado, inclusive por meio da análise das trajetórias dos usuários.

No geral, a retenção é uma ferramenta eficaz. Mas não há limite para a perfeição - ela pode e deve ser melhorada, desenvolvida e novos produtos interessantes construídos com base nela. Quanto mais ativa for a comunidade do projeto, mais bifurcações haverá e novas opções interessantes de uso aparecerão.

Mais informações sobre ferramentas de retenção:

Fonte: habr.com

Adicionar um comentário