SMOTE

Importante

O suporte para o Machine Learning Studio (clássico) terminará em 31 de agosto de 2024. É recomendável fazer a transição para o Azure Machine Learning até essa data.

A partir de 1º de dezembro de 2021, você não poderá criar recursos do Machine Learning Studio (clássico). Até 31 de agosto de 2024, você pode continuar usando os recursos existentes do Machine Learning Studio (clássico).

A documentação do ML Studio (clássico) está sendo desativada e pode não ser atualizada no futuro.

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: somente Machine Learning Studio (clássico)

Módulos semelhantes do tipo "arrastar e soltar" estão disponíveis no designer do Azure Machine Learning.

Visão geral do módulo

este artigo descreve como usar o módulo SMOTE no 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 é a melhor forma de ampliar o número de casos esparsos 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 muda o número de casos majoritários.

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.

A 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 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, de 748 linhas ou casos no conjunto de registros, há 570 casos (76%) da 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 à porcentagem SMOTE = 0)
570

76%
178

24%
748
Porcentagem SMOTE = 100 570

62%
356

38%
926
Porcentagem SMOTE = 200 570

52%
534

48%
1104
Porcentagem 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 a 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. Conexão 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 dados, 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 dados 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 porcentagem 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 parecidos com os 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 conjuntos de dados que contém as linhas originais, além de um número de linhas adicionadas com casos de maioria.

Dica

Se você quiser descobrir quais novas linhas foram adicionadas, poderá usar os módulos Aplicar SQL Transformação ou Unir Dados.

Observações técnicas

  • Ao publicar um modelo que usa o módulo SMOTE , remova o SMOTE do teste preditivo antes de ser 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 preditivo publicado contiver o módulo SMOTE.

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

  • Alguns pesquisadores investigaram se o SMOTE é eficaz em dados esparsos ou de alta dimensão, como aqueles usados em conjuntos de dados de classificação de texto ou genômica. Este documento tem um bom resumo dos efeitos e da validade teórico da aplicação de SMOTE nesses casos: Blagus e Lusa: SMOTE para dados de classe de alta dimensão desequilibrados

    Se o SMOTE não for eficaz em seu conjunto de dados, outras abordagens que você pode considerar incluem vários métodos para superamplizar os casos de milissegência ou para subamplificar os casos da maioria, bem como técnicas de ensemble que ajudam o aluno diretamente, usando clustering, reticência 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

Nome 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 as amostras originais, além de um número adicional de amostras de classes de classes de classes sintéticas. O número de novos exemplos é (smotePercent/100)*T, onde T é o número de amostras de classe minoritária.

Confira também

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