SMOTE

Aumenta o número de exemplos de baixa incidência num conjunto de dados usando a sobresmaldição da minoria sintética

Categoria: Transformação de Dados / Manipulação

Nota

Aplica-se a: Machine Learning Studio (clássico)

Este conteúdo diz respeito apenas ao Studio (clássico). Módulos semelhantes de arrasto e queda foram adicionados ao designer de Aprendizagem automática Azure. Saiba mais neste artigo comparando as duas versões.

Visão geral do módulo

Este artigo descreve como usar o módulo SMOTE no Azure Machine Learning Studio (clássico) para aumentar o número de casos sub-representados num conjunto de dados utilizado para machine learning. O SMOTE é uma forma melhor de aumentar o número de casos raros do que simplesmente duplicar os casos existentes.

Liga o módulo SMOTE a um conjunto de dados desequilibrado. Existem muitas razões pelas quais um conjunto de dados pode ser desequilibrado: a categoria que está a ser alvo pode ser muito rara na população, ou os dados podem simplesmente ser difíceis de recolher. Normalmente, usa-se SMOTE quando a classe que pretende analisar está sub-representada.

O módulo devolve um conjunto de dados que contém as amostras originais, além de um número adicional de amostras de minorias sintéticas, dependendo da percentagem que especifica.

Mais sobre SMOTE

SMOTE significa técnica de sobreamplagem de minoria sintética. Esta é uma técnica estatística para aumentar o número de casos no seu conjunto de dados de forma equilibrada. O módulo funciona gerando novos casos de casos minoritários existentes que fornece como entrada. Esta implementação de SMOTE não altera o número de casos maioritários.

Os novos casos não são apenas cópias dos casos minoritários existentes; em vez disso, o algoritmo retira amostras do espaço de recurso para cada classe-alvo e seus vizinhos mais próximos, e gera novos exemplos que combinam características do caso alvo com características dos seus vizinhos. Esta abordagem aumenta as funcionalidades disponíveis para cada classe e torna as amostras mais gerais.

O SMOTE toma todo o conjunto de dados como uma entrada, mas aumenta a percentagem de apenas os casos minoritários. Por exemplo, suponha que tem um conjunto de dados desequilibrado onde apenas 1% dos casos têm o valor-alvo A (a classe minoritária), e 99% dos casos têm o valor B. Para aumentar a percentagem de casos minoritários para o dobro da percentagem anterior, introduziria 200 para percentagem de SMOTE nas propriedades do módulo.

Exemplos

Recomendamos que tente utilizar SMOTE com um pequeno conjunto de dados para ver como funciona. O exemplo a seguir utiliza o conjunto de dados de doação de sangue disponível no Azure Machine Learning Studio (clássico).

Se adicionar o conjunto de dados a uma experiência e clicar em Visualizar a saída do conjunto de dados, pode ver que, das 748 linhas ou casos no conjunto de dados, existem 570 casos (76%) da classe 0, e 178 casos (24%) da classe 1. Embora isto não seja terrivelmente desequilibrado, a Classe 1 representa as pessoas que doaram sangue, e assim estas linhas contêm o espaço de recurso que você quer modelar.

Para aumentar o número de casos, pode definir o valor da percentagem de SMOTE, utilizando múltiplos de 100, da seguinte forma:

Classe 0 Classe 1 total
Conjunto de dados original

(equivalente à percentagem = de SMOTE 0)
570

76%
178

24%
748
Percentagem de SmoTE = 100 570

62%
356

38%
926
Percentagem de SmoTE = 200 570

52%
534

48%
1104
Percentagem de SmoTE = 300 570

44%
712

56%
1282

Aviso

Aumentar o número de casos que utilizam SMOTE não é garantido para produzir modelos mais precisos. Você deve tentar experimentar com diferentes percentagens, diferentes conjuntos de funcionalidades, e diferentes números de vizinhos mais próximos para ver como adicionar casos influencia o seu modelo.

