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