Skip to content

09 ‐ Dominando o Elastic Machine Learning

carlos-br edited this page Dec 26, 2024 · 12 revisions

9.1 Introdução

O Elastic Machine Learning é uma poderosa ferramenta integrada ao Elasticsearch que permite analisar e detectar padrões em grandes volumes de dados de maneira automatizada. Ele utiliza modelos estatísticos e técnicas de machine learning para oferecer funcionalidades como Anomaly Detection, Data Frame Analytics e a importação de modelos de NLP (Natural Language Processing).

9.2 Visão Geral da Anomaly Detection

Aspecto Anomaly Detection Data Frame Analytics
Definição Identificação de padrões que desviam do comportamento normal. Análise e manipulação de dados tabulares para insights.
Objetivo Detectar eventos raros ou comportamentos anormais. Explorar, transformar e modelar dados estruturados.
Técnicas Comuns Estatísticas, Machine Learning (K-Means, Isolation Forest), séries temporais. Resumo estatístico, transformações, visualização, aprendizado de máquina.
Exemplo de Uso Identificar transações fraudulentas em um banco. Aplicar regressão linear em um conjunto de dados tabulares.
Ferramentas Comuns TensorFlow, Scikit-learn, Elastic Stack, PyOD. Pandas, PySpark, Elastic Data Frame Analytics.
Áreas de Aplicação Cibersegurança, manutenção preditiva, saúde. Análise de grandes volumes de dados, pipelines de ML.
Foco Detecção de padrões irregulares. Processamento e análise eficiente de tabelas de dados.

9.3 Visão Geral sobre Natural Language Processin - NLP

Aspecto Descrição
Definição Campo da IA que capacita máquinas a entender, interpretar, processar e gerar linguagem humana.
Objetivo Facilitar a interação entre humanos e computadores usando linguagem natural.
Tarefas Principais - Análise de Sentimentos: Identificar emoções e opiniões em textos.
- Reconhecimento de Entidades Nomeadas (NER): Extrair nomes, lugares e organizações.
- Tradução Automática: Converter texto entre diferentes idiomas.
- Resumo Automático: Gerar resumos concisos de textos longos.
- Classificação de Texto: Categorizar texto (e.g., spam/não spam).
- Geração de Texto: Criar conteúdo original ou assistido.
- Análise Sintática e Semântica: Entender estrutura gramatical e significado.
- Reconhecimento de Fala: Converter áudio em texto.
Ferramentas Comuns - NLTK: Biblioteca para tarefas básicas de NLP.
- spaCy: Processamento eficiente de linguagem natural.
- Hugging Face Transformers: Modelos avançados como BERT e GPT.
- Google Cloud Natural Language API: Serviço para análise e extração de texto.
- OpenAI GPT: Modelos avançados para geração e compreensão de linguagem.
Aplicações - Assistentes Virtuais: Alexa, Siri, Google Assistant.
- Chatbots: Atendimento automatizado em sites e aplicativos.
- Análise de Redes Sociais: Monitorar opiniões e tendências.
- Motores de Busca: Sistemas de recomendação e recuperação de informações.
- Educação: Correção automática e tradução assistida.
Desafios - Ambiguidade Linguística: Interpretação errada devido à natureza ambígua do idioma.
- Dados de Treinamento: Necessidade de grandes volumes de dados rotulados.
- Contexto e Semântica: Difícil captar significados em textos complexos.
- Linguagens Menos Representadas: Falta de modelos para idiomas de menor uso.

9.4 Conceitos importantes para o aprendizado de Machine Learning

Uma série temporal é uma sequência de observações ou dados coletados e registrados em intervalos de tempo regulares. A característica essencial de uma série temporal é que os dados são dependentes do tempo, e o objetivo é analisar, modelar e prever os padrões e comportamentos futuros com base em dados históricos.

Categoria Exemplos ou Descrição
Exemplos de Séries Temporais
Financeiras Preços de ações, taxas de câmbio.
Econômicas PIB trimestral, taxas de desemprego.
Climáticas Temperatura diária, níveis de chuva.
Demográficas População ao longo de anos.
Operacionais Vendas diárias, tráfego de internet.
Tarefas Comuns em Séries Temporais
Análise Identificar padrões e componentes (tendência, sazonalidade).
Modelagem Ajustar modelos para explicar o comportamento dos dados.
Previsão (Forecasting) Estimar valores futuros com base no histórico.
Detecção de Anomalias Identificar pontos fora do padrão esperado.
Métodos de Análise de Séries Temporais
Modelos Estatísticos
ARIMA Combina autoregressão e médias móveis para modelar séries estacionárias.
ETS Suavização exponencial para modelar tendência e sazonalidade.
Modelos de Machine Learning
LSTM Rede neural recorrente para capturar dependências de longo prazo.
Prophet Modelo para previsão de séries temporais desenvolvido pelo Facebook.
Visualizações Gráficos de linha, decomposição da série temporal para separar os componentes.

