Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Machine Learning no Mundo Real, Trabalhos de Aprendizagem de Máquinas

Tecnologias de Machine Learning (ML) e Deep Learning, como o Apache Spark, o Flink, o CNTK da Microsoft, o TensorFlow e o Caffe aproximaram a análise de dados para a comunidade de desenvolvimento. Seja classificando dois milhões de produtos a serem vendidos recebidos de mais de 700 vendedores multinacionais na organização “Love the Sales”, construindo consciência de algum viés oculto com clientes no site Einstein da Salesforce ou entendendo o comportamento de um sistema de software com Machine L

Tipologia: Trabalhos

2020

Compartilhado em 16/11/2020

fulvio-barbosa
fulvio-barbosa 🇧🇷

5

(1)

3 documentos

1 / 37

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
FACILITANDO A DIFUSÃO DE CONHECIMENTO E INOVAÇÃO NO DESENVOLVIMENTO DE SOFTWARE
ARTIGO pág 6
Mais bytes
no seu
bolso
ARTIGO pág 13
De volta para o Futuro:
desmistificando o viés
cognitivo
ARTIGO pág 24
Analisando e prevenindo o
preconceito inconsciente
em Machine Learning
Machine Learning
no Mundo Real
Estudos de caso, técnicas e riscos
Agosto 2019
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25

Pré-visualização parcial do texto

Baixe Machine Learning no Mundo Real e outras Trabalhos em PDF para Aprendizagem de Máquinas, somente na Docsity!

FACILITANDO A DIFUSÃO DE CONHECIMENTO E INOVAÇÃO NO DESENVOLVIMENTO DE SOFTWARE

ARTIGO pág 6

Mais bytes

no seu

bolso

ARTIGO pág 13

De volta para o Futuro:

desmistificando o viés

cognitivo

ARTIGO pág 24

Analisando e prevenindo o

preconceito inconsciente

em Machine Learning

Machine Learning

no Mundo Real

Estudos de caso, técnicas e riscos

Agosto 2019

NESTA EDIÇÃO

Mais bytes no seu bolso

(^6) A Lovethesales.com teve que classificar dados de um milhão de produtos de mais de 700 fontes diferentes em um vasto domínio. Eles decidiram criar uma hierarquia de classificadores utilizando machine learning, especificamente Support Vector Machines. Eles aprenderam que otimizando a maneira em que svms foram conectadas levando a várias melhorias no reuso de dados de treinamento rotulados.

De volta para o Futuro: Desmistificando o Viés Cognitivo

13 A IA nas empresas tem nuances mais predominantes nos dados de entrada quando comparado com a IA aplicada a um consumidor ou na academia. O calcanhar de Aquiles neste domínio é o viés cognitivo. Em termos leigos, é como o Marty McFly (De volta para o Futuro) viajando para o futuro, colocando as mãos no almanaque esportivo e usando-o para apostar nos jogos do presente. Mayukh Bhaowal, do Salesforce Einstein, explica como neutralizar este efeito.

Analisando e prevenindo o preconceito inconsciente em

(^24) Machine Learning Este artigo é baseado na palestra de Rachel Thomas, “Analisando e Prevenindo o preconceito inconsciente na Aprendizagem de Máquina” apresentado na QCon.ai 2018. Thomas trabalha na fast, um laboratório de pesquisa sem fins lucrativos que possui parceria com o Instituto de Dados da Universidade de São Francisco em fornecer treinamento em aprendizado profundo para a comunidade de desenvolvedores.

Entendendo o comportamento de sistemas e softwares

18 com Machine Learning e dados de séries temporais No QCon.ai 2018, David Andrzejewski apresentou “Entendendo o Comportamento Sistêmico de Softwares com Machine Learning e dados de séries temporais”. David é gerente de engenharia na Sumo Logic, uma plataforma em nuvem para análise de dados de máquinas. Os desenvolvedores que já estiverem rodando um software (como um app ou cluster em nuvem) podem usar a Sumo Logic como backend de seus logs de sistemas. A Sumo Logic proporciona inteligência contínua para dados de máquina.

Podemos confiar em algoritmos para tomada

(^30) de decisão automática?

A adoção de tomada de decisão automática vem crescendo a cada dia. Os algoritmos podem produzir resultados socialmente não compreendidos. Há como afirmar que são seguros se não podemos compreendê-los? Os receios do público sobre a incapacidade de prever as consequências adversas impediram tecnologias como a energia nuclear e as culturas geneticamente modificadas.

