Quem já tentou montar uma equipe de Data Science ou de Modelagem Matemática se vê diante de dois grandes desafios. O primeiro: como encontrar cientistas de dados com conhecimento em Estatística, Machine Learning e Análise de Dados, e o segundo: como estabelecer processos padronizados e eficientes para uma atividade de criação.
Talvez esse segundo desafio seja mais geral, vivido em diversas indústrias, como por exemplo a de publicidade e propaganda. No entanto, na área de ciência de dados muitas vezes os objetivos, meios e fins são desconhecidos no início de um projeto.
A atividade de modelagem matemática de um cientista de dados é quase como uma exploração sem conhecimento prévio dos caminhos e dos resultados. Há sim inúmeras boas práticas e caminhos "comuns" para alguns tipos de problemas, mas essencialmente trata-se de uma atividade intelectual de feature engineering que exige enorme criatividade.
Outra atividade comumente atribuída aos cientistas de dados é a construção de sistemas preditivos dentro de APIs ou de outros sistemas. Isso exige um conhecimento de tecnologias de Big Data, como bancos de processamento massivo e técnicas de desenvolvimento de software. Essa atividade é muito mais ligada ao universo de engenharia de software e tecnologia da informação do que de matemática aplicada propriamente dita.
Isso faz com que o cientista de dados, da forma que é procurado no mercado, seja um verdadeiro "unicórnio" (termo cunhado pelo mercado para descrever esses profissionais raríssimos).
Contudo, ao invés de ficar buscando esses "unicórnios", não seria mais lógico seguir o caminho da indústria de software e definir os papéis e responsabilidades de forma mais segmentada?
Com isso em mente, pode-se dividir os profissionais de Machine Learning entre os ligados às áreas de matemática aplicada e mineração de dados; e aqueles conectados aos temas tecnológicos de ML, como a gestão de banco de dados massivos, construção de APIs preditivas e engenharia de software.
Na TEVEC, especializada em previsão de comportamento de demanda por meio de Inteligência Artificial, optamos por dividir nossa equipe de modelagem matemática em duas, uma de cientistas de dados e outra de engenheiros de Machine Learning. Isso possibilitou uma abordagem mais organizada no dia a dia e um maior foco nas áreas de especialização necessárias para a construção de sistemas de previsão.
Com essa divisão é possível estabelecer os papéis e responsabilidades de cada equipe. A equipe de engenheiros de ML tem foco em produto (software), enquanto a equipe de Data Science tem foco em customer service. Para esclarecer, enquanto os engenheiros de ML se preocupam em fornecer as ferramentas de forma simples e prática para a condução de análises e construção de modelos, a equipe de Data Science utiliza essas ferramentas para continuamente aprimorar os modelos e pipelines de cálculo colocados à disposição dos clientes.
Um dos maiores dilemas vividos na área de Machine Learning está no momento em que se conclui uma atividade de análise de dados e construção de modelos, e é necessário disponibilizar todo o conhecimento gerado para os clientes em uma estrutura de software. Nesse momento percebe-se que as estruturas e modelos criados são muito específicos para um ambiente de experimentação e precisam de muitas alterações antes do deploy. Para solucionar ou pelo menos mitigar esse estresse, propusemos um processo ágil de Data Science associado a uma arquitetura de software que permite a construção rápida de modelos e subida seamless para o ambiente produtivo.
Nosso processo funciona da seguinte forma:
- No início de cada ciclo a equipe de engenharia de ML extrai do sistema um relatório de qualidade. Esse relatório contém a acurácia de cada previsão feita pelo sistema. A acurácia é calculada com base na previsão e no valor real informado pelo mesmo canal de integração da nossa plataforma;
- Com base no relatório os cientistas de dados analisam as oportunidades de melhoria em múltiplos datasets. Por exemplo, pode existir um grupo de datasets com forte influência de fatores climáticos. Assim os cientistas de dados podem sugerir melhorias mais gerais no sistema, beneficiando múltiplos clientes simultaneamente, além de melhorias evolutivas e não reativas;
- Os cientistas de dados implementam as melhorias em um console controlado. Eles desenvolvem pipelines, incluem novas variáveis explicativas e fazem melhorias de algoritmos, seguindo um padrão de especificação de nós e grafos computacionais;
- Após a conclusão do desenvolvimento anterior os cientistas de dados e os engenheiros de ML montam experimentos massivos que varrem o sistema testando a aplicação do novo pipeline nos datasets alvo. E também verificam se, de fato, podem ser antevistas melhorias de acurácia e performance dos modelos;
- Após a execução dos testes massivos há uma reunião com nossas áreas de negócio (nossa equipe de customer success e com as equipes comerciais). Isso permite a comunicação com os clientes e identificação de novas oportunidades de negócio;
- Uma vez que os pipelines e os testes foram desenvolvidos sob uma estrutura padronizada de programação, o deploy dos modelos é realizado de forma direta para o ambiente produtivo. Os pipelines que promoveram melhorias são vinculados aos datasets e passam a responder as requisições em nossa API.
Atualmente, o ciclo do processo de Data Science é feito quinzenalmente, mas o plano é realizá-lo semanalmente, em sincronia com nossos sprints de desenvolvimento de software.
Esse processo aliado à definição de papéis e responsabilidades possibilitou a comunicação efetiva entre as equipes, maior especialização em temas desafiadores de ML e maior colaboração entre matemática aplicada e engenharia de software. Como resultado final, temos um sistema de processos, pessoas e tecnologia alinhados para a melhoria contínua da acurácia, que deveria ser o objetivo de qualquer sistema preditivo.