Stealing Machine Learning Models via Prediction APIs

Via Cornell University

Machine learning (ML) models may be deemed confidential due to their sensitive training data, commercial value, or use in security applications. Increasingly often, confidential ML models are being deployed with publicly accessible query interfaces. ML-as-a-service (“predictive analytics”) systems are an example: Some allow users to train models on potentially sensitive data and charge others for access on a pay-per-query basis.
The tension between model confidentiality and public access motivates our investigation of model extraction attacks. In such attacks, an adversary with black-box access, but no prior knowledge of an ML model’s parameters or training data, aims to duplicate the functionality of (i.e., “steal”) the model. Unlike in classical learning theory settings, ML-as-a-service offerings may accept partial feature vectors as inputs and include confidence values with predictions. Given these practices, we show simple, efficient attacks that extract target ML models with near-perfect fidelity for popular model classes including logistic regression, neural networks, and decision trees. We demonstrate these attacks against the online services of BigML and Amazon Machine Learning. We further show that the natural countermeasure of omitting confidence values from model outputs still admits potentially harmful model extraction attacks. Our results highlight the need for careful ML model deployment and new model extraction countermeasures.

 

Anúncios
Stealing Machine Learning Models via Prediction APIs

Rexer Analytics Data Science Survey

Some interesting highlights.

• SURVEY & PARTICIPANTS: 59-item online survey conducted in 2015. Participants: 1,220 analytic professionals from 72 countries. This is the 7th survey in this ongoing research program.

• CORE ALGORITHM TRIAD: Regression, Decision Trees, and Cluster analysis remain the most commonly used algorithms in the field.

• THE ASCENDANCE OF R: 76% of respondents report using R. This is up dramatically from just 23% in 2007. More than a third of respondents (36%) identify R as their primary tool.

• JOB SATISFACTION: Job satisfaction in the field remains high, but has slipped since the 2013 survey. A number of factors predict Data Scientist job satisfaction levels.

• DEPLOYMENT: Deployment continues to be a challenge for organizations, with less than two thirds of respondents indicating that their models are deployed most or all of the time. Getting organizational buy-in is the largest barrier to deployment, with real-time scoring and other technology issues also causing significant deployment problems.

• TERMINOLOGY: The term “Data Scientist” has surged in popularity with over 30% of us describing ourselves as data scientists now compared to only 17% in 2013.

rexer-analytics-white-paper-9-21-16

Rexer Analytics Data Science Survey

Regras de Associação no Combate ao Crime no Brasil – Por Flávio Clesio

Não é segredo que vivemos em um país que está lamentavelmente listado como um dos mais violentos do mundo, em que temos 21 cidades entre as 50 mais violentas do mundo.

Se levarmos em consideração que em alguns estados do Brasil a taxa de esclarecimento de homicídios é de menos de 15%, temos um problema grave na segurança pública de maneira geral.

Mas se o crime por si só é a externalidade/consequência de diversos fatores como aspectos socioeconômicos, educacionais, e de ambiente (para citar alguns); o policiamento preventivo, isto é, o ataque direto das causas deve ser o norte de qualquer política de segurança pública; e é sobre isso que se trata esse post.

Através de uma base de dados sintética (extremamente desbalanceada) de dados que poderiam se extraídos de qualquer distrito policial ou mesmo de algum departamento de segurança pública vamos fazer a aplicação de uma técnica de Machine Learning chamada Association Rules ou Regras de Associação para formulação de políticas de segurança pública.

Como vamos iniciar a nossa análise sem nenhum tipo de hipótese e o objetivo é ver o conhecimento intrínseco da base de dados, vamos fazer um aprendizado não-supervisionado.

Contexto colocado, vamos para o R Studio.

Antes de mais nada, vamos limpar o nosso console e na sequência importar a biblioteca _arules_ no R.

# Clear the console
cat("\014") 

# Load arules library
library(arules)

Com a nossa lib importada, vamos realizar carregar a nossa base de dados no R.

# Load Dataset - This is a synthetic dataset, some inconsistencies can be found... as in the real world! 😉
crimes <- read.csv("https://raw.githubusercontent.com/fclesio/learning-space/master/Datasets/01%20-%20Association%20Rules/Crimes.csv")

Com a nossa base de dados importada, vamos agora ver as colunas da base de dados:

