SMOTE

Aumenta o número de exemplos de baixa incidência em um conjunto de dados usando a sobreamostragem minoritária sintético

Categoria: transformação/manipulação de dados

Observação

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

Esse conteúdo pertence apenas ao estúdio (clássico). Módulos de arrastar e soltar semelhantes foram adicionados ao designer de Azure Machine Learning. 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 de underepresented em um conjunto de informações usado para aprendizado de máquina. O SMOTE é uma maneira melhor de aumentar o número de casos raros do que simplesmente duplicar os casos existentes.

Você conecta o módulo SMOTE a um conjunto de um DataSet que está desequilibrado. Há muitas razões pelas quais um conjunto de dados pode ser desequilibrado: a categoria que você está direcionando pode ser muito rara na população ou os dados podem simplesmente ser difíceis de coletar. Normalmente, você usa SMOTE quando a classe que você deseja analisar está em-representada.

O módulo retorna um conjunto de dados que contém os exemplos originais mais um número adicional de exemplos de minorias sintéticas, dependendo do percentual que você especificou.

Mais sobre SMOTE

SMOTE significa técnica de sobreamostragem minoritária sintética. Essa é uma técnica estatística para aumentar o número de casos no conjunto de dados de uma forma equilibrada. O módulo funciona gerando novas instâncias de casos minoritários existentes que você fornece como entrada. Essa implementação de SMOTE não altera o número de casos de maioria.

As novas instâncias não são apenas cópias de casos minoritários existentes; em vez disso, o algoritmo usa exemplos do espaço de recurso para cada classe de destino e seus vizinhos mais próximos e gera novos exemplos que combinam recursos do caso de destino com recursos de seus vizinhos. Essa abordagem aumenta os recursos disponíveis para cada classe e torna os exemplos mais gerais.

O SMOTE usa todo o conjunto de dados como uma entrada, mas aumenta a porcentagem apenas dos casos minoritários. Por exemplo, suponha que você tenha um conjunto de valores desbalanceado em que apenas 1% dos casos têm o valor de destino A (a classe minoritária) e 99% dos casos têm o valor B. Para aumentar a porcentagem de casos minoritárias para o dobro da porcentagem anterior, você digitaria 200 para o percentual de SMOTE nas propriedades do módulo.

Exemplos

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

Se você adicionar o conjunto de registros a um experimento e clicar em Visualizar na saída do conjunto de resultados, poderá ver que, das 748 linhas ou casos no conjunto de registros, há 570 casos (76%) de classe 0 e 178 casos (24%) da classe 1. Embora isso não seja extremamente desbalanceado, a classe 1 representa as pessoas que donateu sangue e, portanto, essas linhas contêm o espaço de recurso que você deseja modelar.

Para aumentar o número de casos, você pode definir o valor de porcentagem de SMOTE, usando múltiplos de 100, da seguinte maneira:

Classe 0 Classe 1 total
Conjunto de dados original

(equivalente ao percentual = de SMOTE 0)
570

76%
178

24%
748
Porcentagem = de SMOTE 100 570

62%
356

38%
926
Porcentagem = de SMOTE 200 570

52%
534

48%
1104
Porcentagem = de SMOTE 300 570

44%
712

56%
1282

Aviso

Aumentar o número de casos usando SMOTE não é garantia de gerar modelos mais precisos. Você deve tentar experimentando com diferentes percentuais, conjuntos de dados de recursos diferentes e diferentes números de vizinhos próximos para ver como a adição de casos influencia seu modelo.