NOS ACOMPANHE FALE CONOSCO

FEEDBACK feedback-br@infoq.com VENDAS sales-br@infoq.com EDITORIAL editor-br@infoq.com

/InfoQBrasil /qconsp/

@InfoQBrasil @QConSP

/company/qcon- são-paulo/

Roland Meertens É um engenheiro de visão computacional trabalhando com inteligência artificial de percepção em carros autônomos Autonomous Intelligent Driving, uma subsidiária da Audi. Ele trabalhou em coisas interessantes como tradução neural de máquinas, fuga de obstaculos em drones pequenos e um robô social para idosos. Além de escrever notícias sobre machine learning no InfoQ, ele algumas vezes publica em seu blog Ping of Intelligence e no Twitter.

Michael Stiefe Principal na Reliable Software, Inc, é um consultor de arquitetura de software e desenvolvimento, e o alinhamento de tecnologia da informação com metas de negócios. Ele deu aulas no Departamento de Aeronáutica e Astronáutica do Instituto de Tecnologia de Massachusetts, onde sua pesquisa e foco de docência foi em entender como pessoas constroem modelos mentais para resolver problemas. Como professor adjunto, ele ensinou graduandos nos cursos de engenharia de software na Norteastern University e na Framingham State University. Ele explora seu interesse em tecnologia e arte no blog Art and Software.

David Bishop Depois de estudar ciência da computação na Nova Zelândia, David Bishop se mudou para Londres e liderou o time técnico do reed.co.uk, um dos 100 maiores sites de emprego do Reino Unido. Ele fundou seu próprio negócio de tecnologia, o Love the Sales, que procura agregar todas as vendas de milhares de sites de comércio.

Mayukh Bhaowal É diretor de gestão de produtos na Salesforce Einstein, trabalhando em machine learning automatizado e ciência de dados. Mayukh é mestre em ciência da computação pela Universidade de Stanford. Antes da Salesforce, ele trabalhou em startups na área de machine learning e analytics. Ele atuou como chefe de produto na Scaled Interference, uma startup de plataforma de machine learning apoiada pela Khosla Venture e gerenciou produtos na Narvar, uma startup de e-commerce apoiada pela Accel. Ele também foi um gerente de produtos principal no Yahoo e Oracle.

COLABORADORES

Srini Penchikala Srini Penchikala trabalha atualmente como um arquiteto de software sênior em Austin, Texas. Penchikala tem mais de 22 anos de experiência em arquitetura de software, design e desenvolvimento. Ele também é o líder editorial para a comunidade de AI, ML e Engenharia de dados do InfoQ, que atualmente publicou seu minibook Processamento de Big Data com Apache Spark. Ele publicou artigos sobre arquitetura de software, segurança, gerenciamento de riscos, NoSQL e big data em sites como o InfoQ, TheServerSide, O’Reilly Network (OnJava), DevX’s Java Zone, Java.net, e JavaWorld.

MAIS BYTES NO SEU BOLSO

pontos principais

  • As SVM’s (máquina de vetores de suporte) são uma ferramenta eficaz para classificar documentos.
  • Ao reduzir o tamanho de grandes conjuntos de dados/ vetores, o treinamento de seus modelos é facilitado.
  • Ao reutilizar dados rotulados por meio de relacionamentos vinculados, o custo do treinamento de cargas de dados é reduzido e aumenta a precisão das previsões.
  • Escolher as estruturas de dados corretas é muito importante para alcançar os melhores resultados.
  • Diminuir a hierarquia de dados pode ser útil para reduzir o número de SVMs.

por David Bishop

Em muitos casos, a aquisição de dados de

treinamento bem rotulados é uma grande

dificuldade para desenvolver sistemas

de predição acurados com aprendizado

supervisionado.

Na Love the Sales, agregamos produtos

de venda de mais de 700 fornecedores

internacionais, resultando em mais de 2

milhões de produtos por dia que precisam

de classificação. Com uma equipe tradicional

de merchandising, seriam necessários 4 anos

para realizar esta tarefa manualmente.

lavras diferentes conhecidas) foi certamente um obstáculo. Usa- mos também algumas técnicas bem conhecidas para fazer um pré-processamento em nossos documentos o que nos ajudou a reduzir o tamanho da variável, como: conversão para letras minúsculas, stemização, remoção de números e de caracteres inco- muns e palavras “ruidosas”.

