Como a Rosie usa machine learning na Serenata de Amor.

Ana Schwendler
Jan 23, 2017 · 3 min read

O objetivo da Operação Serenata de Amor é usar Machine Learning para detectar corrupção em gastos públicos. Mas como isso é desenvolvido de um ponto de vista técnico?

Podemos observar em várias postagens os resultados de nosso trabalho, então, dessa vez, vou propor uma explicação sobre como esse processo é desenvolvido tecnicamente.

Em uma tarde de sábado, pareando com a Jessica Temporal em uma issue da Rosieissue pra quem não é da área é como se fosse uma tarefa, que precisa ser adicionada, removida ou corrigida no projeto. Enfim, conversando sobre o projeto, decidimos voltar alguns passos e definir melhor o que estávamos planejando. O resultado foi uma análise completa do processo de como “ensinamos” novas suspeitas para a Rosie.

Testando hipóteses

O método começa quando definimos uma hipótese para ser aplicada à base de dados que estamos trabalhando. No nosso caso a hipótese era existência de despesas realizadas em empresas eleitorais, o que é ilegal segundo a Cota para Exercício da Atividade Parlamentar.

Para começar é desenvolvido um Jupyter Notebook com hipóteses, análises e conclusões. Testamos todas nossas ideias assim, de maneira bem simples. Depois que chegamos numa conclusão válida o suficiente, que retorne bons resultados, começamos a implementar esse conhecimento adquirido à Rosie.

Implementando uma hipóteses no fluxo de trabalho

Esse processo de implementação, é feito usando TDD (Test Driven Development), que é um técnica de desenvolvimento de software em que são criados casos de teste para produzir código. Nessa situação, a partir dos resultados obtidos no notebook criado anteriormente, elaboramos alguns casos de teste para auxiliar na idealização do código da Rosie.

Para começarmos a pensar na solução do problema, pensamos em uma base de dados simples que auxilie a validar nossos testes, ou, definindo tecnicamente, uma Fixture.

Seguindo TDD começamos escrevendo um teste, um caso de uso, e depois produzimos um código que faça esse teste funcionar. Depois que resolvemos a situação criada como teste, refatoramos o código escrito.

Nossos métodos no fluxo de machine learning

Como os nossos classificadores de Machine Learning utilizam apenas Unsupervised Learning atualmente, ou seja, descobre sozinho irregularidades a partir dos dados apresentados, usamos um padrão de desenvolvimento com os seguintes métodos:

  • fit(): ajusta os dados antes de trabalhar com eles, ou seja, faz um pré-processamento da base de dados;
Exemplo de classificador com função fit()
  • transform(): assim como o fit, é utilizado para pré-processamento da base de dados, como por exemplo na análise de limites da cota, faz um filtro no dados;
Exemplo de classificador com função transform()

Nesse caso, a avaliação não precisa de pré-processamento, então apenas passa o método.

  • predict(): é o último método a ser chamado, após os dados estarem prontos para serem avaliados, predict() implementa a classificação dos dados.
Exemplo de classificador com função predict()

Como nosso problema (detecção de corrupção) não se encaixa perfeitamente na interface padrão de desenvolvimento de Machine Learning, usada no scikit-learn, adaptamos o modelo a nossa necessidade. O padrão é implementado da seguinte forma:

  • fit(): aprende os padrões de uma base de dados;
  • transform(): pré-processa a base dados, para acelerar a classificação do predict();
  • predict(): aplica os padrões aprendidos na base de dados pré-processada.

Concluindo, assim desenvolvemos Machine Learning na Rosie, pode segui-la no GitHub.

Tentei adicionar alguns links que utilizamos como guia para desenvolver, e gostaria de agradecer à Jessica Temporal e ao Irio Musskopf pela ajuda a entender melhor o processo. Quem quiser (e puder) apoiar o projeto, estamos com uma campanha de crowdfunding recorrente na plataforma apoia.se.

Operação Serenata de Amor

Inteligência artificial para controle social da…

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store