9.5 Busca Semântica

A busca semântica é um processo de recuperação de informações que utiliza o significado e o contexto das palavras para entender a intenção do usuário, em vez de apenas combinar palavras-chave literalmente. Esse tipo de busca é mais inteligente e sofisticado, pois tenta capturar o significado por trás de uma consulta, mesmo quando as palavras exatas não estão presentes nos dados

9.6 Visão Geral da Busca Semântica

Etapa Descrição
Compreensão da Consulta Usa Processamento de Linguagem Natural (NLP) para interpretar a consulta e analisar o contexto e significado.
Desambiguação Resolve múltiplos significados para palavras ambíguas com base no contexto.
Representação Vetorial Converte palavras e documentos em representações matemáticas (vetores) usando modelos como Word2Vec ou BERT.
Indexação Semântica Armazena os dados em índices preparados para correspondência semântica.
Correspondência de Consulta Combina a consulta com documentos relevantes no espaço vetorial baseado na similaridade semântica.
Rankeamento dos Resultados Ordena os resultados com base na relevância usando medidas como similaridade vetorial.

Vantagens da Busca Semântica Descrição
Entendimento do Contexto Reconhece sinônimos e palavras relacionadas, melhorando a precisão mesmo sem palavras exatas.
Consultas Naturais Aceita linguagem natural, tornando a interação mais intuitiva para os usuários.
Personalização Ajusta os resultados com base no histórico e preferências do usuário.
Resultados Precisos Reduz a exibição de informações irrelevantes, fornecendo resultados mais alinhados ao objetivo.

Tecnologias Usadas Descrição
Modelos de Linguagem Word2Vec, GloVe, BERT, GPT para compreender o significado semântico e contextual das palavras.
Motores de Busca ElasticSearch, Solr, e soluções personalizadas com redes neurais.
Bases de Conhecimento Knowledge Graphs para capturar relações complexas entre conceitos.
Infraestrutura Avançada GPUs e sistemas distribuídos para gerenciar grandes volumes de dados e cálculos vetoriais.

9.7 Embedding

Embeddings de palavras são representações vetoriais de palavras em um espaço de múltiplas dimensões. Eles permitem que computadores entendam o significado das palavras com base em seus contextos e relações, capturando semelhanças e diferenças semânticas de maneira matemática.

São utilizadas técnicas de busca de texto através do uso de algoritmos de tokenização e identificação de palavras, o resultado é convertido em vetores/matriz, ou seja, em número em várias dimensões, o elasticsearch trabalha com aproximadamente 512 dimensões. Os dados são armazenados servindo de referência para consultas específicas.

Vamos dar um exemplo: Partindo do princípio de que faço um questionamento e/ou uma pergunta, essa por sua vez é vetorizada e também transformada em matriz, neste momento o elasticsearch realiza a comparação dos vetores através de cálculo da distância entre os vetores, retornando é claro o grou de proximidade entre dados armazenados e a minha pergunta.

image

  • Componentes do Fluxo

9.7.1 Transform into Embedding

Descrição: Este componente representa o processo de conversão dos dados originais (como textos ou palavras) em embeddings, que são representações vetoriais densas em um espaço de alta dimensionalidade.

Objetivo: Capturar o significado semântico dos dados para que relações entre elementos possam ser medidas de forma matemática.

Exemplo: Converter a frase "gato preto" em um vetor como [0.15, 0.89, 0.43, ...].

9.7.2 Query Transform into Embedding

Descrição: Similar ao processo anterior, mas aplicado à consulta do usuário. A consulta é transformada em um vetor de embedding usando o mesmo modelo ou método aplicado aos dados armazenados.

Objetivo: Garantir que a representação da consulta seja compatível com os dados já embutidos.

Exemplo: Para a consulta "animal de quatro patas", gera-se um vetor que captura o significado semântico da frase.

9.7.3 Vector Representation

Descrição: Espaço onde os embeddings são armazenados. Cada ponto no espaço vetorial representa um elemento (como palavras, documentos ou consultas).

Objetivo: Permitir comparação direta entre os elementos com base em proximidade vetorial.

Exemplo: No espaço vetorial, "gato" e "cachorro" estão mais próximos entre si do que "gato" e "carro".

9.7.4 Nearest Neighbor

Descrição: O processo de localizar o vetor mais próximo da consulta no espaço vetorial. Isso é feito com métricas de similaridade, como distância euclidiana ou similaridade do cosseno.