A Stemização é uma técnica co- mum e útil quando se lida com grandes quantidades de textos, com objetivo de escolher pala- vras diferentes porém com sig- nificados e radicais parecidos, e então “reduzir” a um símbolo co- mum. Por exemplo, as palavras “gato”, “gata”, “gatos”, “gatas” têm significados semelhantes. Quan- do aplicado o algoritmo “Porter stemmer”, o resultado é “gat”; fazendo desta forma cortamos pela metade o número de pala- vras para nos preocupar. Usando sistemização em conjuntos com a remoção de palavras “ruido- sas” (palavras repetitivas que não trazem significados como “o”, “a”, “os, “as”, “e”, “com”...) pudemos che- gar a um número reduzido e pos- sível de trabalhar.

Criando SVMs

Uma vez que tenha pré-pro- cessado seu conjunto de texto, o próximo passo é treinar seu modelo. Para isto, primeiro é pre- ciso transformar seus textos em um formato que a SVM possa en- tender - isto é conhecido como “vetorização”. A seguir, temos uma simples descrição do proces- so para a seguinte sentença:

“Men, you’ll look fantastic in this great pair of men’s skinny jeans.”

Após o pré-processamento como descrito acima (sistemização e re- moção de palavras):

“men fantastic great pair men skinny jean”.

Utilizando apenas as palavras do exemplo anterior, podemos ver que uma palavra se repete, então podemos transpor o dado da se- guinte forma:

Occurrences Term 1 fantastic 1 great 1 jean 2 men 1 pair 1 skinny

Isto pode ser representado em um vetor na forma: [1,1,1,2,1,1]

Isso funciona bem para um conjunto de poucos termos. Porém, conforme adicionamos mais e mais exemplos, nosso vocabulário aumenta. Por exem- plo, quando adicionamos outro exemplo que não é jeans skinny masculino: “women bootcut acid wash jean”.

Precisamos aumentar o tamanho do vocabulário com o qual o al- goritmo precisa se preocupar: [acid,bootcut, fantastic, great, jean, men, pair, skinny, wash, women].

Isto significa que nosso vetor ini- cial de termos para jeans skinny masculinos foi alterado para: [0,0,1,1,1,2,1,1,0,0].

Quando lidamos com milhares de fontes, nosso vocabulário começar a ficar grande, tornan- do-se cada vez mais pesado, e as- sim os exemplos para treinamen- to começam a ficar vazios em sua maioria e muito grandes: [0,0, ,0,0,0,0,0,.....,2,0,0,0, ,0,.....1,0,0,0,0,…].

Felizmente, muitas bibliotecas de aprendizados de máquina permitem que seu vetor seja transformado de termos em um vetor esparso - isto significa que só precisa trabalhar com os itens

não-zeros, e a biblioteca (no nos- so caso LibSVM) irá magicamente descobrir os locais corretos e preencher os buracos.

Para isto, deve ser passado o vetor de termos e as classes que representam como “Índice do Termo” relativo ao vocabulário in- teiro para todos os exemplos de treinamento que desejar utilizar. Por exemplo:

Term Index Term 0 acid 1 bootcut 2 fantastic 3 great 4 jean 5 men 6 pair 7 skinny 8 wash 9 women

Então, para “men fantastic great pair men skinny jean”, poderíamos descrever como:

Índice do termo #2 : 1 ocorrência Índice do termo #3 : 1 ocorrência Índice do termo #4 : 1 ocorrência Índice do termo #5 : 2 ocorrência Índice do termo #6 : 1 ocorrência Índice do termo #7 : 1 ocorrência

E que ainda pode ser transfor- mado em algo mais sucinto: [2:1,3:1,4:1,5:2,6:1,7:1].

Alexandre Kowalczyk tem uma explicação ótima para a prepa- ração de vocabulário aqui, assim como outros tutoriais ótimos so- bre SVM.

Hierarquia e estrutura de dados

Um aprendizado-chave para nós: a maneira como estas SVMs foram estruturadas pode ter um impacto significante no quanto de dados de treinamento é necessário aplicar; por exem- plo, uma simples abordagem poderia ser como abaixo:

Nesta abordagem, para cada subcategoria nova, duas novas SVM’s precisam ser treinadas

  • por exemplo, a criação de uma nova classe de “Swimwear” iria precisar de uma SVM adicio- nal embaixo de Men’s e Women’s - sem contar na potencial complexidade de se adicionar a classe “Unissex” no topo. Além disso, grandes hierarquias tornam-se difíceis de se trabalhar.

Conseguimos evitar uma grande quantidade de trabalho de rotulagem e treinamento, ao nivelar nossas estruturas de dados em subárvores da seguinte forma:

Ao desacoplar nossa estrutura de classificação da hierarquia final, é possível gerar a classifi- cação final percorrendo a hierarquia de SVM com cada documento e verificando os resulta- dos com uma lógica simples baseada em conjuntos, como:

Mens Slim-fit jeans = (Mens and Jeans and Slim Fit) and not Womens

Essa abordagem reduz bastante o número de SVMs necessárias para classificar documentos, pois os conjuntos resultantes podem ser interseccionados para representar a classificação final.

vez que sabemos que “limpadores de carpetes nunca podem ser “máquinas de lavar roupa”

  • podemos também reutilizar esses dados de treinamento.

Essa abordagem tem um bom aumento, pois sempre que for necessário adicionar alguns dados de treinamento adicionais para melhorar a SVM “limpadores de carpetes” - ela melho- ra sem saber a classe “máquinas de lavar”, por meio de dados negativos vinculados.

Por último, outra chance de reutilização (ao considerar uma hierarquia), são os dados de treinamento positivos para qualquer nó filho, pois também são sempre dados de trein- amento positivos para seu pai.

Por exemplo: “Jeans” são sempre “Roupas”.

Isso significa que, para cada exemplo positivo de dados de treinamento adicionados à SVM “Jeans”, um exemplo positivo adicional também é adicionado à SVM “Vestuário” por meio de uma vinculação.

Adicionar dados vinculados é muito mais eficiente do que rotular manualmente milhares de exemplos.

Conclusão

Cremos que as Máquinas de Vetores de Suporte nos ajudaram a alcançar uma qualidade e velocidade de classificação que nunca poderíamos alcançar sem aprendizado de máquina. Como tal, aprendemos que as SVMs são um excelente complemento para qualquer toolkit de desenvolvedores, e que qualquer investigação também deve servir como uma boa intro- dução a alguns conceitos-chave de aprendizado de máquina.

Além disso, quando se trata das especificidades dos sistemas de classificação hierárquica, desacoplar o componente de classificação da hierarquia resultante, nivelar a estrutura de dados e possibilitar a reutilização dos dados de treinamento será benéfico para obter o máximo de eficiência possível. As abordagens descritas acima não só ajudaram a reduzir a quantidade de dados de treinamento que precisávamos rotular, mas também nos deu uma maior flexibilidade geral.

Essencialmente, dado um

conjunto suficientemente

grande de dados de

treinamento rotulados

- uma SVM irá tentar

encontrar um plano melhor

entre os exemplos - ou seja,

desenhar uma primeira

linha multidimensional para

encontrar chão.

Se treinar seu algoritmo de aprendizado de máquina com anos de tais dados rotulados, ele correlacionará esses recursos com um rótulo positivo, embora eles nunca estivessem realmente disponíveis antes da conversão. O processo de negócios criou um viés nos dados desde o início..

Essa história se repete em diferentes casos de uso, usuários e dados corporativos. Algoritmos de aprendizado de máquina fre- quentemente assumem que um mítico “conjunto de dados per- feito” é alimentado para prever a rotulação desejada. Na realidade, muitas vezes há muito ruído nos dados. O calcanhar de Aquiles neste domínio é o Hindsight Bias (também conhecido como label leakage ou data leakage). É a pre- sença acidental de informações nos dados utilizados para tre- inamento que nunca estarão legitimamente disponíveis em um ambiente de produção, causando resultados irreais no ambiente de pesquisa, levando a resultados ruins no ambiente de produção.

Albert Einstein certa vez descreveu o seguinte cenário: “Se tivesse uma hora para resolver um problema, dispensaria 55 minutos pensando no problema e 5 minu- tos pensando em soluções.

Então, vamos nos aprofundar neste problema um pouco mais, com um exemplo:

Desmistificando o viés

cognitivo utilizando o

Titanic

Na comunidade de aprendiza- do de máquina, a previsão de sobrevivência do Titanic é bem conhecida. A falta de salva-vi- das suficientes foi responsável por muitas vidas perdidas após o naufrágio. Grupos específi- cos de passageiros, como mul-

