Versões diferentes do sklearn fornecem resultados de treinamento bastante diferentes

9

Nós atualizamos nosso sklearn do antigo 0.13-git para o 0.14.1 e descobrimos que o desempenho do nosso classificador de regressão logística mudou bastante. Os dois classificadores treinados com os mesmos dados têm coeficientes diferentes e, portanto, geralmente dão resultados de classificação diferentes.

Como experiência, usei 5 pontos de dados (alta dimensional) para treinar o classificador LR e os resultados são:

0.13-git:

clf.fit(data_test.data, y)
LogisticRegression(C=10, class_weight='auto', dual=False, fit_intercept=True,
intercept_scaling=1, penalty='l2', tol=0.0001)
np.sort(clf.coef_)
array([[-0.12442518, -0.11137502, -0.11137502, ..., 0.05428562,
0.07329358, 0.08178794]])

0.14.1:

clf1.fit(data_test.data, y)
LogisticRegression(C=10, class_weight='auto', dual=False, fit_intercept=True,
intercept_scaling=1, penalty='l2', random_state=None, tol=0.0001)
np.sort(clf1.coef_)
array([[-0.11702073, -0.10505662, -0.10505662, ..., 0.05630517,
0.07651478, 0.08534311]])

Eu diria que a diferença é bem grande, na faixa de 10 ^ (- 2). Obviamente, os dados que usei aqui não são ideais, porque a dimensionalidade dos recursos é muito maior que o número de entradas. No entanto, é frequentemente o caso na prática também. Tem algo a ver com a seleção de recursos? Como posso fazer com que os resultados sejam os mesmos de antes? Eu entendo que os novos resultados não são necessariamente piores do que antes, mas agora o foco é torná-los o mais consistente possível. Obrigado.

    
por ymeng 18.04.2015 в 20:46
fonte

1 resposta

2

Aqui está um comentário sobre a versão 0.13 da nova página :

Fixed class_weight support in svm.LinearSVC and linear_model.LogisticRegression
by Andreas Müller. The meaning of class_weight was reversed as erroneously
higher weight meant less positives of a given class in earlier releases.

No entanto, a descrição da atualização é para a versão 0.13, não para uma versão superior. Você mencionou que usou a versão 0.13-git , talvez tenha usado um pré-lançamento da versão 0.13 onde o recurso não foi editado: dessa forma, a atualização poderia fazer sentido em relação ao seu problema.

Ao analisar seus coeficientes, eles são menores na nova versão, o que faz um pouco de sentido com a descrição da atualização informando que os pesos foram inicialmente reduzidos.

Você pode querer alterar os novos parâmetros do LogisticRegression(...) e tentar ajustar um pouco as coisas.

    
por Guillaume Chevalier 16.09.2015 / 02:55
fonte