





























Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
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
1 / 37
Esta página não é visível na pré-visualização
Não perca as partes importantes!
ARTIGO pág 6
ARTIGO pág 13
ARTIGO pág 24
Agosto 2019
NESTA EDIÇÃO
(^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.
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.
(^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.
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.
(^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
por David Bishop
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.
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.
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
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”
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.
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:
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-
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.
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?
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.
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.
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
por Roland Meertens
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.
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.
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.
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:
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.
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.