Estou executando uma análise sobre a probabilidade de inadimplência de empréstimos usando regressão logística e florestas aleatórias.
Quando uso regressão logística, a previsão é sempre '1' (o que significa bom empréstimo). Eu nunca vi isso antes e não sei por onde começar em termos de tentar resolver o problema. Existem 22 colunas com 600 mil linhas. Quando diminuo o número de colunas, obtenho o mesmo resultado com regressão logística.
Por que a regressão logística pode ser tão errada?
**Actual from the data**
0 : 41932
1 : 573426
**Logistic regression output**
prediction for 1 when actually 0: 41932
prediction for 1 when actually 1:573426
A**s you can see, it always predicts a 1**
**Random forests does better:**
actual 0, pred 0 : 38800
actual 1, pred 0 : 27
actual 0, pred 1 : 3132
actual 1, pred 1 : 573399
predict
no sklearn em um modelo de probabilidade, é inútil. SEMPRE usepredict_proba
.Respostas:
Bem, faz sentido que o seu modelo preveja sempre 1. Dê uma olhada no seu conjunto de dados: ele está seriamente desequilibrado em favor da sua classe positiva. A classe negativa compõe apenas ~ 7% dos seus dados. Tente reequilibrar seu conjunto de treinamento ou use um algoritmo sensível a custos.
fonte
fonte
Quando você classifica usando o logit, é isso que acontece.
O logit prevê a probabilidade de inadimplência (PD) de um empréstimo, que é um número entre 0 e 1. Em seguida, defina um limite D, de forma a marcar um empréstimo como padrão se PD> D e marcá-lo como não- padrão se PD
Naturalmente, em uma população típica de empréstimos PD << 1. Portanto, no seu caso, 7% é uma probabilidade bastante alta de dados de um ano (os PDs são normalmente relatados anualmente). Se esses dados são plurianuais, estamos falando do chamado PD cumulativo. Nesse caso, cumPD = 7% não é um número alto para 10 anos de dados, por exemplo. Portanto, por qualquer padrão, eu não diria que seu conjunto de dados é problemático. Eu descreveria isso pelo menos típico para dados padrão de empréstimo, se não for ótimo (no sentido de que você tem um número relativamente grande de padrões).
Agora, suponha que seu modelo preveja os seguintes três níveis de DP:
Suponha também que os padrões reais para esses grupos sejam:
Agora você pode definir D com valores diferentes e ver como a matriz muda. Vamos usar D = 0,4 primeiro:
Se você definir D = 0,6:
Se você definir D = 0,99:
O último caso é o que você vê nos resultados do seu modelo. Neste caso, estou enfatizando o limite D para um classificador. Uma simples alteração em D pode melhorar certas características da sua previsão. Observe que, nos três casos, o DP previsto permaneceu o mesmo, apenas o limite D mudou.
Também é possível que sua própria regressão do logit seja ruim, é claro. Portanto, nesse caso, você tem pelo menos duas variáveis: a especificação do logit e o limite. Ambos afetam seu poder de previsão.
fonte
Se o problema é realmente o desequilíbrio entre as classes, eu começaria simplesmente equilibrando os pesos das classes:
Essa configuração de parâmetro significa que as penalidades para previsões falsas na função de perda serão ponderadas com proporções inversas às frequências das classes. Isso pode resolver o problema que você descreve.
fonte
Bem, sem mais informações, é difícil dizer, mas pela definição de regressão logística você está saturando com base nos dados ajustados. Então, na equação, o termo e ^ -t vai para 0. Portanto, o primeiro lugar para procurar seria ver quais são os coeficientes reais.
Isso também pode ser devido a variáveis mal dimensionadas. Pode haver um problema em que uma das colunas é enorme em valor numérico em comparação com outras que está causando problemas.
fonte
Você pode usar o SMOTE para equilibrar o conjunto de dados desequilibrado. Um bom artigo para referência é:
Lifeng Zhou, Hong Wang, predição padrão de empréstimos para grandes dados desequilibrados usando florestas aleatórias, TELKOMNIKA Jornal Indonésio de Engenharia Elétrica, Vol.10, No.6, outubro de 2012, pp. 1519 ~ 1525, link .
fonte