# See variables types
str(crimes)

Temos uma base de dados com 780 crimes com 16 variáveis que são:

  • Crime_id: Número da ocorrência.
  • Zona: Zona da cidade que a ocorrência foi registrada.
  • Periculosidade: Nível de periculosidade da área de acordo com mapeamentos anteriores.
  • Viaturas_Apoio_Forca_Tatica: Indica se tem reforços da Força Tática disponíveis na região. A grosso modo, Força Tática é um destacamento que ‘flutua’ na circulação e tem como objetivo atender a ocorrência mais próxima que a primeira força de atendimento não conseguir solucionar.
  • Patrulhamento: Indica se há patrulhamento pelas viaturas do batalhão mais próximo.
  • Policiamento_Ostensivo: Informa se há operações acontecendo com mais frequência. Um maior nível de policiamento aumenta também o enfrentamento policial, o que pode acarretar em mais óbitos de ambas as partes.
  • Apoio_GCM: Esse campo indica se a Guarda Civil Metropolitana circula na área da ocorrência. Diferente da PM ou da Civil; a GCM apesar das mesmas prerrogativas policiais tem uma função mais voltada à segurança patrimonial de alguns pontos da cidade e escolas.
  • Arma_Fogo: Houve arma de fogo na ocorrência.
  • Qtde_Vitimas: Número de vitimas da ocorrência.
  • Possui_DP: Tem Distrito Policial nas redondezas.
  • Tipo_Policiamento: O tipo de policiamento local influencia também na prática de crimes, em que áreas menos assistidas pelos batalhões podem ter um maior índice de violência em relação à áreas que não tem esse tipo de atendimento com um maior volume de viaturas e policiais.
  • Area_Residencial: Indica se é área residencial ou não.
  • Ocorrencia_Atendida_15_Minutos: Sabe-se que quanto mais demorado for o atendimento da ocorrência, as chances de resolução do evento criminoso em questão converge para a não solução efetiva. Esse campo indica se a ocorrência foi prontamente atendida.
  • Pericia: Informa se houve a perícia para auxiliar nas investigações.
  • Possui_UPP: Mostra se tem Unidade de Polícia Pacificadora instalada nas redondezas do evento criminoso
  • Iluminacao: Informa se o local do crime tinha iluminação ou não.

Com um pouco mais de trabalho na parte de data wrangling é possível criar mais algumas variáveis, mas como o foco aqui será de fazer uma primeira análise básica vamos seguir com algumas estatísticas básicas em relação a cada uma das variáveis da base de dados.

# See basic stats
summary(crimes)

Uma olhada rápida no sumário podemos tirar as seguintes informações:

  • Em relação ao tipo de policiamento vemos que temos um patrulhamento feito por diversos batalhões na metade dos casos, o que indica que há uma dispersão de batalhões (i.e. nenhum batalhão cuida específicamente de uma área) nessas áreas mais críticas;
  • 69% das localidades tem algum tipo de Distrito Policial nas redondezas do evento criminoso;
  • Apenas 1% dos locais não tem nenhum tipo de viatura da Força Tática;
  • Quase 70% das ocorrências acontecem com 3 ou mais pessoas. Isso nos faz a crer que pode ter dois tipos de vieses que são a) os crimes coletivos (e.g. arrastões, chacinas, etc.) são os mais reportados ou estão acontecendo de fato, ou b) os crimes menores como roubo de celular não estão sendo notificados;
  • Mais de metade das áreas dos eventos aconteceram em áreas consideradas com o nível de periculosidade altíssimo;
  • Pelos dados a Zona Sul está em chamas;
  • Com 88% dos locais com iluminação, pode ser que essa variável não seja mais a responsável pela inibição dos eventos criminosos;
  • Com apenas 49% dos casos periciados, as atividades de investigação podem em algum momento ter problemas de robustez de provas; e
  • Sendo o índice de patrulhamento em 90% e o policiamento ostensivo 83% nas regiões criminosas há indícios de que os criminosos estão indiferentes à presença policial.

São insights interessantes que nos auxiliam em algumas hipóteses como as levantadas. Neste ponto a análise descritiva básica pode ajudar e muito no início de uma política de segurança efetiva, e não pode ser descartada em nenhum momento. No nosso caso vamos avançar para a parte aplicada de machine learning que é o foco desse post.

