limiar de classificação no RandomForest-sklearn

9

1) Como posso alterar o limite de classificação (acho que é 0,5 por padrão) no RandomForest no sklearn?

2) como posso sub-amostrar no sklearn?

3) Tenho o seguinte resultado do classificador RandomForest: [[1635 1297] [520 3624]]

         precision    recall  f1-score   support

class 0       0.76      0.56      0.64      2932
class 1       0.74      0.87      0.80      4144

média / total 0,75 0,74 0,73 7076

primeiro, os dados são desequilibrados (30% da classe 0 e 70% da classe 1). Então, acho que é mais provável que o classificador seja tendencioso para a classe 1, o que significa mover alguns da classe 0 para a classe 1 (existem 1297 classificações erradas para a classe 0, mas 520 classificações erradas para a classe 1). Como posso consertar isso? se downsampling pode ajudar? ou alterar o limiar de classificação?

Atualização: a classe 0 tem 40% da população, enquanto a classe 1 é 60%. No entanto, a mudança da classe 0 para a classe 1 (1297) é alta enquanto eu quero que isso se torne baixo.

Amante de Big Data
fonte

Respostas:

7

Na verdade, você poderia agrupar sua floresta aleatória em uma classe com predictmétodos que chamam o predict_probamétodo da floresta aleatória interna e produzir a classe 1 apenas se for maior que um limite personalizado.

Como alternativa, você pode influenciar o algoritmo de treinamento passando um valor mais alto sample_weightpara amostras da classe minoritária.

ogrisel
fonte
Obrigado. Eu estava pensando em aumentar o peso para turmas menores. No entanto, eu não posso ver nada em Floresta aleatória classificador (há em SGDclassifier)
Amante de Big Data
O método de ajuste aceita um sample_weightparâmetro (um peso por parâmetro) que é muito flexível e possibilita a simulação class_weight(um peso por classe de destino).
ogrisel
Obrigado. quando eu uso clf = clf.fit (X, Y, sample_weight = preprocessing.balance_weights (y), isso me fornece ValueError: os operandos não podiam ser transmitidos junto com as formas. y é binário 0/1
Big Data Lover
Qual é a forma de y? Por que você tem diferente Ye y?
ogrisel