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 administração pública

Thanks to Jessica Temporal, Irio Musskopf, Felipe B Cabral, and Eduardo Cuducos

Ana Schwendler

Written by

this is interlude

Operação Serenata de Amor

Inteligência artificial para controle social da administração pública

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade