Slides

Propaganda
Big data no Planalto
Como o
minera
datasets gigantescos para
reprimir crimes
Thiago Marzagão
QConSP 2016
Que crimes?
 Mau uso do dinheiro público:
 fraudes diversas em licitações (ex.: prefeito que contrata própria empresa);
 fraudes diversas envolvido $ público (ex.: prefeito que recebe bolsa-família);
 fraudes tributárias (sonegação, compensações indevidas);
 cartel;
 …outros.
Cartel
 “Acerto” entre concorrentes é crime.
 Apesar disso é prática comum no Brasil.
 Especialmente em compras públicas.
 Impossível analisar cada licitação.
 É preciso automatizar o processo.
Cartel
 O que é cartel?
 Lei 12.529/11, art. 36.
 Exemplos:
 combinar preços
 combinar quantidades
 dividir clientes/mercados
Cartel
 Quais são as penas?
 Lei 12.529/11, art. 37. Lei 8.137/90, art. 4°.
 Pessoa jurídica: multa de até 20% do faturamento annual ou até R$ 2 bilhões,
dependendo do caso.
 Pessoa física: multa de até 20% da multa aplicada à empresa. Prisão por até
5 anos.
Quem investiga cartel?
Como identificar um cartel?
 Insight da Teoria dos Jogos: colaboração é mais provável quando o jogo é
repetido.
 = risco maior está nos produtos/serviços licitados com mais freqüência;
 = é preciso identificar quais empresas são co-licitantes com freqüência.
Dados brutos
LICITAÇÕES
licitação
resumo
órgão
data
empresa
lance
00000001
10 lápis
MPOG
18/03/09
XYZ
R$ 5,00
00000001
10 lápis
MPOG
18/03/09
ABC
R$ 4,50
00000002
5 lápis
MPOG
05/04/09
XYZ
R$ 4,50
00000002
5 lápis
MPOG
05/04/09
ABC
R$ 5,00
00000003
15 lápis
MPOG
25/05/09
XYZ
R$ 5,00
00000003
15 lápis
MPOG
25/05/09
ABC
R$ 4,50
00000004
10 lápis
MPOG
10/06/09
XYZ
R$ 4,50
00000004
10 lápis
MPOG
10/06/09
ABC
R$ 5,00
...
...
...
...
...
...
Dados brutos
VÍNCULOS SOCIETÁRIOS
CNPJ
CPFCNPJ
início
fim
%
00000001
00000003
01/01/05
18/03/09
50,0
00000001
00000004
31/07/05
0,1
00000002
00000001
25/07/08
20,0
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Dados brutos
VÍNCULOS EMPREGATÍCIOS
CPF
CNPJ
início
fim
cargo
salário
00000001
00000001
01/01/05
31/07/05
gerente
5000
00000002
00000001
25/07/08
vendedor
3000
00000003
00000002
03/10/07
18/03/09
diretor
7500
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Neo4j
 Open source.
 Comunidade ótima.
Neo4j: community support
Migração SQL Server -> Neo4j
Neo4j: o que dá pra fazer?
 Quem são os 5 co-licitantes mais freqüentes da empresa X?
 Todos os sócios, diretos e indiretos, da empresa X?
 Qual a participação total da empresa X na empresa Y, incluindo
participações diretas (X→Y) e indiretas (X → Z → Y)?
 Quais as pessoas a quem a pessoa X está vinculada (via emprego ou
sociedade) c/ até 3 graus de separação?
 Neo4j é mais rápido que SQL Server p/ esse tipo de consulta. E as queries são
mais simples de escrever.
Neo4j: sintaxe
MATCH (n)-[r*1..3]-(m)
WHERE (n.CPF IN ['01234567890'])
RETURN r
py2neo
Neo4j: Windows vs Linux
Como visualizar os grafos?
vis.js
vis.js
vis.js
vis.js
CÉREBRO
CÉREBRO
 Interface gráfica p/ as ferramentas de mineração de dados.
 Roda na intranet do CADE.
 Desenvolvido in-house.
CÉREBRO
 Idéia é democratizar o acesso a ferramentas de mineração de dados e
assim “empoderar” investigadores/analistas.
 É preciso muita experimentação – e muitos erros.
 data product bacana != data product útil
 “fator uau” não prediz o sucesso de uma funcionalidade.
CÉREBRO
CÉREBRO
CÉREBRO
 Versátil: web, mineração, tudo.
 Dá pra ir “de 0 a 100” em pouco
tempo.
 Open source.
CÉREBRO
 Minimalista.
 Django seria overkill.
 Open source.
CÉREBRO
 App no ar com apenas uma linha de
comando!
CÉREBRO
 Excelente p/ manipulação de dados.
 Reshaping, joins, etc.
 Estatísticas descritivas.
 Estatística básica.
 Conversões de formatos.
CÉREBRO
 Um dos membros do time prefere R.
 Com rpy2 é fácil “plugar” a parte
dele.
CÉREBRO
CÉREBRO
 Pacotes R:
 dplyr, reshape2 (manipulação de dados)
 stringr (processamento de textos)
 igraph (grafos)
 forecast, TSA, zoo, rugarch (p/ séries temporais)
 foreach, doParallel (operações multi-core)
 Amelia (imputação de dados)
CÉREBRO
 CADE já tinha a licença.
 SQL Server 2016 vai rodar R
nativamente.
NÃO-CÉREBRO
 Não usamos no CÉREBRO.
 Mas usamos p/ tarefas diversas de