Cabin class B/C more

likely to survive

heres, crianças e a classe alta, tinham maior probabilidade de sobreviver do que outros. O aprendizado de máquina é usado para identificar esses sinais e pre- ver quais passageiros sobreviveriam à tragédia.

O que muitos não sabem é que os da- dos utilizados no desafio de Kaggle tra- ta-se da versão filtrada e limpa. Os dados originais possuíam recursos adicionais, dois dos quais eram particularmente problemáticos: os campos Boat e Body. No rescaldo do naufrágio, era atribuído aos passageiros um número de barco, caso chegassem em segurança a um bar- co salva-vidas, ou um número de corpo, caso fossem eventualmente encontrados mortos. Bem, claro! Se houver um número de corpo, o passageiro está morto. Você não precisa de um algoritmo sofisticado de aprendizado de máquina para lhe diz- er isso.

Ao utilizar o conjunto de dados original, as informações sobre o rótulo desejado foram inseridas nos dados de treinamen- to. Barco e corpo só são conhecidos no futuro após o evento já ter ocorrido. Eles

não são conhecidos no presente ao fazer a previsão. Se treinar- mos o modelo com esses dados, ele terá um desempenho ruim no presente, já que essa informação não estaria legitimamente disponível.

Este problema é conhecido for- malmente como viés cognitivo. E ocorre predominante em da- dos do mundo real, que teste- munhamos em primeira mão ao criar aplicações preditivas no Salesforce Einstein. Aqui está um exemplo real no contexto da previsão da conversão do lead de vendas: os dados tinham um campo chamado deal value, que era preenchido intermiten- temente quando um lead era convertido ou estava próximo de ser convertido (semelhante aos campos Boat e Body na história do Titanic).

Em termos leigos, é como o Mar- ty McFly (em De volta para o fu- turo) viajando para o futuro, co- locando as mãos no Almanaque Esportivo e usando-o para apos- tar nos jogos do presente. Como a viagem no tempo ainda está a alguns anos, o viés Cognitivo é um problema sério hoje em dia.

O viés cognitivo versus a

modelagem de algoritmo

Algoritmos de Aprendizado de Máquina ocupam o centro do

palco hoje em aplicações de inteligência artificial. Há uma corrida para ganhar uma fração de uma melhoria percentual na precisão do modelo, otimizando os algoritmos de modelagem ou inventando novos. Embora isso seja útil, é possível obter um re- torno maior para o investimen- to, focando onde o gargalo é o aprendizado de máquina aplica- do, especificamente com dados corporativos. O viés cognitivo é uma dessas áreas, em sua maio- ria inexplorada. Então, como po- demos resolver esse problema?

Estratégias para

mitigação

1. Análise estatística para recursos de entrada Há um conjunto de testes estatísticos que podemos executar nos recursos de entrada para detectar uma forte associação dos recursos ao

rótulo desejado. A Correlação de Pearson fornece uma medida numérica no intervalo (-1,1) entre o recurso e o rótulo, que expressa a intensidade da associação entre o recurso e o rótulo, bem como a direção. Embora funcione muito bem para recursos numéricos, ele também pode funcionar para recursos categóricos assim que forem vetorizados. No entanto, se os categóricos tiverem um grande número de valores exclusivos (por exemplo, cidades no mundo), a correlação perderá a associação com rótulos devido à diluição do recurso em várias colunas durante a vetorização. Isso pode ser resolvido utilizando CramersV e, portanto, é um teste estatístico mais preferido para recursos categóricos.

O impacto de tais características tendenciosas pode ser mais complicado quando afeta uma pequena fração dos exemplos. Imagine dados geográficos globais. A parte das linhas em que City = San Francisco pode ser uma em mil. O Lift é uma medida alternativa que captura essa dispersão do Viés Cognitivo.

2. Análise estatística para recursos derivados Uma estratégia que se mostrou útil é executar alguma engenharia preliminar de recursos antes de

outliers, codificação e dimensionamento de recursos para redução de dimen- sionalidade. Se executarmos qualquer um deles nos dados inteiros antes da validação cruzada, então os dados de teste em cada dobra do procedimento de validação cruzada desempenharam um papel na escolha dos recursos, e isso introduz um viés cognitivo nos dados.

Isto é um viés cognitivo ou uma predição verdadeira?