Vamos criar um objeto utilizando o algoritmo a priori escolhendo um suporte de 55% (isso é, os conjuntos de itens estarão no mínimo em 55% de todas as transações) e com a confiança de 80% (isso é, a grosso modo é como dizer que há a probabilidade de 80% das transações encontradas serão derivadas dos itens contidos na base do suporte).

Não há uma regra única em relação à utilização do suporte e confiança, mas trazendo aqui uma heurística que eu sempre uso é que se o problema tem um volume de transações muito grande, o suporte será a métrica que vai dar mais robustez para descartar muitas regras redundantes, já se o problema tem uma caracterização com um menor volume de instâncias e se há uma necessidade de entrar mais no detalhe das regras e elas precisam de um grau de assertividade naturalmente maior (e.g. uma campanha de cartas em que há um custo operacional envolvido) aí utiliza-se a confiança. Mas lembrando, tudo isso depende do problema em questão.

Nesse caso, como os recursos a serem empregados são caros e escassos (viaturas e pessoal militar), então partiremos para uma confiança de 80%.

# The most important thing it's get a good support and a great confidence (This is a wishful thinking, in real world EVERYTHING can be happen!)
# The main task here is get a set a most meaningful way, so, shity rules will be discarted.
crimes_rulez <- apriori(crimes, parameter = list(minlen=4,maxlen=10, supp=0.55, conf=0.80))

Com o objeto criado, vamos agora reduzir para duas casas decimais as métricas de avaliação dessas regras para fins de simplicidade.

# Reduce the number of digits in measures of quality of the model
quality(crimes_rulez) <- round(quality(crimes_rulez), digits=2)

Apenas para fins de visualização, vamos criar alguns objetos de regras ordenando pela confiança e suporte para que possamos identificar de maneira mais efetiva as regras mais interessantes e acionáveis.

# Sort by Confidence and Support and Lift
model_srt_confidence <- sort(crimes_rulez, by="confidence")

model_srt_support <- sort(crimes_rulez, by="support")

Vamos agora inspecionar as nossas regras, de acordo com a confiança e o suporte:

# Check models (#66 rules)
inspect(model_srt_confidence)

inspect(model_srt_support)

Com esse comando acima, temos algumas regras:

      
   lhs                                     rhs                                  support confidence lift

1  {Apoio_GCM=Nao,                                                                                     
    Area_Residencial=Sim,                                                                              
    Iluminacao=Sim}                     => {Patrulhamento=Sim}                     0.57       0.98 1.09

63 {Area_Residencial=Sim,                                                                              
    Ocorrencia_Atendida_15_Minutos=Sim,                                                                
    Iluminacao=Sim}                     => {Zona=Zona_Sul}                         0.55       0.82 0.96

49 {Patrulhamento=Sim,                                                                                 
    Area_Residencial=Sim,                                                                              
    Ocorrencia_Atendida_15_Minutos=Sim,                                                                
    Iluminacao=Sim}                     => {Policiamento_Ostensivo=Sim}            0.58       0.89 1.08
  • A regra 1 indica que o patrulhamento está funcionando nos locais em que a PM não tem o apoio da GCM em áreas iluminadas de bairros residenciais;
  • A regra de número 63 mostra um primeiro padrão em relação a Zona Sul, em que com 82% de confiança essas ocorrências estão ligadas a lugares com malha residencial, iluminadas e a ocorrência foi feita dentro dos primeiros 15 minutos;
  • Já a regra 49 que o policiamento ostensivo está ocorrendo com 89% de confiança em áreas já patrulhadas em uma malha residencial iluminada em que o evento foi atendido em 15 minutos ou menos.

Com essas poucas regras acima podemos observar que o trabalho de primeiro atendimento está sendo feito dado que grande parte dessas ocorrências (dado o nível de suporte e confiança) estão sendo atendidas em um tempo de 15 minutos.

Outro ponto a ser considerado é que nas áreas residenciais estão ocorrendo muitos eventos criminosos. Isso pode ser um indicativo de que nas áreas de comércio e indústrias podem estar com baixa atratividade criminosa ou mesmo o policiamento nessas áreas está mais efetivo.  Uma estratégia aqui seria ver esses dois aspectos, e caso a segunda hipótese estiver correta replicar as ações de combate ao crime.