Objetivo: Encontrar o elemento mais relevante com base na similaridade semântica.

Exemplo: Se a consulta for "felino", o sistema pode retornar "gato" como o elemento mais próximo.

9.7.5 Result

Descrição: O resultado final da busca semântica, apresentado ao usuário. Pode incluir um único elemento ou uma lista de elementos ordenados por relevância.

Objetivo: Fornecer informações que atendam à intenção do usuário.

Exemplo: Para a consulta "animal de estimação", os resultados podem incluir "gato" e "cachorro" como os mais relevantes.

Referência: https://www.elastic.co/pt/what-is/word-embedding

9.8 Criação do JOB Anomaly Detection

  • Visão Geral

image

9.8.1 Detalhamento das opções de Create Job com base no Data View,

Tópico Definição Objetivo Exemplo Prático Exemplo Adicional
Single Metric Análise ou monitoramento de uma única métrica ao longo do tempo. Identificar padrões, tendências e anomalias de uma métrica específica. Monitorar vendas diárias de um produto específico em uma loja. Monitorar a temperatura média diária de uma cidade ao longo de um mês.
Multi-Metric Análise simultânea de múltiplas métricas para entender interações ou correlações. Identificar relações entre métricas e detectar tendências ou discrepâncias. Monitorar vendas, tráfego no site e avaliações de clientes simultaneamente. Comparar a produção de energia solar e eólica em diferentes regiões.
Population Conjunto completo de itens ou elementos analisados, como pessoas, produtos ou dispositivos. Obter insights gerais ou específicos sobre o comportamento ou desempenho do conjunto. Analisar o comportamento de todos os clientes de uma empresa em termos de compras. Avaliar os dispositivos conectados em uma rede corporativa para identificar padrões.
Advanced Técnicas sofisticadas para análises complexas ou personalizações avançadas. Resolver problemas desafiadores como previsões ou padrões complexos. Usar algoritmos de clustering para segmentar clientes com base em padrões de compra. Aplicar redes neurais para prever a demanda energética em horários de pico.
Categorization Agrupamento ou classificação de dados em categorias com base em atributos comuns. Organizar dados em grupos significativos para simplificar a análise. Categorizar produtos em eletrônicos, roupas e livros para análise separada. Dividir clientes por faixa etária para entender padrões de consumo.
Rare Identificação de eventos ou padrões incomuns ou raros. Detectar anomalias ou exceções que podem indicar problemas ou oportunidades. Detectar transações financeiras fraudulentas devido à sua baixa frequência. Identificar falhas raras em equipamentos industriais com base em sinais de sensores.
Geo Análise de dados com dimensão geográfica, representando informações por localização. Identificar padrões e tendências regionais ou locais. Analisar o volume de vendas em diferentes estados ou cidades usando mapas interativos. Monitorar a distribuição de doenças em diferentes regiões geográficas.
Data Visualizer Ferramentas para transformar dados brutos em representações visuais como gráficos e mapas. Facilitar a compreensão, interpretação e comunicação de insights. Criar gráficos de barras ou mapas de calor para visualizar desempenho por região. Criar dashboards interativos para comparar KPIs em tempo real.

9.8.2 Criando nosso Time Range

image

9.8.3 Inserindo campo de análise de métrica

Neste primeiro momento estaremos analisando o Event Count. Quantidade de evento em um determinado período.

  • Bucket span

Uma informação de grande relevância, são as configurações de Backet Span. Para o algoritmo o intervalo de tempo deve ser considerado em função das alterações de comportamento na linha do tempo.

image

9.X Funcionalidades do Elastic Machine Learning

As principais funcionalidades do Elastic Machine Learning incluem:

  • Detecção de Anomalias (Anomaly Detection): Ferramenta poderosa para monitorar e identificar padrões incomuns ou inesperados em seus dados, essencial para alertar sobre possíveis problemas em tempo real.

  • Data Frame Analytics: Permite criar modelos de machine learning em dados tabulares, como regressão, classificação, e agrupamento de dados, ajudando a extrair insights mais profundos e fazer previsões.

  • Importação de Modelos NLP: Com o uso da biblioteca Eland, é possível importar modelos pré-treinados, como os da Hugging Face, para análise de texto diretamente no Elasticsearch, facilitando tarefas como geração de embeddings, classificação de textos e muito mais.

9.1.1 Anomaly Detection

A Detecção de Anomalias no Elastic Machine Learning é projetada para detectar automaticamente comportamentos incomuns ou fora do padrão dentro de grandes volumes de dados. Isso é extremamente útil para casos de monitoramento de segurança, detecção de fraudes, ou problemas operacionais em tempo real. A detecção de anomalias funciona treinando um modelo que aprende o comportamento normal dos seus dados e, posteriormente, identifica quando ocorre uma divergência significativa.