Em todos os métodos discutidos até agora, o aspecto mais difícil é descobrir o limite certo para os seus dados e caso de uso, o que ajudaria a revelar um viés cognitivo. Qual deve ser a medida de correlação, além da qual um recurso é considerado como tendencioso? 0,9 é um bom limiar ou deveria ser 0,75? Em que ponto um recurso é tendencioso versus realmente um verdadeiro preditor? É preciso tomar a mesma decisão em todas as outras medidas estatísticas, incluindo a diferença na distribuição de treinamento e pontuação e assim por diante. No Salesforce Einstein, nossa experiência na criação de modelos para uma am- pla variedade de casos de uso e dados de diferentes formas e tamanhos ajuda a informar limites aceitáveis. No entanto, está longe de ser cravado na pedra. Estamos continuamente fazendo iterações nos limites para refletir os dados e problemas do mundo real.

Conclusão

O viés cognitivo na IA corporativa é um problema mais prevalente quando comparada à IA na academia ou para um consumidor. O desafio mais signifi- cativo que enfrentamos foi a conscientização com nossos clientes. Depois que passamos por isso, entender os processos de negócios e os padrões de dados que introduzem esse viés foi crucial. Essa jornada nos ajudou a desenvolver soluções que automatizam a detecção do viés cognitivo. O resultado que en- contramos foram previsões de aprendizado de máquina mais confiáveis.

ENTENDENDO O COMPORTAMENTO

DE SISTEMAS E SOFTWARES COM

MACHINE LEARNING E DADOS DE

SÉRIES TEMPORAIS

pontos principais

  • Antes de entrar em machine learning para o comportamento sistêmico de softwares, deve-se ter conhecimento sobre os conceitos de séries temporais.
  • Dados faltantes na sua série temporal podem levar a resultados inesperados enquanto estiver analisando-os. A “biblioteca Pandas” pode ajudar a trabalhar com o preenchimento destes valores de uma forma sensata.
  • Quando humanos estão usando seu serviço, espere pela sazonalidade em seus dados. Leve em conta este detalhe quando for desenhar seus algoritmos preditivos.
  • Tome cuidado com o limite definido no momento da detecção de anomalia. Eventos que são improváveis para um simples servidor, tornam-se muito prováveis quando estiver dimensionando sua aplicação.
  • Entenda o que estiver tentando alcançar quando estiver analisando séries temporais. Tenha certeza de não usar análises determinísticas como a linguagem SQL permite. Conheça o comportamento de seu algoritmo em uma escala matemática e se realmente está automatizando a interpretação deste, ou se está transformando dados em resíduos preditivos e os usando em suas análises.

por Roland Meertens

No QCon.ai 2018, David Andrzejewski apresentou
“Entendendo o Comportamento Sistêmico
de Softwares com Machine Learning e dados
de séries temporais”. David é gerente de
engenharia na Sumo Logic, uma plataforma em
nuvem para análise de dados de máquinas. Os
desenvolvedores que já estiverem rodando um
software (como um app ou cluster em nuvem)
podem usar a Sumo Logic como backend de
seus logs de sistemas. A Sumo Logic proporciona
inteligência contínua para dados de máquina.

dados são quantificados em tempo. O caminho mais básico para fazer isso é utilizar funções como min, max, average (média), sum (soma) e count (contagem). Muitas pessoas que agregam dados gostam de usar percentis também. A vantagem dos per- centis é que podem expressar seus dados em uma linguagem não ambígua. Um exemplo de sentença sem percentil é “O tem- po máximo para carregar uma solicitação foi 4.300 milissegun- dos.” Esta sentença é precisa mas não ajuda a determinar quão dis- tante está dos padrões de uma operação normal que falhará. Porém, diga-se que “p99 é menos do que 2.000 milissegundos” in- dica que não mais que 1% das solicitações de clientes levam mais do que dois segundos para carregar.

A desvantagem dos percentis é que dificultam a combinação de dados em algo significativo. Em- bora os valores em torno do 50º percentil tendam a ser estáveis, os percentis mais altos variarão muito e têm uma distribuição longa de valores possíveis. Outro

problema é ser fácil agregar as análises simples de vários con- juntos de dados. Pode-se calcu- lar o mínimo de dois conjuntos de dados observando apenas os mínimos de ambos. No entan- to, não se pode simplesmente usar os métodos com percentis. É matematicamente impossível combinar a p95 do dataset X e a p95 do dataset Y. Isso significa que é difícil dizer algo significa- tivo sobre uma combinação de vários conjuntos de dados sem muito trabalho.