aprendizado de máquina.
 Ex.: prever classe do produto licitado
com base em sua descrição.
 https://github.com/thiagomarzagao/
catmatfinder
NÃO-CÉREBRO
 IPython p/ análises exploratórias.
Como identificar um cartel?
 Impossível analisar cada licitação manualmente:
 ~300/dia, só no governo federal.
 Solução: minerar.
 Idéia inicial: algoritmos de classificação (SVM, random forest, etc).
 “Deixa os dados falarem.”
Como identificar um cartel?
 Problema: não há dados de treinamento.
 Poucas condenações por cartel em compras públicas até hoje.
 Difícil treinar um algoritmo de classificação c/ menos de 10 casos em uma
classe
 e com dezenas ou centenas de milhares de falsos negativos (sim, dezenas ou
centenas de milhares)
 mesmo c/ oversampling, pesos, etc
 
Solução: Teoria dos Jogos
Solução: Teoria dos Jogos
 A licitação é um jogo.
 Nós podemos modelar matematicamente esse jogo.
 Como são os lances quando não há cartel?
 Como são os lances quando há cartel?
 E nós podemos testar estatisticamente os resultados.
 Na ausência de cartel, qual a probabilidade de observarmos esses lances?
 Existe toda uma literatura sobre isso (behavioral screening).
Exemplo: Bajari & Ye (2003)
Exemplo: Bajari & Ye (2003)
Exemplo: Bajari & Ye (2003)
 Informalmente:
 Os lances precisam ser independentes entre si. O lance da empresa A não
pode nos ajudar a prever o lance da empresa B. O lance da empresa A não
pode depender de quais são as outras empresas na licitação.
 Se esse requerimento é violado, temos uma suspeita de cartel.
 Catch: não dá p/ testar uma licitação individualmente. A lógica do teste é
baseada num conjunto de licitações.
Exemplo: Bajari & Ye (2003)
teste de Kolmogorov-Smirnoff
(distribuição esperada vs distribuição observada)
Lição
 Nem tudo em mineração de dados é regressão/classificação/clusterização.
Pq open source?
 No começo cogitamos usar soluções
proprietárias. Mas logo desistimos.
 $$$$$$$$
 “E se adicionássemos tal ou qual
funcionalidade?”
 “Ok, mas temos licenças adicionais?”
 Pouca flexibilidade.
Outros órgãos?
Fracionamento de compras
 Lei 8.666/93
 Compras públicas geralmente requerem licitação.
 Mas apenas p/ compras acima de R$ 8 mil.
 “Jeitinho”: dividir compra em lotes inferiores a R$ 8 mil cada.
 É crime!
 Como identificar? CGU: redes bayesianas.
Fracionamento de compras
Irregularidades em convênios
 SICONV
 Governo federal transfere $ p/ estados e municípios, via convênios (obras
públicas, etc).
 Esse $ freqüentemente é usado de forma irregular: contratação de empresa
do próprio prefeito/governador, contratação de empresa inidônea, etc.
 Tudo isso é crime!
 Como identificar? TCU: árvores de decisão.
Irregularidades em convênios
Carta marcada na licitação
 Preços muito acima ou muito abaixo do normal podem ser indícios de
irregularidades.
 Caneta esferográfica a R$ 50/unidade: pode ser um acerto entre o pregoeiro
e o fornecedor, por exemplo.
 Como saber se o preço pago por um dado item é “normal”?
 Como identificar? CGU: Fixed Point Clusters (FPC)
Carta marcada na licitação
Carta marcada na licitação (2)
 Se:
 … a licitação é feita de forma pouco transparente
 … aditivos aumentam o valor inicial do contrato
 ... funcionários do órgão já trabalham p/ o fornecedor
 A probabilidade de corrupção é maior.
 Como identificar? TCU: Naïve Bayes.
Carta marcada na licitação (2)
Fraudes c/ crédito tributário
 Às vezes o contribuinte paga imposto a mais.
 Nesses casos pode-se pedir compensação.
 Mas nem sempre a compensação é devida.
 Como identificar? Receita Federal: regressão logística, Naïve Bayes, árvores
de decisão.
Fraudes c/ crédito tributário
O custo Brasília
O custo Brasília
 Recrutamento engessado.
 Decreto 8.135/2013: proíbe contratar AWS, GCE, etc.
 Bases sujas, c/ muitas lacunas e sem documentação.
 Retrabalho: diferentes órgãos limpando as mesmas bases de dados
(necessidade de uma data agency?).
 Brasília.
Rumo aos finalmentes.
Lição mais importante
State of the Union
 Há espaço p/ inovação no governo federal. Nem tudo são carimbos e
papelório.
 Áreas do governo federal que fazem mineração de dados: CGU, TCU,
Receita Federal, CADE, Polícia Federal, (outros?).
 http://www.brasildigital.gov.br/
 É preciso expandir p/ áreas não-punitivas: saúde, educação, meioambiente...
 Você pode contribuir: dados.gov.br
Ferramentas
 Grafos? Vale experimentar o Neo4j.
 Sem amostras suficientes numa classse? Teoria dos Jogos, econometria...
 Python vs R? Ora, pq não Python & R?
Sobre
 Cientista de dados.
 Professor de estatística e mineração de dados
(thiagomarzagao.com/teaching).
 Pesquisador (thiagomarzagao.com/papers).
 Entusiasta de LEGO Mindstorms (github.com/thiagomarzagao/ev3py).
 Ex-Ohio State University.
 [email protected], @tmarzagao
Download