Como Produtizamos Modelos na Loft com Streamlit

Anna Luisa Boschiroli
Loft
Published in
5 min readJan 20, 2022

Como cientistas de dados, criamos modelos e soluções de negócio utilizando dados. Mas na hora de compartilharmos os nossos resultados, como é possível gerar valor de forma fácil e rápida? Nesse artigo, vamos contar um pouco sobre uma ferramenta que permite a disponibilização de soluções de ciências de dados e vem se tornando cada vez mais popular no mercado: o Streamlit. Além de passar uma visão geral sobre a ferramenta, vamos passar pelos exemplos onde a utilizamos aqui na Loft e contar também porque e quando ela pode ser utilizada no trabalho de cientistas de dados!

Mas o que é Streamlit?

Streamlit é um framework de Python que permite criar web-apps com muita agilidade e simplicidade. Por exigir pouco tempo e esforço para criar uma aplicação do zero, ele se tornou muito popular entre profissionais de dados, que usam a ferramenta para criar visualizações de dados, realizar deploy de modelos e servir predições, prototipar produtos de dados, entre outros.

Para montar um web-app com Streamlit, já existem diversos componentes criados pela própria ferramenta que você pode utilizar para dar forma ao seu sistema sem precisar saber nada de HTML, CSS e JavaScript. No site da ferramenta, você pode encontrar vários exemplos de uso!

No entanto, vale mencionar que a ferramenta não possui componentes ou funcionalidades de autenticação, então é importante tomar cuidado antes de apresentar dados confidenciais na sua aplicação ;). É possível adicionar segurança colocando seu web-app dentro de uma VPN acessível apenas para sua equipe/empresa, ou verificar o email do usuário com OAuth2, que são dois recursos que usamos aqui na Loft.

Após essa apresentação sobre o Streamlit, o que vem à mente é: mas como e por que ele é usado na prática? Essa é uma das ferramentas que usamos aqui na Loft e já fizemos diversas aplicações de modelos com ela. Vou citar aqui quais foram as principais considerações nos casos em que a escolhemos.

Primeira versão de um modelo/MVP (minimum viable product)

Quando fazemos um primeiro modelo de um projeto, muitas vezes não sabemos se ele realmente vai dar certo para a nossa solução, ou se ele será utilizado intensamente. Além disso, muitas vezes é preciso primeiro soltar a primeira versão do modelo para tirar as primeiras conclusões e ter aprendizados, para depois fazer um modelo que será de fato a solução que estávamos buscando. Com isso, a primeira versão do nosso modelo, muitas vezes é um teste, ou o que chamamos de minimum viable product (muito conhecido por MVP). Sabendo que o MVP não será a nossa versão final, não é ideal que se gaste um tempo muito longo na produção dele. E é aí que o Streamlit se torna uma solução ideal para nós, cientistas de dados. Através do Streamlit, conseguimos rapidamente criar uma ferramenta onde as pessoas consigam utilizar o nosso modelo. Além disso, pelo Streamlit ser simples de programar, conseguimos fazer isto rapidamente. Assim, conseguimos aprender mais rápido para seguir para as próximas versões do modelo.

Acessibilidade para outros times

Quando fazemos um modelo, ou qualquer solução com ciência de dados, é sempre importante ter em mente alguns pontos:

  • Quem são as pessoas que utilizarão o meu modelo?
  • Qual o objetivo final do meu modelo? Para quê e como ele será utilizado?
  • Como transformar linhas de código em algo que pode ser de fato consumido por pessoas que precisam do resultado desse modelo?

Aqui na Loft, usamos muito o conceito de pessoas que são clientes internas (Lofters) e externas (clientes finais). Claro que sempre colocamos clientes finais no centro de todas as decisões, mas isso é feito de forma indireta quando geramos resultados para Lofters. Como cientistas de dados, a maior parte das pessoas Lofters que usam nossas soluções são de times não técnicos. No geral, esses times não utilizam as mesmas ferramentas que cientistas de dados, o que pode gerar desafios na disponibilização dos nossos modelos. Não é nada prático para esses times rodarem códigos de modelos, então como cientistas de dados precisamos também pensar em como é a melhor forma dos resultados dos nossos modelos serem consumidos.

Sabendo quem é cliente do time de ciência de dados, seguimos para o próximo questionamento: como o modelo vai ser utilizado? Quando o resultado final que se precisa é uma tabela, o problema de disponibilização de resultados não é tão grande. Porém, quando precisamos disponibilizar simulações, gráficos que dependem de inputs/interações de quem é usuário, ou, de forma geral, quando precisamos fornecer alguma visualização mais complexa do nosso modelo (e aqui a visualização pode variar de redução de dimensionalidade a dados de texto), como é possível disponibilizar esses resultados?

Quando temos esses casos de Lofters que precisam das visualizações mais complexas/interativas de nossos modelos, o Streamlit é a resposta para o nosso terceiro questionamento, já que nestes casos ele é muito ideal para criar um MVP. Ele é de fácil uso e acesso para os times não técnicos, funcionando da mesma forma que um aplicativo.

Algumas soluções que o Streamlit permite desenvolver envolvendo ciência de dados e que utilizamos aqui na Loft:

  • Criar visualizações interativas com os resultados dos modelos (utilizando plotly). Aqui, destaco um caso onde fizemos a visualização de clustering/embedding, em que representamos, numa dimensão reduzida em 2D, respostas de satisfação de clientes, clusterizados por tópicos pré selecionados, facilitando muito o trabalho de rotulação destes para pessoas não técnicas.
  • Guardar informações que os usuários colocam no aplicativo. Isso pode ser muito útil, por exemplo, quando queremos utilizar o conhecimento do usuário para melhorar o nosso modelo (o que é conhecido como human in the loop).
  • Fazer outras visualizações que não necessariamente envolvem um modelo, mas exigem bastante pré-processamento de dados, como é o caso da produção de uma nuvem de palavras (word cloud) a partir de uma base com muitos dados textuais.
  • Ter campos onde o usuário pode ajustar hiperparâmetros de um modelo a partir de seu conhecimento de domínio
  • Opção para usuário baixar a base de dados resultante do modelo, como um arquivo .csv, .xlsx, entre outros
  • Empregar modelos que dependem de inputs de usuários sem precisar construir uma API

Com isso, saímos de um modelo em código para um produto que pode de fato gerar resultados para quem o utilizará. Desta forma, podemos gerar um impacto real com as nossas soluções!

Calculadora de taxa interna de retorno com Streamlit

Trouxemos um exemplo prático, feito por um dos membros do nosso time de ciência de dados, onde é possível calcular qual seria a Taxa Interna de Retorno (TIR) de um investimento de compra, reforma e venda de um imóvel, além de simular seu fluxo de caixa. Se quiser aprender mais, também temos um artigo sobre a ciência de encontrar as melhores oportunidades de compra, reforma e venda de imóveis. Esse aplicativo é aberto, então sinta-se à vontade para usá-lo :)

Você tem outras dicas de como utilizar Streamlit em ciência de dados? Deixe um comentário, ou pode mandar uma mensagem pra gente :)

Se interessou pelos nossos desafios e quer fazer parte da revolução do mercado imobiliário? Confiras as nossas vagas!

#TransformeComAGente #OJeitoLoft

Por Lucas Miura e Anna Luisa Boschiroli

--

--