Conceitos importantes

de séries temporais

Um aspecto básico de monito- ramento para séries temporais são as comparações com mu- dança de periodicidade. Isso é particularmente importante se quiser comparar a latência de es- crita de um cluster com a latên- cia de escrita do mesmo host no dia anterior. Isso também pode ser combinado com “windowing data” (dados de janela), conheci- do como “agrupamento ao longo do tempo”. Mais informações po- dem ser encontradas na palestra do Tyler Akidau durante o QCon

San Francisco 2016, na qual esse conceito foi discutido no contex- to do Apache Beam.

O manuseio de dados faltantes também é importante. An- tes de aplicar qualquer ma- chine learning, é preciso saber como deseja lidar com os va- lores ausentes. Colocar valores constantes, como zeros ou infini- tos, no lugar de valores ausentes provavelmente levará a resulta- dos inesperados. No entanto, não colocar nada lá provavelmente fará com que tenha exceções de runtime posteriormente no loop. Isso pode ser prevenido usando pandas, uma biblioteca Python de análise de dados, que é um verdadeiro canivete suíço para manipulação de dados. Pode ser usado o método fillna(), que possui alguns valores padrão que são realísticos e sensatos. Observe que há muitas manei- ras interessantes de preencher lacunas em seus dados e há muitas formas e métodos que podem ser usados. Algumas áreas chamam isso de “predição” de dados faltantes, outras áreas chamam de “imputação”,

“inferência” ou “amostragem”. Você pode usar métodos de preenchimento, simplesmente preenchê-los ou interpolá-los.

Agindo nos dados

A simple thing to think about Uma coisa simples de se pensar ao configurar um sistema de logs é o alerta de limite fixo. O objetivo dos alertas é alertar alguém quando o site cair ou outro evento inesperado. Muitas pessoas iniciam o desenvolvi- mento de alertas contratando um especialista que pode definir limites sensatos para vários as- pectos do sistema. Por exemplo, poderia ser definido um alerta para disparar assim que 5% das solicitações demorarem mais de dois segundos, notificando o engenheiro que está em serviço naquele momento.

Contudo, os especialistas hu- manos não escalam bem. Talvez queira automaticamente com- parar o comportamento de al- gumas máquinas com as de outras máquinas, especialmente quando se tem muitas máqui- nas disponibilizando muitas séries temporais. Não se pode analisar e comparar todas essas séries temporais sozinho, e um grande número de máquinas pode impedir a comparação en- tre séries temporais. Este é o pon- to onde pode-se tentar aplicar o machine learning.

Modelos preditivos e

outliers

Uma abordagem possível é a detecção de outliers usando modelagem preditiva. Ao prever o comportamento normal de suas máquinas, também pode-se detectar quando suas máquinas agem fora da saída esperada. No entanto, é preciso levar mui- to em consideração antes de se fazer isso. Existem quatro per- guntas-chave a se fazer:

  • O comportamento é real- mente regular?
  • Como o comportamento pode ser modelado?
  • Como pode ser definido um grande desvio do que é esperado?
  • É realmente valioso detectar surpresas e desvios do que é esperado?

Algo importante a se considerar ao fazer a modelagem preditiva é a sazonalidade ou o ritmo de seus dados. Qualquer serviço que tenha humanos no circuito tem potencial para um ritmo. Por exemplo, a maioria das pes- soas usa a Sumo Logic no tra- balho, o que significa que os da- dos de uso da Sumo Logic para qualquer país mostrarão muita atividade durante o horário nor- mal de trabalho, mas não tanto fora desse horário. Porém, os da- dos de uso do Netflix provavel- mente mostram uma tendência inversa. Isso pode ser modelado ajustando manualmente seus dados ou usando transformadas de Fourier. Outra opção que mui- tas pessoas usam são os modelos ocultos de Markov.

Mineração de dados de

séries temporais basea-

da em distância

Quando se tem várias máqui- nas, provavelmente é desejável comparar o comportamento das máquinas entre si. Se nota-se um comportamento estranho em uma máquina, é desejável descobrir se outras máquinas es- tão se comportando da mesma maneira. Talvez cada uma esteja executando versões diferentes de software, talvez estejam no mesmo data center ou talvez alguma outra coisa esteja acon- tecendo. Para analisar isso, deve- se comparar a distância entre as séries temporais.