Já a Zona Sul que concentra grande parte das ocorrências, parece estar em chamas mesmo com um alto nível de patrulhamento, iluminação e policiamento ostensivo. Neste caso há a hipótese de que são o maior patrulhamento e um policiamento mais ostensivo além de ter uma ação mais rápida – que converge como o fato do atendimento de ocorrências demorar menos de 15 minutos –  ela tem o poder de jogar luz em uma demanda reprimida de registros policiais (i.e. crimes que não seriam registrados por ausência do poder público, ou mesmo por descaso do estado nunca entrariam nas estatísticas oficiais).

Em um segundo caso pode ser mesmo que uma facção criminosa esteja disputando controle direto com a polícia através de confrontos armados, ou mesmo atentados e roubos em áreas que são vigiadas pela polícia; o que sugere uma estratégia de inteligência para desarticular de dentro para fora milícias, grupos criminosos ou quadrilhas free lance que estejam levando terror a essas áreas.

Como são muitas regras e o objetivo é encontrar o máximo de regras específicas, vamos minerar algumas dessas regras usando campos específicos. Sendo assim vamos explorar um pouco mais das ocorrências que apresentaram as características de terem ocorrido na Zona Sul, em lugares iluminados, casos que as ocorrências foram atendidas em menos de 15 minutos ou que tiveram policiamento ostensivo.

# See specific rules of zones (I already mined some rules, but feel free to discover)
Zona_Sul <- subset(crimes_rulez, subset = rhs %pin% "Zona=Zona_Sul")

Iluminacao_Sim <- subset(crimes_rulez, subset = rhs %pin% "Iluminacao=Sim")

Ocorrencia_Atendida_15_Minutos_Sim <- subset(crimes_rulez, subset = rhs %pin% "Ocorrencia_Atendida_15_Minutos=Sim")

Policiamento_Ostensivo <- subset(crimes_rulez, subset = rhs %pin% "Policiamento_Ostensivo=Sim")

Esses objetos criados, tem somente as regras em que o RHS (right-hand-side) foram esses campos descritos no parágrafo anterior.

Vamos inspecionar esses objetos.

# Specific Rules
inspect(Zona_Sul)

inspect(Iluminacao_Sim)

inspect(Ocorrencia_Atendida_15_Minutos_Sim)

inspect(Policiamento_Ostensivo)

Seguindo a mesma lógica da análise acima, podemos ter os seguintes conjuntos de regras específicas:

Zona_Sul
8  {Patrulhamento=Sim,                                                            
    Policiamento_Ostensivo=Sim,                                                   
    Iluminacao=Sim}                     => {Zona=Zona_Sul}    0.66       0.88 1.03

9  {Patrulhamento=Sim,                                                            
    Area_Residencial=Sim,                                                         
    Iluminacao=Sim}                     => {Zona=Zona_Sul}    0.66       0.85 0.99


Iluminacao_Sim
   lhs                                     rhs              support confidence lift
12 {Patrulhamento=Sim,                                                             
    Policiamento_Ostensivo=Sim,                                                    
    Area_Residencial=Sim,                                                          
    Ocorrencia_Atendida_15_Minutos=Sim} => {Iluminacao=Sim}    0.58       0.96 1.09

13 {Zona=Zona_Sul,                                                                 
    Patrulhamento=Sim,                                                             
    Policiamento_Ostensivo=Sim,                                                    
    Area_Residencial=Sim}               => {Iluminacao=Sim}    0.61       0.95 1.08    


Ocorrencia_Atendida_15_Minutos_Sim
  lhs                             rhs                                  support confidence lift
5 {Zona=Zona_Sul,                                                                             
   Area_Residencial=Sim,                                                                      
   Iluminacao=Sim}             => {Ocorrencia_Atendida_15_Minutos=Sim}    0.55       0.81 1.08

7 {Patrulhamento=Sim,                                                                         
   Policiamento_Ostensivo=Sim,                                                                
   Area_Residencial=Sim,                                                                      
   Iluminacao=Sim}             => {Ocorrencia_Atendida_15_Minutos=Sim}    0.58       0.83 1.11


Policiamento_Ostensivo
   lhs                                     rhs                          support confidence lift
