Introdução
A detecção de novidades e de valores discrepantes são técnicas utilizadas para identificar se uma nova observação pertence à mesma distribuição que as observações existentes ou se deve ser considerada diferente. Estas técnicas são frequentemente utilizadas para limpar conjuntos de dados reais, identificando observações anormais ou incomuns.
Existem duas distinções importantes neste contexto:
- Detecção de valores discrepantes: Os dados de treino contêm valores discrepantes, que são observações que estão distantes das outras. Os estimadores de detecção de valores discrepantes tentam ajustar as regiões onde os dados de treino estão mais concentrados, ignorando as observações desviantes.
- Detecção de novidades: Os dados de treino não estão contaminados por valores discrepantes, e o objetivo é detectar se uma nova observação é um valor discrepante. Neste contexto, um valor discrepante também é chamado de novidade.
O projeto scikit-learn fornece um conjunto de ferramentas de aprendizagem de máquina que podem ser utilizadas para detecção de novidades e de valores discrepantes. Estas ferramentas são implementadas utilizando algoritmos de aprendizagem não supervisionada, o que significa que aprendem padrões dos dados sem a necessidade de exemplos rotulados.
Dicas de Máquina Virtual
Após o arranque da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para praticar.
Por vezes, pode ser necessário esperar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se tiver problemas durante a aprendizagem, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos prontamente o problema para si.
Importar as bibliotecas necessárias
Primeiro, precisamos importar as bibliotecas necessárias. Neste exemplo, usaremos o módulo sklearn do scikit-learn.
from sklearn import neighbors
Carregar o conjunto de dados
Em seguida, precisamos carregar o conjunto de dados em que desejamos realizar a detecção de valores discrepantes. Pode usar qualquer conjunto de dados de sua escolha ou criar um conjunto de dados personalizado. Neste exemplo, usaremos um conjunto de dados de amostra chamado X_train.
X_train = [0.5, 1.5, 2.5, 3.5, 4.5, 10.5, 11.5, 12.5, 13.5, 14.5]
Criar um estimador de detecção de valores discrepantes
Agora, podemos criar um objeto estimador de detecção de valores discrepantes a partir da classe neighbors.LocalOutlierFactor. Esta classe implementa o algoritmo Local Outlier Factor, um método popular para detecção de valores discrepantes.
estimator = neighbors.LocalOutlierFactor()
Ajustar o modelo aos dados de treinamento
Em seguida, podemos ajustar o estimador de detecção de valores discrepantes aos nossos dados de treinamento usando o método fit.
estimator.fit(X_train)
Prever valores discrepantes
Depois de o modelo ser ajustado, podemos usar o método predict para prever se novas observações são valores discrepantes ou não. O método predict retorna 1 para pontos dentro do padrão e -1 para valores discrepantes.
X_test = [5.5, 8.5]
predictions = estimator.predict(X_test)
print(predictions)
Acessar pontuações de valores discrepantes
Além de prever valores discrepantes, também podemos acessar as pontuações de valores discrepantes para cada observação usando o atributo negative_outlier_factor_. Pontuações de valores discrepantes mais baixas indicam maior anormalidade.
outlier_scores = estimator.negative_outlier_factor_
print(outlier_scores)
Resumo
Neste laboratório, aprendemos como realizar a detecção de novidades e valores discrepantes utilizando a biblioteca scikit-learn. Criamos um estimador de detecção de valores discrepantes, ajustamos-o aos dados de treinamento, previmos valores discrepantes em novas observações e acessamos as pontuações de valores discrepantes. Essas técnicas podem ser usadas para identificar observações anormais ou incomuns em um conjunto de dados e são comumente utilizadas em tarefas de detecção de anomalias.