Adicionando pesos à regressão logística para dados desequilibrados


21

Quero modelar uma regressão logística com dados desequilibrados (9: 1). Eu queria tentar a opção de pesos na glmfunção em R, mas não tenho 100% de certeza do que faz.

Digamos que minha variável de saída seja c(0,0,0,0,0,0,0,0,0,1). agora eu quero dar o "1" 10 vezes mais peso. então eu dou o argumento dos pesos weights=c(1,1,1,1,1,1,1,1,1,1,1,10).

Quando eu fizer isso, isso será considerado no cálculo da probabilidade máxima. Estou certo? a classificação incorreta de "1" é apenas 10 vezes pior do que a classificação incorreta de "0".

Respostas:


11

Ching, você não precisa equilibrar seu conjunto de dados em termos de 1 e 0. Tudo o que você precisa é de um número suficiente de 1s para a probabilidade máxima de convergir. Observando a distribuição de 1s (100.000) no seu conjunto de dados, você não deve ter nenhum problema. Você pode fazer um experimento simples aqui

  1. Amostra 10% dos 1 e 10% dos 0 e use um peso de 10 para ambos
  2. Amostra 100% dos 1 e 10% dos 0 e use um peso de 10 para os 0

Nos dois casos, você obterá estimativas idênticas. Novamente, a idéia de ponderação está relacionada à amostragem. Se você estiver usando o conjunto de dados completo, não deve ponderá-lo. Se eu fosse você, usaria apenas 10% se 1 e 10% de 0.

Em R, você usaria glm. Aqui está um código de exemplo:

glm(y ~ x1 + x2, weights = wt, data =data, family = binomial("logit"))

No seu conjunto de dados, deve haver uma variável wtpara pesos.

Se você usar 10% de 0 e 1, sua wtvariável terá um valor de 10.

Se você usar 10% dos zeros e 100% dos zeros: a wtvariável terá um valor de 10 para observações com y = 0 e 1 para observações com y = 1


12

A ponderação é um procedimento que pondera os dados para compensar as diferenças na amostra e na população (King 2001). Por exemplo, em eventos raros (como fraude no risco de crédito, mortes na literatura médica), tendemos a amostrar todos os 1s (eventos raros) e uma fração dos 0s (não eventos). Nesses casos, temos que ponderar as observações adequadamente.

Exemplo: digamos, em uma população de 500.000 transações, existem 50 transações de fraude. Nesse caso, você

  1. Amostra de todas as transações de 50 fraudes (100% da fraude)
  2. 10% das boas transações (10% de 500.000 são 50.000 boas transações)

Nesse caso, você atribui um peso de 1 para transações de fraude e um peso de 10 para boas transações. Isso é chamado de método de máxima verossimilhança ponderada. O ponto importante é que a ponderação está relacionada às proporções da amostra

Consulte: Regressão logística em dados de eventos raros (King 2001)


oi subra !!! muito obrigado pela abordagem King !! não ouvi falar disso! no meu caso eu tenho 1 milhão de transações! (900.000 são "0" e 100.000 são "1"). então eu deveria provar 10% do meu "0"? então eu tenho quase um conjunto de dados equilibrado. então eu tenho que ponderar o "0" dez vezes mais que o "1", certo? e a função em R glm () no pacote MASS faz exatamente isso? se eu ponderar minhas observações, vou calcular a probabilidade máxima ponderada? obrigado! realmente aprecio a sua resposta e ajuda
ching

Eu realmente penso muito sobre esse problema. e se eu disser: agora use todos os meus dados para criar um modelo de logit (com os dados desequilibrados 9: 1). e então peso meu "1" dez vezes, mesmo que na realidade eu não tenha mais dados e NÃO seja 10% dos meus dados. é como, eu ajo como se tivesse ... então agora, quando R calcula o modelo, ele pensa que só uso 10% do meu "1" e o considera no cálculo da probabilidade. Isso faz algum sentido?
ching
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.