10 {Patrulhamento=Sim,                                                                         
    Area_Residencial=Sim,                                                                      
    Ocorrencia_Atendida_15_Minutos=Sim,                                                        
    Iluminacao=Sim}                     => {Policiamento_Ostensivo=Sim}    0.58       0.89 1.08

11 {Zona=Zona_Sul,                                                                             
    Patrulhamento=Sim,                                                                         
    Area_Residencial=Sim,                                                                      
    Iluminacao=Sim}                     => {Policiamento_Ostensivo=Sim}    0.61       0.93 1.12       

No caso dessas regras, tudo indica que mesmo com as ocorrências sendo atendidas em menos de 15 minutos em áreas residenciais iluminadas, a Zona Sul está com um problema grave de segurança.

A estratégia nesse caso seria investir de forma intensa em atividades de inteligência, dado que pelo que vimos pelos dados há uma situação de combate intenso com policia na rua e crimes acontecendo mesmo em situações em que os bandidos supostamente estariam intimidados.

Conclusão
Usando uma base sintética, vimos que é possível com algumas linhas de código e estatística descritiva básica ter insights sobre uma base de dados mesmo sem um conhecimento prévio.

No caso da nossa análise, vimos que pode haver uma situação de confronto clara em áreas residenciais mesmo com patrulhamento da polícia e policiamento ostensivo acontecendo.

Isso leva a crer que esses crimes estejam sendo reportados pelos aspectos acima, ou mesmo por uma maior disposição dos criminosos em agir em áreas controladas pela polícia. Isso pode indicar que o trabalho da polícia nesse caso não está sendo eficiente, e que uma estratégia de investigação através de atividades de inteligência devem ser colocadas em campo.

Regras de Associação no Combate ao Crime no Brasil – Por Flávio Clesio

A (very) provocative essay about systematic reviews

Via O’Reilly Ideas

Systematic reviews still the best method to validate (with some degree of certainty) any theory, but this is not a silver bullet.

Context: Currently, most systematic reviews and meta-analyses are done retrospectively with fragmented published information. This article aims to explore the growth of published systematic reviews and meta-analyses and to estimate how often they are redundant, misleading, or serving conflicted interests.

Methods: Data included information from PubMed surveys and from empirical evaluations of meta-analyses.

Findings: Publication of systematic reviews and meta-analyses has increased rapidly. In the period January 1, 1986, to December 4, 2015, PubMed tags 266,782 items as “systematic reviews” and 58,611 as “meta-analyses.” Annual publications between 1991 and 2014 increased 2,728% for systematic reviews and 2,635% for meta-analyses versus only 153% for all PubMed-indexed items. Currently, probably more systematic reviews of trials than new randomized trials are published annually. Most topics addressed by meta-analyses of randomized trials have overlapping, redundant meta-analyses; same topic meta-analyses may exceed 20 sometimes. Some fields produce massive numbers of meta-analyses; for example, 185 meta-analyses of antidepressants for depression were published between 2007 and 2014. These meta-analyses are often produced either by industry employees or by authors with industry ties and results are aligned with sponsor interests. China has rapidly become the most prolific producer of English-language, PubMed-indexed meta-analyses. The most massive presence of Chinese meta-analyses is on genetic associations (63% of global production in 2014), where almost all results are misleading since they combine fragmented information from mostly abandoned era of candidate genes. Furthermore, many contracting companies working on evidence synthesis receive industry contracts to produce meta-analyses, many of which probably remain unpublished. Many other meta-analyses have serious flaws. Of the remaining, most have weak or insufficient evidence to inform decision making. Few systematic reviews and meta-analyses are both non-misleading and useful.

Conclusions: The production of systematic reviews and meta-analyses has reached epidemic proportions. Possibly, the large majority of produced systematic reviews and meta-analyses are unnecessary, misleading, and/or conflicted.

 

A (very) provocative essay about systematic reviews

Ten Myths About Machine Learning

A killer post of Pedro Domingos about the common myths in Machine Learning.

Learning algorithms just discover correlations between pairs of events. This is the impression you get from most mentions of machine learning in the media. In one famous example, an increase in Google searches for “flu” is an early sign that it’s spreading. That’s all well and good, but most learning algorithms discover much richer forms of knowledge, such as the rule If a mole has irregular shape and color and is growing, then it may be skin cancer.

Ten Myths About Machine Learning