Retentioneering: como escrevemos ferramentas open-source 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 o processamento de trajetórias de movimento de usuários em aplicativos ou sites. O autor do desenvolvimento é Maxim Godzi, que está à frente da equipe de criadores do produto, e ele também é o autor do artigo. O produto recebeu o nome de Retentioneering, agora foi transformado em uma biblioteca open-source e hospedado no Github, para que qualquer pessoa interessada possa utilizá-lo. Tudo isso pode ser interessante para quem está relacionado à análise de produtos e marketing, promoção e desenvolvimento de produtos. A propósito, no Habr já foi publicada uma artigo sobre um dos casos de uso do Retentioneering. O novo material descreve do que o produto é capaz e como pode ser utilizado.

Ao ler o artigo, você será capaz de criar seu próprio Retentioneering; qualquer método padronizado de processamento de trajetórias de usuários em um aplicativo e fora dele pode se tornar isso, permitindo uma visão detalhada das características do comportamento e extraindo insights para o crescimento das métricas de negócios.

O que é Retentioneering e por que isso é necessário?

Inicialmente, nosso objetivo era traduzir o Growth Hacking do mundo da "magia digital" para o mundo dos números, da análise e das previsões. Como consequência, a análise de produtos foi reduzida a matemática pura e programação para aqueles que, ao invés de histórias fantásticas, preferem números, e fórmulas a palavras sofisticadas como "rebranding", "reposicionamento" e assim por diante, que soam bem, mas na prática ajudam pouco.

Para resolver essas questões, foi necessário um framework para análise através de grafos e trajetórias, e ao mesmo tempo uma biblioteca que simplificasse as rotinas típicas dos analistas, como uma forma de descrever tarefas regulares de análise de produto, que fosse compreensível tanto para pessoas quanto para robôs. A biblioteca permite descrever o comportamento dos usuários e conectá-lo às métricas de negócios do produto em uma linguagem tão formal e clara, que simplifica e automatiza as tarefas rotineiras dos desenvolvedores e analistas, facilitando sua comunicação com os negócios.

Retentioneering é um método e ferramentas analíticas de software que podem ser adaptadas e integradas em qualquer produto digital (e não apenas).

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

Tudo isso está embrulhado em uma biblioteca open-source conveniente no repositório aberto do Github — retentioneering-tools. Usar a biblioteca não é difícil; praticamente qualquer pessoa que gosta de análise de produto, mas que nunca programou antes, pode aplicar nossos métodos de análise aos seus dados de forma independente e sem gastar muito tempo.

Um programador, o criador do aplicativo ou um membro da equipe de desenvolvimento ou teste, que nunca antes lidou com análise, pode começar a brincar com esse código e ver padrões de uso de seu aplicativo sem ajuda externa.

A trajetória do usuário como elemento básico da análise e métodos de seu processamento

A trajetória do usuário é a sequência de estados do usuário em determinados pontos temporais. Além disso, os eventos podem vir de diferentes fontes de dados, tanto online quanto offline. Os eventos que aconteceram com o usuário são parte de sua trajetória. Exemplos:
• clicou no botão
• viu a imagem
• chegou à tela
• recebeu um e-mail
• recomendou o produto a um amigo
• preencheu o formulário
• tocou na tela
• rolou
• chegou ao caixa
• pediu um burrito
• comeu o burrito
• ficou doente após comer o burrito
• entrou no café pela porta dos fundos
• entrou pela porta da frente
• fechou o aplicativo
• recebeu uma notificação push
• ficou encarando a tela por mais tempo
• pagou o pedido
• retirou o pedido
• teve o pedido de crédito negado

Se pegarmos os dados das trajetórias de um grupo de usuários e estudarmos como ocorrem as transições, podemos acompanhar como se constrói seu comportamento no aplicativo. Isso é conveniente de fazer através de um gráfico, onde estados são nós, e transições entre estados são arestas:

Retentioneering: como escrevemos ferramentas open-source para análise de produtos em Python e Pandas.

A "trajetória" é um conceito muito conveniente — ela contém informações detalhadas sobre todas as ações do usuário, com a possibilidade de adicionar quaisquer dados adicionais na descrição dessas ações. Isso a torna um objeto universal. Se você possui ferramentas bonitas e práticas que permitem trabalhar com trajetórias, pode encontrar semelhanças e segmentá-las.

A segmentação de trajetórias pode parecer algo muito complicado a princípio. Em uma situação normal, realmente é — é necessário usar comparação de matrizes de conectividade ou alinhamento de sequências. Conseguimos encontrar uma maneira mais simples — estudar um grande número de trajetórias e segmentá-las por meio de clusterização.

Como se descobriu, é possível transformar uma trajetória em um ponto utilizando representações contínuas, por exemplo, TF-IDF. Após a transformação, a trajetória se torna um ponto no espaço, onde os eixos representam a frequência normalizada de diferentes eventos e transições na trajetória. Essa representação, que vem de um espaço enorme de mil e mais dimensões (dimS=soma(tipos de eventos)+soma(tipos de ngrams_2)), pode ser projetada em um plano usando TSNE. O TSNE — uma transformação que reduz a dimensionalidade do espaço a 2 e, na medida do possível, preserva as distâncias relativas entre os pontos. Consequentemente, torna-se possível, em um mapa plano, um mapa de projeção imagética das trajetórias, estudar como os pontos de diferentes trajetórias se posicionam entre si. Analisa-se o quanto eles eram próximos ou distintos entre si, se formavam clusters ou se dispersavam pelo mapa, etc.:

