Sobre-amostragem com variáveis ​​categóricas

9

Gostaria de executar uma combinação de superamostragem e subamostragem para equilibrar meu conjunto de dados com aproximadamente 4000 clientes divididos em dois grupos, onde um dos grupos tem uma proporção de aproximadamente 15%.

Examinei o SMOTE ( http://www.inside-r.org/packages/cran/DMwR/docs/SMOTE ) e o ROSE ( http://cran.r-project.org/web/packages/ROSE/ ROSE.pdf ), mas ambos criam novas amostras sintéticas usando observações existentes e, por exemplo, kNN.

No entanto, como muitos dos atributos associados aos clientes são categóricos, não acho que esse seja o caminho certo a seguir. Por exemplo, muitas das minhas variáveis, como Region_A e Region_B, são mutuamente exclusivas, mas usando o kNN as novas observações podem ser colocadas na Region_A e na Region_B. Você concorda que isso é um problema?

Nesse caso - como executar uma superamostragem em R simplesmente duplicando as observações existentes? Ou esta é a maneira errada de fazer isso?

pir
fonte
Por que você precisa de subamostragem se você possui apenas 4000 observações?
b Kjetil Halvorsen
Quero equilibrar meu conjunto de dados para ter uma parcela aproximadamente igual de classes. Se eu usar meus dados como estão agora, os modelos simplesmente preverão todas as observações como classe majoritária.
pir

Respostas:

8

ROSE e SMOTE foram projetados para manipular variáveis ​​categóricas, portanto, a menos que suas variáveis ​​categóricas sejam expressas em formato binário, normalmente você não precisa se preocupar com o fato de observações sintéticas receberem recursos categóricos mutuamente exclusivos. Se eles são, você sempre pode reestruturá-los como fatores.

No seu exemplo de duas regiões, você criaria uma nova variável de região com dois níveis, "A" e "B". Seus registros receberão os valores apropriados referenciando suas colunas originais.

Agora, se você estiver em uma situação em que suas novas observações sintéticas podem gerar categorias conflitantes, porque elas estão espalhadas por várias variáveis ​​não relacionadas (por exemplo, SyntheticObservation.isPig = 1 e SyntheticObservation.hasWings = 1), você sempre pode executar a substituição de dados adicionais antes de fazer a estimativa do modelo para limpar essas aberrações.

Além disso, como você possui cerca de 600 observações de eventos em seu conjunto de dados, talvez considere os benefícios potenciais do uso de observações sintéticas derivadas da sub - amostragem da classe majoritária?

habu
fonte