Eu tenho um modelo de regressão logística (adequado via glmnet em R com regularização líquida elástica) e gostaria de maximizar a diferença entre verdadeiros positivos e falsos positivos. Para fazer isso, veio à mente o seguinte procedimento:
- Ajuste o modelo de regressão logística padrão
- Usando o limiar de previsão como 0,5, identifique todas as previsões positivas
- Atribua peso 1 para observações previstas positivamente, 0 para todos os outros
- Ajustar modelo de regressão logística ponderada
Quais seriam as falhas dessa abordagem? Qual seria a maneira correta de prosseguir com esse problema?
A razão para querer maximizar a diferença entre o número de verdadeiros positivos e falsos negativos se deve ao design do meu aplicativo. Como parte de um projeto de classe, estou construindo um participante autônomo em um mercado on-line - se meu modelo prevê que ele pode comprar algo e vendê-lo posteriormente por um preço mais alto, ele faz uma oferta. Gostaria de manter a regressão logística e obter resultados binários (ganhos, perdas) com base em custos fixos e em incrementos de preço unitário (ganho ou perco a mesma quantia em todas as transações). Um falso positivo me machuca porque significa que eu compro algo e sou incapaz de vendê-lo por um preço mais alto. No entanto, um falso negativo não me machuca (apenas em termos de custo de oportunidade) porque significa apenas que se eu não comprasse, mas se tivesse, teria ganho dinheiro. Similarmente,
Concordo que o corte de 0,5 é completamente arbitrário e, quando otimizei o modelo da etapa 1 no limiar de previsão que produz a maior diferença entre positivos verdadeiros / falsos, ele se mostrou mais próximo de 0,4. Acho que isso se deve à natureza distorcida dos meus dados - a proporção entre negativos e positivos é de cerca de 1: 3.
No momento, estou seguindo os seguintes passos:
- Dividir dados em treinamento / teste
- Ajuste o modelo ao treinamento, faça previsões no conjunto de testes e calcule a diferença entre positivos verdadeiros / falsos
- Ajuste o modelo totalmente, faça previsões no conjunto de testes e calcule a diferença entre positivos verdadeiros / falsos
A diferença entre os positivos verdadeiro / falso é menor na etapa 3 do que na etapa 2, apesar do conjunto de treinamento ser um subconjunto do conjunto completo. Como não me importo se o modelo no 3 tem mais negativos verdadeiros e menos falsos negativos, há algo que eu possa fazer sem alterar a própria função de probabilidade?