Retentioneering: como escrevemos ferramentas open-source para análise de produtos em Python e Pandas.

As ferramentas analíticas do Retentioneering permitem transformar um conjunto de dados complexos e trajetórias em uma representação que pode ser comparada entre si, e, em seguida, investigar e interpretar o resultado da transformação.

Falando sobre métodos padrão de processamento de trajetórias, referimo-nos a três ferramentas principais que implementamos no Retentioneering — grafos, matrizes de passo e mapas de projeção de trajetórias.

Trabalhar com Google Analytics, Firebase e sistemas de análise semelhantes é bastante complicado e não 100% eficaz. O problema reside em uma série de limitações para o usuário, resultando em uma análise que se limita a cliques do mouse e seleção de cortes. Retentioneering permite trabalhar com trajetórias de usuários, e não apenas com funis, como no Google Analytics, onde o nível de detalhamento muitas vezes se resume a um funil, mesmo que seja construído para um segmento específico.

Retentioneering e casos de uso

Como exemplo do uso da ferramenta desenvolvida, podemos citar o caso de um grande serviço de nicho na Rússia. Esta empresa possui um aplicativo móvel para Android, que é bem popular entre os clientes. O faturamento anual do aplicativo móvel era de cerca de 7 milhões de rublos, com flutuações sazonais entre 60-130 mil. A mesma empresa também possui um aplicativo para iOS, e o ticket médio do usuário do aplicativo 'da maçã' foi superior ao ticket médio do cliente que utilizava o aplicativo Android — 1080 rublos contra 1300 rublos.

A empresa decidiu aumentar a eficácia do aplicativo Android, para o qual realizou uma análise minuciosa. Foram formadas várias dezenas de hipóteses para aumentar a eficácia do aplicativo. Após o uso do Retentioneering, ficou claro que o problema estava nas mensagens exibidas para novos usuários. Eles recebiam informações sobre a marca, vantagens da empresa e preços. No entanto, como se revelou, as mensagens deveriam ajudar os usuários a aprender a usar o aplicativo.

Retentioneering: como escrevemos ferramentas open-source para análise de produtos em Python e Pandas.

Isso foi realizado, resultando em uma diminuição nas desinstalações do aplicativo e um aumento de 23% na conversão em pedidos. Inicialmente, 20% do tráfego de entrada foi alocado para o teste, mas após alguns dias, ao analisar os primeiros resultados e avaliar a tendência — as proporções foram invertidas e, ao contrário, 20% foram deixados para o grupo de controle, enquanto 80% foram colocados no teste. Uma semana depois, foi decidido adicionar progressivamente o teste de mais duas hipóteses. Em apenas sete semanas, o faturamento do aplicativo Android aumentou em 1,5 vezes em relação ao nível anterior.

Como trabalhar com Retentioneering?

Os primeiros passos são bastante simples — carregamos a biblioteca com o comando pip install retentioneering. No próprio repositório, há exemplos prontos e casos de tratamento de dados para algumas tarefas de análise de produtos. O conjunto está constantemente se expandindo, mas já é suficiente para uma primeira familiarização. Qualquer pessoa pode pegar módulos prontos e aplicá-los imediatamente às suas tarefas — isso permite configurar rapidamente o processo de análise mais detalhada e otimização das trajetórias dos usuários de forma eficiente. Tudo isso possibilita encontrar padrões de uso do aplicativo através de um código claro e transmitir essa experiência aos colegas.

Retentioneering — uma ferramenta que deve ser usada durante toda a vida útil do aplicativo, e aqui está o porquê:

  • Retentioneering é eficaz para rastrear e otimizar continuamente as trajetórias dos usuários e melhorar os indicadores de negócios. Por exemplo, em aplicativos de ecommerce, frequentemente são adicionadas novas funcionalidades, cujo impacto no produto nem sempre pode ser previsto corretamente. Em alguns casos, surgem problemas de compatibilidade entre funcionalidades novas e antigas — por exemplo, novas funcionalidades “canibalizam” as já existentes. E, nessa situação, uma análise constante das trajetórias é necessária.
  • A mesma situação se aplica ao trabalho com canais de publicidade: novas fontes de tráfego e criativos publicitários estão sempre sendo testados, é necessário rastrear sazonalidade, tendências e o impacto de outros eventos, o que resulta no surgimento de novas classes de problemas. Aqui também é preciso um monitoramento constante e a interpretação das mecânicas dos usuários.
  • Há uma série de fatores que influenciam constantemente o funcionamento do aplicativo. Por exemplo, novos lançamentos dos desenvolvedores: ao resolver um problema relevante, eles involuntariamente reintroduzem ou criam um problema antigo. Com o tempo, o número de novos lançamentos aumenta, e o processo de rastreamento de erros precisa ser automatizado — inclusive, por meio da análise das trajetórias dos usuários.

No geral, Retentioneering é uma ferramenta eficaz. Mas não há limites para a perfeição — ela pode e deve ser aprimorada, desenvolvida e servir como base para novos produtos interessantes. Quanto mais ativa for a comunidade do projeto, mais forks surgirão, e novas opções interessantes de uso aparecerão.

Informações adicionais sobre as ferramentas Retentioneering:

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster