
Classificar dados com base no conteúdo é uma tarefa aberta. Os sistemas tradicionais de prevenção de perda de dados (DLP) resolvem esse problema ao fazer a impressão digital dos dados relevantes e monitorar os terminais de impressão digital. Dado o grande número de ativos de dados em constante mudança no Facebook, essa abordagem não apenas não é escalável, mas é ineficaz para determinar onde os dados estão. Este artigo é sobre um sistema de ponta a ponta desenvolvido para descobrir tipos semânticos confidenciais no Facebook em escala e aplicar automaticamente o armazenamento e o controle de acesso.
A abordagem descrita aqui é nosso primeiro sistema de privacidade ponta a ponta que tenta resolver esse problema incorporando sinais de dados, aprendizado de máquina e técnicas tradicionais de impressão digital para exibir e classificar todos os dados do Facebook. O sistema descrito é operado em um ambiente de produção, atingindo uma pontuação F2 média de 0,9+ para várias classes de privacidade enquanto processa grandes quantidades de recursos de dados em dezenas de instalações de armazenamento. Apresentando a tradução da postagem ArXiv do Facebook sobre classificação de dados escalonáveis para segurança e privacidade com base em aprendizado de máquina.
Introdução
As organizações hoje coletam e armazenam grandes quantidades de dados em vários formatos e locais [1], então os dados são consumidos em muitos lugares, às vezes copiados ou armazenados em cache várias vezes, com o resultado que informações comerciais valiosas e confidenciais estão espalhadas por muitos armazéns de dados corporativos. Quando uma organização é obrigada a cumprir determinados requisitos legais ou regulamentares, por exemplo, para cumprir regulamentos em processos civis, torna-se necessário coletar a localização dos dados relevantes. Quando a declaração de privacidade declara que uma organização deve mascarar todos os números de seguridade social (SSNs) ao compartilhar informações pessoais com entidades não autorizadas, a primeira etapa natural é pesquisar todos os SSNs nos armazenamentos de dados de toda a organização.Em tais circunstâncias, a classificação dos dados torna-se crítica [1]. O sistema de classificação permitirá que as organizações apliquem automaticamente as políticas de privacidade e segurança, tais como políticas de controle de acesso e retenção de dados. O Facebook está apresentando um sistema que construímos no Facebook que usa uma variedade de sinais de dados, uma arquitetura de sistema escalonável e aprendizado de máquina para descobrir tipos de dados semânticos sensíveis.arquitetura de sistema escalável e aprendizado de máquina para descobrir tipos de dados semânticos sensíveis.arquitetura de sistema escalável e aprendizado de máquina para descobrir tipos de dados semânticos sensíveis.
Encontrar e classificar dados é localizá-los e rotulá-los para que você possa recuperar informações relevantes de forma rápida e eficiente quando necessário. O processo atual é de natureza mais manual e consiste em examinar as leis ou regulamentos relevantes, determinar quais tipos de informação devem ser considerados confidenciais e quais são os diferentes níveis de sensibilidade, e então na construção de classe e política de classificação apropriadas [1]. Após os sistemas de prevenção de perda de dados (DLP), os dados são impressos e os endpoints são monitorados downstream em busca de impressões digitais. Ao lidar com um warehouse com muitos ativos e petabytes de dados, essa abordagem simplesmente não escala.
Nosso objetivo é construir um sistema de classificação de dados que se adapte a dados de usuário persistentes e voláteis, sem quaisquer restrições adicionais no tipo ou formato dos dados. Esta é uma meta ambiciosa e, naturalmente, repleta de dificuldades. Qualquer registro de dados pode ter milhares de caracteres.

Figura 1. Streams de previsão online e offline
Portanto, devemos representá-lo efetivamente usando um conjunto comum de recursos, que podem então ser combinados e facilmente movidos. Esses recursos não devem apenas fornecer uma classificação precisa, mas também fornecer flexibilidade e extensibilidade para adicionar e descobrir facilmente novos tipos de dados no futuro. Em segundo lugar, você precisa lidar com tabelas grandes e independentes. Os dados persistentes podem ser armazenados em tabelas com muitos petabytes de tamanho. Isso pode levar a uma diminuição na velocidade de varredura. Terceiro, devemos aderir a uma classificação de SLA estrita para dados voláteis. Isso torna o sistema altamente eficiente, rápido e preciso. Finalmente, precisamos fornecer classificação de dados de baixa latência para dados voláteis a fim de realizar a classificação em tempo real, bem como para casos de uso da Internet.
Este artigo descreve como lidamos com os problemas acima e apresenta um sistema de classificação rápido e escalonável que classifica itens de dados de todos os tipos, formatos e fontes com base em um conjunto comum de recursos. Estendemos a arquitetura do sistema e construímos um modelo de aprendizado de máquina personalizado para classificar rapidamente os dados offline e online. Este artigo está organizado da seguinte forma: a seção 2 apresenta o design geral do sistema. A seção 3 discute as partes de um sistema de aprendizado de máquina. As Seções 4 e 5 descrevem o trabalho relacionado e delineiam a direção futura do trabalho.
Arquitetura
Para lidar com dados persistentes na escala do Facebook e problemas de dados online, o sistema de classificação tem dois fluxos separados, que discutiremos em detalhes.
Dados persistentes
Inicialmente, o sistema precisa aprender sobre uma variedade de ativos de informações do Facebook. Para cada warehouse, algumas informações básicas são coletadas, como o data center que contém esses dados, o sistema com esses dados e os ativos localizados em um data warehouse específico. Isso forma um catálogo de metadados, permitindo que o sistema recupere dados de maneira eficiente sem sobrecarregar clientes e recursos usados por outros engenheiros.
Este catálogo de metadados fornece uma fonte confiável para todos os ativos varridos e permite rastrear a integridade de vários ativos. Essas informações são usadas para priorizar a programação com base nos dados coletados e nas informações internas do sistema, como a hora da última varredura bem-sucedida do ativo e a hora em que foi criado, bem como a memória anterior e os requisitos de processador para esse ativo se ele foi varrido anteriormente. Em seguida, para cada recurso de dados (conforme os recursos se tornam disponíveis), o trabalho de verificação real para o recurso é chamado.
Cada trabalho é um binário compilado que executa uma busca Bernoulli nos dados mais recentes disponíveis para cada ativo. O ativo é dividido em colunas separadas, onde o resultado da classificação para cada coluna é processado de forma independente. Além disso, o sistema verifica todos os dados ricos nas colunas. JSON, matrizes, estruturas codificadas, URLs, dados serializados de base 64 e muito mais são verificados. Isso pode aumentar drasticamente o tempo de execução da varredura, pois uma única tabela pode conter milhares de colunas aninhadas em um blob
json
.
Para cada linha selecionada no ativo de dados, o sistema de classificação extrai flutuações e objetos de texto do conteúdo e associa cada objeto de volta à coluna da qual foi retirado. O resultado da etapa de extração de recursos é um mapa de todos os recursos para cada coluna encontrada no ativo de dados.
Para que servem os sinais?
O conceito de traços é fundamental. Em vez de flutuação e características de texto, podemos passar padrões de string brutos que são obtidos diretamente de cada recurso de dados. Além disso, os modelos de aprendizado de máquina podem ser treinados diretamente em cada amostra, em vez de centenas de cálculos de recursos que tentam apenas aproximar a amostra. Há várias razões para isso:
- : , , . , . , , .
- : . . , , .
- : , . .
Os recursos são então enviados para um serviço de previsão onde usamos classificação baseada em regras e aprendizado de máquina para prever os rótulos de dados de cada coluna. O serviço depende de classificadores de regra e aprendizado de máquina e seleciona a melhor previsão fornecida de cada objeto de previsão.
Classificadores de regra são heurísticas manuais que usam cálculos e coeficientes para normalizar um objeto no intervalo de 0 a 100. Uma vez que tal pontuação inicial é gerada para cada tipo de dados e nome de coluna associado a esses dados, ela não é incluída em nenhuma "lista de negação" , o classificador de regra seleciona a pontuação normalizada mais alta entre todos os tipos de dados.
Devido à complexidade da classificação, o uso de heurísticas puramente manuais resulta em baixa precisão de classificação, especialmente para dados não estruturados. Por esse motivo, desenvolvemos um sistema de aprendizado de máquina para trabalhar com a classificação de dados não estruturados, como conteúdo gerado pelo usuário e endereço. O aprendizado de máquina nos permitiu começar a nos distanciar da heurística manual e aplicar sinais de dados adicionais (por exemplo, nomes de colunas, origens de dados), melhorando significativamente a precisão da detecção. Vamos nos aprofundar em nossa arquitetura de aprendizado de máquina mais tarde.
O Prediction Service armazena os resultados de cada coluna junto com metadados sobre a hora e o estado da varredura. Quaisquer consumidores e processos downstream que dependam desses dados podem lê-los do conjunto de dados publicado diariamente. Este conjunto agrega os resultados de todos esses trabalhos de varredura ou a API em tempo real do catálogo de dados. As previsões publicadas são a base para a aplicação automática das políticas de privacidade e segurança.
Finalmente, depois que o serviço de previsão gravar todos os dados e salvar todas as previsões, nossa API Data Catalog pode retornar todas as previsões de tipo de dados para um recurso em tempo real. Todos os dias, o sistema publica um conjunto de dados contendo todas as previsões mais recentes para cada ativo.
Dados voláteis
Embora o processo acima seja projetado para ativos persistentes, o tráfego não persistente também é considerado parte dos dados da organização e pode ser importante. Por esse motivo, o sistema fornece uma API online para gerar previsões de classificação em tempo real para qualquer tráfego volátil. A previsão em tempo real é amplamente usada para classificar o tráfego de saída, o tráfego de entrada em modelos de aprendizado de máquina e dados de anunciantes.
A API usa dois argumentos principais aqui: a chave de agrupamento e os dados brutos a serem previstos. O serviço faz a mesma recuperação de objeto descrita acima e agrupa objetos para a mesma chave. Esses sintomas também são suportados no cache persistente para failover. Para cada chave de agrupamento, o serviço garante que viu amostras suficientes antes de chamar o serviço de previsão, seguindo o processo descrito acima.
Otimização
Usamos bibliotecas e técnicas de otimização de leitura de armazenamento a quente [2] para escanear alguns repositórios e garantir que não haja interrupção de outros usuários acessando o mesmo repositório.
Para tabelas extremamente grandes (50+ petabytes), apesar de todas as otimizações e eficiência de memória, o sistema trabalha para verificar e computar tudo antes que fique sem memória. Afinal, a varredura é totalmente computada na memória e não é armazenada durante a varredura. Se tabelas grandes contiverem milhares de colunas com blocos de dados não estruturados, o trabalho pode falhar devido a recursos de memória insuficientes ao fazer previsões para a tabela inteira. Isso reduzirá a cobertura. Para combater isso, otimizamos o sistema para usar a velocidade de varredura como um mediador sobre como o sistema está lidando com a carga atual. Usamos a velocidade como um mecanismo de previsão para ver os problemas de memória e calcular proativamente os mapas de recursos.No entanto, usamos menos dados do que o normal.
Sinais de dados
O sistema de classificação é tão bom quanto os sinais dos dados. Aqui, examinamos todos os sinais usados pelo sistema de classificação.
- Baseado em conteúdo: é claro, o primeiro e mais importante sinal é o conteúdo. Uma amostra Bernoulli é obtida para cada ativo de dados que varremos e extração de recursos por conteúdo de dados. Muitos sinais vêm do conteúdo. Qualquer número de flutuações é possível, o que representa cálculos de quantas vezes um determinado tipo de padrão foi visto. Por exemplo, podemos ter sinais de boca para o número de e-mails vistos em uma amostra ou indicadores de quantos emoticons foram vistos em uma amostra. Esses cálculos de recursos podem ser normalizados e agregados em diferentes varreduras.
- : , , . — . , , . , .
- : , . . , .
- — , , . , , , , . , . , .
Um componente importante é uma metodologia rigorosa para medir métricas. As principais métricas da iteração de melhoria de classificação são a precisão e a lembrança de cada rótulo, com a pontuação F2 sendo a mais importante.
O cálculo dessas métricas requer uma metodologia independente para rotular ativos de dados que é independente do próprio sistema, mas pode ser usada para comparar diretamente com ele. Abaixo, descrevemos como coletamos verdades básicas do Facebook e as usamos para treinar nosso sistema de classificação.
Coletando dados confiáveis
Nós acumulamos dados confiáveis de cada fonte listada abaixo em sua própria tabela. Cada tabela é responsável por agregar os valores mais recentes observados dessa fonte específica. Cada fonte tem uma verificação de qualidade de dados para garantir que os valores observados para cada fonte sejam de alta qualidade e contenham os rótulos de tipo de dados mais recentes.
- Configurações da plataforma de registro: certos campos nas tabelas da colméia são preenchidos com dados que pertencem a um determinado tipo. O uso e a disseminação desses dados servem como uma fonte confiável de dados confiáveis.
- : , , . , , .
- , .
- : Facebook . , , , . .
- : , , , , . , .
- : , . , , GPS.
- : , , . .
Combinamos todas as principais fontes de dados válidos em um corpus com todos esses dados. O maior problema com a validade é ter certeza de que ele é representativo do armazenamento de dados. Caso contrário, os mecanismos de classificação podem se ajustar demais. Na luta contra isso, todas as fontes acima são utilizadas para fornecer equilíbrio ao treinar modelos ou calcular métricas. Além disso, os profissionais de marketing humanos selecionam uniformemente diferentes colunas na loja e rotulam os dados de maneira adequada para manter a coleção de valores válidos imparcial.
Integração contínua
Para permitir a iteração e o aprimoramento rápidos, é importante sempre medir o desempenho do sistema em tempo real. Podemos medir todas as melhorias na classificação em comparação com o sistema atual, para que possamos direcionar os dados taticamente para melhorias futuras. Aqui, vemos como o sistema completa um ciclo de feedback que é conduzido por dados válidos.
Quando o sistema de agendamento encontra um ativo marcado de uma fonte confiável, agendamos duas tarefas. O primeiro usa nosso scanner de fabricação e, portanto, nossas capacidades de fabricação. A segunda tarefa usa o scanner de construção mais recente com os recursos mais recentes. Cada tarefa grava sua saída em sua própria tabela, sinalizando as versões junto com os resultados da classificação.
É assim que comparamos os resultados da classificação do candidato a lançamento e do modelo de produção em tempo real.
Embora os conjuntos de dados comparem os recursos RC e PROD, muitas variações do mecanismo de classificação de ML do serviço de previsão são registradas. Modelo de aprendizado de máquina construído mais recente, modelo atual em produção e quaisquer modelos experimentais. A mesma abordagem nos permite "fatiar" diferentes versões do modelo (independente de nossos classificadores de regras) e comparar as métricas em tempo real. É muito fácil saber quando um experimento de ML está pronto para entrar em produção.
Todas as noites, os RCs calculados para esse dia são enviados para o pipeline de treinamento de ML, onde o modelo é treinado nos RCs mais recentes e avalia seu desempenho em relação a um conjunto de dados válido.
Todas as manhãs, o modelo conclui o treinamento e é publicado automaticamente como experimental. Ele é incluído automaticamente na lista experimental.
Alguns resultados
Mais de 100 tipos diferentes de dados são marcados com alta precisão. Tipos bem estruturados, como e-mails e números de telefone, são classificados com uma pontuação de f2 acima de 0,95. Tipos de dados soltos, como conteúdo personalizado e nome, também funcionam muito bem, com pontuações F2 acima de 0,85.
Um grande número de colunas separadas de dados persistentes e voláteis é classificado diariamente em todas as lojas. Mais de 500 terabytes são verificados diariamente em mais de 10 armazenamentos de dados. A maioria desses repositórios tem mais de 98% de cobertura.
A classificação se tornou muito eficiente ao longo do tempo, pois as tarefas de classificação em um fluxo offline persistente levam em média 35 segundos desde a varredura de um ativo até o cálculo de previsões para cada coluna.

Figura: 2. Um diagrama que descreve o fluxo contínuo de integração para entender como os objetos RC são gerados e enviados para o modelo.

Figura 3. Diagrama de alto nível de um componente de aprendizado de máquina.
Componente do sistema de aprendizado de máquina
Na seção anterior, mergulhamos profundamente na arquitetura de todo o sistema, destacando a escala, a otimização e os fluxos de dados offline e online. Nesta seção, veremos o serviço de previsão e descreveremos o sistema de aprendizado de máquina que alimenta o serviço de previsão.
Com mais de 100 tipos de dados e algum conteúdo não estruturado, como dados de postagem e conteúdo gerado pelo usuário, o uso de heurísticas puramente manuais resulta em precisão de classificação subparamétrica, especialmente para dados não estruturados. Por esse motivo, também desenvolvemos um sistema de aprendizado de máquina para lidar com as complexidades dos dados não estruturados. O uso do aprendizado de máquina permite que você comece a se afastar das heurísticas manuais e trabalhe com recursos e sinais de dados adicionais (por exemplo, nomes de colunas, origens de dados) para melhorar a precisão.
O modelo implementado estuda representações vetoriais [3] sobre objetos densos e esparsos separadamente. Eles são então combinados para formar um vetor que passa por uma série de etapas de normalização em lote [4] e não linearidade para produzir o resultado final. O resultado final é um número de ponto flutuante entre [0-1] para cada rótulo, indicando a probabilidade de que o exemplo seja do tipo de sensibilidade fornecido. Usar o PyTorch para o modelo nos permitiu mover mais rápido, permitindo que desenvolvedores fora da equipe fizessem e testassem mudanças rapidamente.
Ao projetar a arquitetura, era importante modelar objetos esparsos (por exemplo, texto) e densos (por exemplo, numéricos) separadamente devido à sua diferença interna. Também era importante para a arquitetura final realizar uma varredura de parâmetro para encontrar o valor ideal para a taxa de aprendizagem, tamanho do pacote e outros hiperparâmetros. A seleção do otimizador também foi um hiperparâmetro importante. Descobrimos que o popular otimizador Adam geralmente leva ao overfitting, enquanto o modelo SGDmais estável. Havia nuances adicionais que precisávamos incluir diretamente no modelo. Por exemplo, regras estáticas que garantem que o modelo faça uma predição determinística quando um recurso possui um determinado valor. Essas regras estáticas são definidas por nossos clientes. Descobrimos que incluí-los diretamente no modelo resultou em uma arquitetura mais independente e robusta, em oposição à implementação de uma etapa de pós-processamento para lidar com esses casos especiais. Observe também que essas regras são desativadas durante o treinamento para não interferir no processo de treinamento de descida gradiente.
Problemas
Coletar dados confiáveis e de alta qualidade foi um dos desafios. O modelo precisa de validade para cada classe para que possa aprender associações entre objetos e rótulos. Na seção anterior, discutimos os métodos de coleta de dados para medir o sistema e os modelos de treinamento. A análise mostrou que classes de dados como números de cartão de crédito e contas bancárias não são muito comuns em nosso armazenamento. Isso torna difícil coletar grandes quantidades de dados confiáveis para modelos de treinamento. Para resolver esse problema, desenvolvemos processos para obter dados sintéticos válidos para essas classes. Geramos esses dados para tipos confidenciais, incluindo SSN , números de cartão de crédito e IBAN-números para os quais o modelo não pôde prever anteriormente. Essa abordagem permite que tipos de dados confidenciais sejam tratados sem o risco de privacidade associado à ocultação de dados confidenciais reais.
Além dos problemas de integridade de dados, existem problemas de arquitetura aberta em que estamos trabalhando, como isolar mudanças e parar antecipadamente.... O isolamento das alterações é importante para que, quando várias alterações forem feitas em diferentes partes da rede, o impacto seja isolado de classes específicas e não tenha um impacto amplo no desempenho geral da previsão. Melhorar os critérios de parada antecipada também é fundamental para que possamos interromper o treinamento em um ponto estável para todas as classes, em vez de em um ponto onde algumas classes são retreinadas e outras não.
Importância do sinal
Quando um novo recurso é introduzido no modelo, queremos saber seu impacto geral no modelo. Também queremos ter certeza de que as previsões são interpretáveis por humanos, para que possamos entender exatamente quais recursos são usados para cada tipo de dados. Para isso, desenvolvemos e introduzimos aula por aulaa importância dos recursos para o modelo PyTorch. Observe que isso difere da importância geral de uma característica, que geralmente é mantida porque não nos diz quais características são importantes para uma classe particular. Medimos a importância de um objeto calculando o aumento no erro de previsão após reorganizar o objeto. Uma característica é "importante" quando uma permutação de valores aumenta o erro do modelo porque, neste caso, o modelo confiou na característica na previsão. Uma característica é "sem importância" quando o embaralhamento de seus valores deixa o erro do modelo inalterado, já que neste caso o modelo o ignorou [5].
A importância do recurso para cada classe nos permite tornar o modelo interpretável para que possamos ver a que o modelo está prestando atenção ao prever o rótulo. Por exemplo, quando analisamos ADDR, garantimos que um traço relacionado ao endereço, como AddressLinesCount , tenha uma classificação elevada na tabela de importância do traço para cada classe, para que nossa intuição humana corresponda bem ao que o modelo aprendeu.
Avaliação
É importante definir uma métrica comum para o sucesso. Escolhemos F2 - equilíbrio entre recordação e precisão (o viés de recordação é ligeiramente maior). O feedback é mais importante em um caso de uso de privacidade do que a precisão, porque é fundamental para a equipe não vazar nenhum dado confidencial (ao mesmo tempo que garante uma precisão razoável). As estimativas reais do desempenho F2 de nosso modelo estão além do escopo deste artigo. No entanto, com ajuste cuidadoso, podemos atingir uma pontuação F2 alta (0,9+) para as classes sensíveis mais importantes.
Trabalho relatado
Existem muitos algoritmos para classificação automática de documentos não estruturados usando vários métodos, como correspondência de padrões, pesquisa por similaridade de documentos e vários métodos de aprendizagem de máquina (Bayesiano, árvores de decisão, k-vizinhos mais próximos e muitos outros) [6]. Qualquer um deles pode ser usado como parte da classificação. No entanto, o problema é a escalabilidade. A abordagem de classificação neste artigo é tendenciosa para flexibilidade e desempenho. Isso nos permite oferecer suporte a novas classes no futuro e manter a latência baixa.
Também há uma tonelada de trabalho de impressão digital de dados. Por exemplo, os autores em [7] descreveram uma solução que enfoca o problema de detecção de vazamentos de dados confidenciais. A principal suposição é que é possível que uma impressão digital de dados corresponda a um conjunto de dados sensíveis conhecidos. Os autores em [8] descrevem um problema de vazamento de privacidade semelhante, mas sua solução é baseada em uma arquitetura Android específica e é classificada apenas quando as ações do usuário resultaram no envio de informações pessoais ou quando dados do usuário vazaram no aplicativo subjacente. A situação aqui é um pouco diferente, pois os dados do usuário também podem ser altamente desestruturados. Portanto, precisamos de uma técnica mais sofisticada do que tirar impressões.
Finalmente, para lidar com a falta de dados para alguns tipos de dados confidenciais, introduzimos os dados sintéticos. Há uma grande quantidade de literatura sobre aumento de dados, por exemplo, os autores em [9] investigaram o papel da injeção de ruído durante a aprendizagem e observaram resultados positivos na aprendizagem supervisionada. Nossa abordagem à privacidade é diferente porque a introdução de dados com ruído pode ser contraproducente. Em vez disso, nos concentramos em dados sintéticos de alta qualidade.
Conclusão
Neste artigo, apresentamos um sistema que pode classificar um dado. Isso nos permite criar sistemas para garantir a conformidade com as políticas de privacidade e segurança. Mostramos que infraestrutura escalonável, integração contínua, aprendizado de máquina e fidelidade de dados de alta qualidade são a chave para o sucesso de muitas de nossas iniciativas de privacidade.
Existem muitas áreas para trabalhos futuros. Pode incluir fornecer suporte para dados não esquemáticos (arquivos), classificar não apenas o tipo de dados, mas também o nível de sensibilidade, e usar o aprendizado autossupervisionado diretamente durante o treinamento, gerando exemplos sintéticos precisos. O que, por sua vez, ajudará o modelo a reduzir ao máximo as perdas. O trabalho futuro também pode se concentrar no fluxo de trabalho de investigação, onde vamos além da detecção e fornecemos análise de causa raiz para várias violações de privacidade. Isso ajudará em casos como análise de sensibilidade (ou seja, se a sensibilidade da privacidade do tipo de dados é alta (por exemplo, o IP do usuário) ou baixa (por exemplo, o IP interno do Facebook)).
Bibliografia
- David Ben-David, Tamar Domany, and Abigail Tarem. Enterprise data classification using semantic web technolo- gies. In Peter F.Ï Patel-Schneider, Yue Pan, Pascal Hitzler, Peter Mika, Lei Zhang, Jeff Z. Pan, Ian Horrocks, and Birte Glimm, editors, The Semantic Web – ISWC 2010, pages 66–81, Berlin, Heidelberg, 2010. Springer Berlin Heidelberg.
- Subramanian Muralidhar, Wyatt Lloyd, Sabyasachi Roy, Cory Hill, Ernest Lin, Weiwen Liu, Satadru Pan, Shiva Shankar, Viswanath Sivakumar, Linpeng Tang, and Sanjeev Kumar. f4: Facebook’s warm BLOB storage system. In 11th USENIX Symposium on Operating Systems Design and Implementation (OSDI 14), pages 383–398, Broomfield, CO, October 2014. USENIX Association.
- Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg S Corrado, and Jeff Dean. Distributed representations of words and phrases and their compositionality. In C. J. C. Burges, L. Bottou, M. Welling, Z. Ghahramani, and K. Q. Weinberger, editors, Advances in Neural Information Processing Systems 26, pages 3111–3119. Curran Associates, Inc., 2013.
- Sergey Ioffe and Christian Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In Francis Bach and David Blei, editors, Proceedings of the 32nd International Conference on Machine Learning, volume 37 of Proceedings of Machine Learning Research, pages 448–456, Lille, France, 07–09 Jul 2015. PMLR.
- Leo Breiman. Random forests. Mach. Learn., 45(1):5–32, October 2001.
- Thair Nu Phyu. Survey of classification techniques in data mining.
- X. Shu, D. Yao, and E. Bertino. Privacy-preserving detection of sensitive data exposure. IEEE Transactions on Information Forensics and Security, 10(5):1092–1103, 2015.
- Zhemin Yang, Min Yang, Yuan Zhang, Guofei Gu, Peng Ning, and Xiaoyang Wang. Appintent: Analyzing sensitive data transmission in android for privacy leakage detection. pages 1043–1054, 11 2013.
- Qizhe Xie, Zihang Dai, Eduard H. Hovy, Minh-Thang Luong, and Quoc V. Le. Unsupervised data augmentation.
, Level Up , - SkillFactory:
- Data Science (12 )
- Machine Learning (12 )
- «Machine Learning Pro + Deep Learning» (20 )
- « Machine Learning Data Science» (20 )
E