Como configurar o SMOTE

  1. Adicione o módulo SMOTE ao seu experimento. Você pode encontrar o módulo em módulos de transformação de dados, na categoria manipulação.

  2. Conecte o conjunto de um que você deseja aumentar. Se você quiser especificar o espaço de recurso para criar os novos casos, seja usando apenas colunas específicas ou excluindo alguns, use o módulo selecionar colunas no conjunto de informações para isolar as colunas que você deseja usar antes de usar SMOTE.

    Caso contrário, a criação de novos casos usando o SMOTE é baseada em todas as colunas que você fornece como entradas.

  3. Verifique se a coluna que contém o rótulo ou a classe de destino está marcada como tal.

    Se não houver nenhuma coluna de rótulo, use o módulo Editar metadados para selecionar a coluna que contém os rótulos de classe e selecione rótulo na lista suspensa campos .

  4. O módulo SMOTE identifica automaticamente a classe minoritária na coluna Label e obtém todos os exemplos para a classe minoritária.

  5. Na opção percentual de SMOTE , digite um número inteiro que indica a porcentagem de destino de casos minoritários no conjunto de saída. Por exemplo:

    • Você digita 0 (%). O módulo SMOTE retorna exatamente o mesmo conjunto de dados que você forneceu como entrada, não adicionando novos casos minoritários. Nesse conjunto de DataSet, a proporção de classe não foi alterada.

    • Você digita 100 (%). O módulo SMOTE gera novos casos minoritários, adicionando o mesmo número de ocorrências minoritárias que estavam no conjunto de conjuntos original. Como SMOTE não aumenta o número de casos de maioria, a proporção de casos de cada classe agora foi alterada.

    • Você digita 200 (%). O módulo dobra a porcentagem de casos minoritários em comparação com o conjunto de um original. Isso não resulta no dobro do número de casos minoritários que antes. Em vez disso, o tamanho do conjunto de resultados é aumentado de forma que o número de casos principais permaneça o mesmo e o número de casos minoritários é aumentado até que corresponda ao valor de percentual desejado.

    Observação

    Use somente múltiplos de 100 para o percentual de SMOTE.

  6. Use a opção número de vizinhos mais próximos para determinar o tamanho do espaço de recurso que o algoritmo SMOTE usa ao criar novos casos. Um vizinho mais próximo é uma linha de dados (uma ocorrência) que é muito semelhante à alguma ocorrência de destino. A distância entre duas ocorrências é medida pela combinação dos vetores de peso de todos os recursos.

    • Ao aumentar o número de vizinhos mais próximos, você obtém recursos de mais casos.
    • Mantendo o número de vizinhos mais próximos baixos, você usa recursos que são mais semelhantes aos do exemplo original.
  7. Digite um valor na caixa de texto semente aleatória se desejar garantir os mesmos resultados sobre execuções do mesmo experimento, 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 o experimento é implantado, o que pode causar resultados ligeiramente diferentes em relação a execuções.

  8. Execute o experimento.

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

Dica

Se você quiser descobrir quais novas linhas foram adicionadas, poderá usar os módulos aplicar transformação SQL ou dados de junção .

Observações técnicas

  • Ao publicar um modelo que usa o módulo SMOTE , remova SMOTE do teste de previsão antes que ele seja publicado como um serviço Web. O motivo é que o SMOTE destina-se a melhorar um modelo durante o treinamento e não se destina à pontuação. Você poderá receber um erro se um experimento de previsão publicado contiver o módulo SMOTE.

  • Muitas vezes, você pode obter resultados melhores se aplicar a limpeza de valor ausente ou outras transformações para corrigir dados antes de aplicar SMOTE.

  • Alguns pesquisadores investigaram se o SMOTE é eficaz em dados altos ou esparsos, como aqueles usados na classificação de texto ou nos conjuntos de dados de genoma. Este documento tem um bom resumo dos efeitos e da validade teórica da aplicação de SMOTE nesses casos: Blagus e Lusa: SMOTE para dados de classe altamente dimensional com desequilíbrio

    Se o SMOTE não for eficaz em seu conjunto de informações, outras abordagens que você pode considerar incluem vários métodos para sobreamostrar os casos minoritários ou subamostrar os casos principais, bem como técnicas de Ensemble que ajudam o aprendiz diretamente, usando clustering, bagging ou aumento adaptável.

Entrada esperada

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

Parâmetros do módulo

Name Intervalo Type Padrão Descrição
Porcentagem SMOTE >= 0 Integer 100 Quantidade de sobreamostragem em múltiplos de 100.
Número de vizinhos mais próximos >= 1 Integer 1 O número de vizinhos mais próximos a partir do qual desenhar recursos para novas ocorrências
Propagação aleatória Qualquer Integer 0 Propagação para gerador de número aleatório

Saída

Nome Tipo Descrição
Tabela Tabela de Dados Uma tabela de dados que contém os exemplos originais mais um número adicional de exemplos de classes minoritárias sintéticas. O número de novos exemplos é (smotePercent/100)*T, onde T é o número de amostras de classe minoritária.

Consulte também

Exemplo e divisão
Lista de Módulo A-Z