Partilhar via


Componente de deteção de anomalias baseado em PCA

Este artigo descreve como usar o componente Deteção de Anomalias Baseada em PCA no designer do Azure Machine Learning para criar um modelo de deteção de anomalias com base na análise de componentes principais (PCA).

Esse componente ajuda a criar um modelo em cenários em que é fácil obter dados de treinamento de uma classe, como transações válidas, mas é difícil obter amostras suficientes das anomalias direcionadas.

Por exemplo, para detetar transações fraudulentas, muitas vezes você não tem exemplos suficientes de fraude para treinar. Mas você pode ter muitos exemplos de boas transações. O componente Deteção de anomalias baseado em PCA resolve o problema analisando os recursos disponíveis para determinar o que constitui uma classe "normal". Em seguida, o componente aplica métricas de distância para identificar casos que representam anomalias. Essa abordagem permite treinar um modelo usando dados desequilibrados existentes.

Mais sobre análise de componentes principais

PCA é uma técnica estabelecida em aprendizado de máquina. É frequentemente usado na análise exploratória de dados porque revela a estrutura interna dos dados e explica a variância nos dados.

A PCA funciona analisando dados que contêm múltiplas variáveis. Procura correlações entre as variáveis e determina a combinação de valores que melhor capta as diferenças nos resultados. Esses valores de recurso combinados são usados para criar um espaço de recurso mais compacto chamado componentes principais.

Para deteção de anomalias, cada nova entrada é analisada. O algoritmo de deteção de anomalias calcula sua projeção nos autovetores, juntamente com um erro de reconstrução normalizado. O erro normalizado é usado como a pontuação de anomalia. Quanto maior o erro, mais anômala é a instância.

Para obter mais informações sobre como o PCA funciona e sobre a implementação para deteção de anomalias, consulte estes documentos:

Como configurar a deteção de anomalias baseada em PCA

  1. Adicione o componente Deteção de anomalias baseada em PCA ao seu pipeline no designer. Você pode encontrar esse componente na categoria Deteção de anomalias .

  2. No painel direito do componente, selecione a opção Modo de treinamento . Indique se deseja treinar o modelo usando um conjunto específico de parâmetros ou use uma varredura de parâmetros para encontrar os melhores parâmetros.

    Se você souber como deseja configurar o modelo, selecione a opção Parâmetro único e forneça um conjunto específico de valores como argumentos.

  3. Para Número de componentes a serem usados no PCA, especifique o número de recursos de saída ou componentes desejados.

    A decisão de quantos componentes incluir é uma parte importante do design do experimento que usa PCA. A orientação geral é que você não deve incluir o mesmo número de componentes PCA, pois existem variáveis. Em vez disso, você deve começar com um número menor de componentes e aumentá-los até que algum critério seja atendido.

    Os melhores resultados são obtidos quando o número de componentes de saída é menor do que o número de colunas de recursos disponíveis no conjunto de dados.

  4. Especifique a quantidade de sobreamostragem a ser realizada durante o treinamento randomizado de ACP. Em problemas de deteção de anomalias, dados desequilibrados dificultam a aplicação de técnicas padrão de PCA. Ao especificar alguma quantidade de sobreamostragem, você pode aumentar o número de instâncias de destino.

    Se você especificar 1, nenhuma sobreamostragem será executada. Se você especificar qualquer valor maior que 1, amostras adicionais serão geradas para usar no treinamento do modelo.

    Há duas opções, dependendo se você está usando uma varredura de parâmetros ou não:

    • Parâmetro de sobreamostragem para PCA aleatorizado: Digite um único número inteiro que represente a razão de sobreamostragem da classe minoritária em relação à classe normal. (Esta opção está disponível quando estiver a utilizar a seringa Método de treinamento de parâmetro único.)

    Nota

    Não é possível visualizar o conjunto de dados com amostra excessiva. Para obter mais informações sobre como a sobreamostragem é usada com PCA, consulte Notas técnicas.

  5. Selecione a opção Ativar normalização média do recurso de entrada para normalizar todos os recursos de entrada para uma média de zero. A normalização ou dimensionamento para zero é geralmente recomendada para ACP, porque o objetivo da ACP é maximizar a variância entre as variáveis.

    Esta opção está selecionada por predefinição. Desmarque-o se os valores já tiverem sido normalizados através de um método ou escala diferente.

  6. Conecte um conjunto de dados de treinamento marcado e um dos componentes de treinamento.

    Se você definir a opção Criar modo de treinamento como Parâmetro único, use o componente Modelo de deteção de anomalias do trem.

  7. Envie o pipeline.

Resultados

Quando o treinamento estiver concluído, você poderá salvar o modelo treinado. Ou você pode conectá-lo ao componente Modelo de pontuação para prever pontuações de anomalias.

Para avaliar os resultados de um modelo de deteção de anomalias:

  1. Verifique se uma coluna de pontuação está disponível em ambos os conjuntos de dados.

    Se você tentar avaliar um modelo de deteção de anomalias e receber o erro "Não há coluna de pontuação no conjunto de dados de pontuação para comparar", estará usando um conjunto de dados de avaliação típico que contém uma coluna de rótulo, mas não pontuações de probabilidade. Escolha um conjunto de dados que corresponda à saída do esquema para modelos de deteção de anomalias, que inclui as colunas Rótulos Pontuados e Probabilidades Pontuadas.

  2. Certifique-se de que as colunas do rótulo estão marcadas.

    Às vezes, os metadados associados à coluna de rótulo são removidos no gráfico de pipeline. Se isso acontecer, quando você usar o componente Avaliar modelo para comparar os resultados de dois modelos de deteção de anomalias, poderá receber o erro "Não há coluna de rótulo no conjunto de dados pontuado". Ou você pode receber o erro "Não há coluna de rótulo no conjunto de dados pontuado para comparar".

    Você pode evitar esses erros adicionando o componente Editar metadados antes do componente Avaliar modelo . Use o seletor de coluna para escolher a coluna de classe e, na lista Campos , selecione Rótulo.

  3. Use o componente Executar Python Script para ajustar as categorias de coluna do rótulo como 1(positivo, normal) e 0(negativo, anormal).

    label_column_name = 'XXX'
    anomaly_label_category = YY
    dataframe1[label_column_name] = dataframe1[label_column_name].apply(lambda x: 0 if x == anomaly_label_category else 1)
    

Notas técnicas

Este algoritmo usa PCA para aproximar o subespaço que contém a classe normal. O subespaço é atravessado por autovetores associados aos autovalores superiores da matriz de covariância de dados.

Para cada nova entrada, o detetor de anomalias primeiro calcula sua projeção nos autovetores e, em seguida, calcula o erro de reconstrução normalizado. Este erro é a pontuação de anomalia. Quanto maior o erro, mais anômala a instância. Para detalhes sobre como o espaço normal é calculado, veja Wikipedia: Análise de componentes principais.

Próximos passos

Consulte o conjunto de componentes disponíveis para o Azure Machine Learning.

Consulte Exceções e códigos de erro para o designer para obter uma lista de erros específicos para os componentes do designer.