Componente Detecção de Anomalias Baseada em PCA

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

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

Por exemplo, para detectar transações fraudulentas, geralmente você não tem exemplos de fraudes suficientes para treinar. Mas você pode ter muitos exemplos de transações boas. O componente Detecção de Anomalias Baseada 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 informações sobre análise de componente principal

O PCA é uma técnica estabelecida de aprendizado de máquina. É frequentemente usado na análise de dados exploratória porque revela a estrutura interna dos dados e explica a variação nos dados.

O PCA trabalha analisando dados que contêm muitas variáveis. Ele procura correlações entre as variáveis e determina a combinação de valores que melhor detecta as diferenças nos resultados. Esses valores de recursos combinados são usados para criar um espaço de recurso mais compacto chamado de componentes principais.

Para detecção de anomalias, cada nova entrada é analisada. O algoritmo de detecção de anomalias computa sua projeção nos vetores próprios, junto com um erro de reconstrução normalizado. O erro normalizado é usado como a pontuação da anomalia. Quanto maior o erro, mais anormal é a instância.

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

Como configurar a detecção de anomalias com base em PCA

  1. Adicione o componente Detecção de Anomalias Baseadas em PCA ao seu pipeline no designer. Esse componente pode ser encontrado na categoria Detecção de Anomalias.

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

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

  3. Para obter o Número de componentes a serem usados no PCA, especifique o número de recursos de saída ou componentes que você deseja.

    A decisão de quantos componentes incluir é uma parte importante do design do experimento que usa o PCA. As diretrizes gerais são que você não deve incluir o mesmo número de componentes do PCA que as variáveis existentes. 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 que o número de colunas de recurso disponíveis no conjunto de dados.

  4. Especifique a quantidade de superamostragem a ser executada durante o treinamento aleatório do PCA. Em problemas de detecção de anomalias, os dados desequilibrados dificultam a aplicação das técnicas padrão do PCA. Ao especificar alguma quantidade de superamostragem, você pode aumentar o número de instâncias de destino.

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

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

    • Parâmetro de superamostragem para o PCA aleatório: digite um único número inteiro que representa a proporção de superamostragem da classe minoritária sobre a classe normal. (Essa opção está disponível quando você está usando o método de treinamento de Parâmetro único.)

    Observação

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

  5. Selecione a opção Habilitar a 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 o dimensionamento para zero é geralmente recomendado para o PCA, pois a meta do PCA é maximizar a variação entre variáveis.

    Essa opção é habilitada por padrão. Desmarque-a se os valores já tiverem sido normalizados por meio de um método ou uma escala diferente.

  6. Conecte um conjunto de dados de treinamento específico e um dos componentes de treinamento.

    Se você definir a opção Criar modo treinador como Parâmetro Único, use o componente Treinar Modelo de Detecção de Anomalias.

  7. Enviar o pipeline.

Resultados

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

Para avaliar os resultados de um modelo de detecçã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 detecção de anomalias e obter o erro "Não há nenhuma coluna de pontuação no conjunto de dados pontuados para comparar", você está usando um conjunto de cálculo de dados de avaliação típico que contém uma coluna de rótulo, mas sem pontuações de probabilidade. Escolha um conjunto de dados que corresponda à saída de esquema para modelos de detecção de anomalias, que inclui as colunas Rótulos pontuados e Probabilidades pontuadas.

  2. Verifique se as colunas de 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 Modelo de Avaliação para comparar os resultados de dois modelos de detecção de anomalias, você poderá obter o erro "Não há nenhuma coluna de rótulo no conjunto de dados classificado". Ou você pode receber o erro "Não há nenhuma coluna de rótulo no conjunto de dados classificado para comparar".

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

  3. Use o componente Executar Script do Python para ajustar as categorias de coluna de 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)
    

Observações técnicas

Esse algoritmo usa o PCA para aproximar o subespaço que contém a classe normal. O subespaço é estendido por vetores próprios associado aos valores próprios superior da matriz de covariância de dados.

Para cada nova entrada, o detector de anomalias primeiro calcula sua projeção nos vetores próprios, em seguida, calcula o erro de reconstrução normalizado. Esse erro é a pontuação da anomalia. Quanto maior o erro, mais anormal é a instância. Para obter detalhes sobre como o espaço normal é computado, consulte Wikipédia: análise de componente principal.

Próximas etapas

Confira o conjunto de componentes disponíveis no Azure Machine Learning.

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