Como configurar o SMOTE

  1. Adicione o módulo SMOTE à sua experiência. Pode encontrar o módulo em módulos de Transformação de Dados, na categoria de manipulação.

  2. Ligue o conjunto de dados que pretende aumentar. Se pretender especificar o espaço de características para a construção dos novos casos, quer utilizando apenas colunas específicas, quer excluindo algumas, utilize as Colunas Selecionadas no módulo Dataset para isolar as colunas que pretende utilizar antes de utilizar o SMOTE.

    Caso contrário, a criação de novos casos utilizando SMOTE baseia-se em todas as colunas que fornece como entradas.

  3. Certifique-se de que a coluna que contém a etiqueta, ou a classe alvo, está marcada como tal.

    Se não houver coluna de etiqueta, utilize o módulo editar metadados para selecionar a coluna que contém as etiquetas de classe e selecione Label da lista de retirada de campos.

  4. O módulo SMOTE identifica automaticamente a classe minoritária na coluna do rótulo e, em seguida, obtém todos os exemplos para a classe minoritária.

  5. Na opção percentual SMOTE, digite um número inteiro que indique a percentagem-alvo de casos minoritários no conjunto de dados de produção. Por exemplo:

    • Escreve 0 (%). O módulo SMOTE devolve exatamente o mesmo conjunto de dados que forneceu como entrada, adicionando nenhum novo caso minoritário. Neste conjunto de dados, a proporção de classe não mudou.

    • Escreve-se 100 (%). O módulo SMOTE gera novos casos minoritários, adicionando o mesmo número de casos minoritários que estavam no conjunto de dados original. Como o SMOTE não aumenta o número de casos maioritários, a proporção de casos de cada classe mudou agora.

    • Escreve 200 (%). O módulo duplica a percentagem de casos minoritários em comparação com o conjunto de dados original. Isto não resulta em ter o dobro dos casos minoritários que antes. Pelo contrário, a dimensão do conjunto de dados é aumentada de modo a que o número de casos maioritários permaneça o mesmo, e o número de casos minoritários é aumentado até corresponder ao valor percentual desejado.

    Nota

    Utilize apenas múltiplos de 100 para a percentagem de SMOTE.

  6. Utilize a opção número de vizinhos mais próximos para determinar o tamanho do espaço de recurso que o algoritmo SMOTE utiliza quando constrói novos casos. Um vizinho mais próximo é uma fileira de dados (um caso) que é muito semelhante a algum caso alvo. A distância entre dois casos é medida combinando os vetores ponderados de todas as características.

    • Ao aumentar o número de vizinhos mais próximos, obtém-se funcionalidades de mais casos.
    • Ao manter o número de vizinhos mais próximos baixo, você usa características que são mais parecidas com as da amostra original.
  7. Digite um valor na caixa de texto de sementes aleatórias se quiser garantir os mesmos resultados ao longo de execuções da mesma experiência, com os mesmos dados. Caso contrário, o módulo gera uma semente aleatória com base nos valores do relógio do processador quando a experiência é implementada, o que pode causar resultados ligeiramente diferentes ao longo das corridas.

  8. Execute a experimentação.

    A saída do módulo é um conjunto de dados que contém as linhas originais mais um número de linhas adicionadas com casos minoritários.

Dica

Se quiser descobrir quais as novas linhas adicionadas, pode utilizar os módulos Apply SQL Transformation ou Join Data.

Notas técnicas

  • Ao publicar um modelo que utilize o módulo SMOTE, remova o SMOTE da experiência preditiva antes de ser publicado como um serviço web. A razão é que o SMOTE destina-se a melhorar um modelo durante o treino, e não se destina a pontuar. Pode obter um erro se uma experiência preditiva publicada contiver o módulo SMOTE.

  • Muitas vezes pode obter melhores resultados se aplicar limpeza de valor em falta ou outras transformações para corrigir dados antes de aplicar SMOTE.

  • Alguns investigadores investigaram se o SMOTE é eficaz em dados de alta dimensão ou escassos, tais como os utilizados na classificação de texto ou nos conjuntos de dados genómicas. Este artigo tem um bom resumo dos efeitos e da validade teórica da aplicação de SMOTE nestes casos: Blagus e Lusa: SMOTE para dados de alta dimensão desequilibrados de classe

    Se o SMOTE não for eficaz no seu conjunto de dados, outras abordagens que pode considerar incluem vários métodos para sobrecarregar os casos minoritários ou subestimar os casos maioritários, bem como técnicas de conjunto que ajudam o aluno diretamente, utilizando clustering, embalamento ou impulso adaptativo.

Entrada esperada

Nome Tipo Descrição
Amostras Tabela de Dados Um conjunto de amostras

Parâmetros do módulo

Nome Intervalo Tipo Predefinição Descrição
Percentagem de SmoTE >=0 Número inteiro 100 Quantidade de sobresmaltração em múltiplos de 100.
Número de vizinhos mais próximos >=1 Número inteiro 1 O número de vizinhos mais próximos para desenhar recursos para novos casos
Sementes aleatórias Qualquer Número inteiro 0 Sementes para o gerador de números aleatórios

Saída

Nome Tipo Descrição
Tabela Tabela de Dados Uma tabela de dados contendo as amostras originais mais um número adicional de amostras de classe minoritária sintética. O número de novas amostras é (smotePercent/100)*T, onde T é o número de amostras de classe minoritária.

Ver também

Amostra e Divisão
Lista de Módulos A-Z