Principais características:

  • Unsupervised learning (Aprendizado não supervisionado): Não precisa de dados rotulados para treinar o modelo.
  • Real-time Anomaly Detection: Processamento contínuo de fluxos de dados.
  • Multi-metric support: Pode analisar múltiplas métricas simultaneamente, o que aumenta a precisão da detecção.

9.1.2 Data Frame Analytics

O Data Frame Analytics é a solução do Elastic Machine Learning para análise de dados estruturados, permitindo a criação de modelos supervisionados como regressão e classificação, além de modelos não supervisionados, como agrupamento (clustering). Ele possibilita realizar análises em dados tabulares, identificar padrões e gerar previsões. Algumas das principais capacidades incluem:

  • Regressão: Criação de modelos para prever valores contínuos, como o preço de um imóvel.
  • Classificação: Previsão de categorias ou rótulos, como spam ou não-spam.
  • Outlier Detection: Identificação de pontos fora do padrão em grandes conjuntos de dados.
  • Clustering: Agrupamento de dados com base em características semelhantes.

9.1.3 Importação de Modelos para NLP

A capacidade de importar modelos pré-treinados de NLP para o Elasticsearch é uma funcionalidade avançada oferecida através do Eland. Isso permite trabalhar com tarefas como análise de sentimentos, classificação de textos, geração de embeddings, entre outras. Modelos populares como BERT, DistilBERT e Sentence Transformers podem ser integrados diretamente ao Elasticsearch para melhorar a busca semântica e a compreensão de linguagem natural nos seus dados.

9.2 Passo a Passo para Importar o Modelo "sentence-transformers/msmarco-MiniLM-L-12-v3" Usando o Eland

9.2.1 Atualizar o sistema

Certifique-se de que o sistema esteja atualizado antes de instalar qualquer dependência:

sudo apt update && sudo apt upgrade -y

9.2.2 Instalar as dependências necessárias

Instale o Python3, pip, e o virtualenv para configurar o ambiente virtual.

sudo apt install python3 python3-pip python3-venv -y

9.2.3 Criar a estrutura de diretórios

Crie a pasta /opt/elastic/ml e configure o ambiente virtual dentro dessa pasta:

sudo mkdir -p /opt/elastic/ml
sudo chown $USER:$USER /opt/elastic/ml

9.2.4 Criar e ativar o virtualenv

Dentro da pasta /opt/elastic/ml, crie o ambiente virtual venv.

cd /opt/elastic/ml
python3 -m venv venv

Ative o ambiente virtual:

source venv/bin/activate

9.2.5 Instalar a biblioteca Eland com a dependência torch

Com o ambiente virtual ativado, instale a biblioteca eland com a dependência torch e a biblioteca transformers:

pip install "eland[pytorch]" transformers

9.2.6 Importar o modelo do Hugging Face para o Elasticsearch com autenticação

Utilize o comando eland_import_hub_model para importar o modelo de embeddings sentence-transformers/msmarco-MiniLM-L-12-v3 com autenticação e ignorando a checagem de certificado:

eland_import_hub_model \
  --url https://localhost:9200 \
  --hub-model-id sentence-transformers/msmarco-MiniLM-L-12-v3 \
  --task-type text_embedding \
  -u elastic \
  -p 123456 \
  --insecure \
  --start 

9.2.7 Sincronizar o modelo importado no Elasticsearch com autenticação

Verifique se o modelo foi corretamente sincronizado no Elasticsearch:

curl -X GET "https://localhost:9200/_ml/trained_models" \
  -u elastic:123456 -k

Esse comando listará os modelos treinados disponíveis no Elasticsearch, e o modelo msmarco-MiniLM-L-12-v3 deverá estar na lista.

9.2.8 Testar o modelo importado para realizar embeddings com autenticação

Para testar a geração de embeddings de um texto, use o seguinte comando:

curl -X POST "https://localhost:9200/msmarco_embeddings/_infer" \
  -u elastic:123456 --insecure \
  -H 'Content-Type: application/json' \
  -d '{
        "docs": [
          {
            "text_field": "ElasticSearch is a distributed search engine built on Apache Lucene."
          }
        ]
      }'

Se o modelo estiver funcionando corretamente, você verá uma resposta contendo os embeddings gerados.

9.2.9 Desativar o ambiente virtual

Para encerrar a sessão, desative o ambiente virtual com o comando:

deactivate

Esse procedimento completo configura o ambiente, importa o modelo de NLP, e testa sua funcionalidade para gerar embeddings no Elasticsearch.

Clone this wiki locally