1. 程式人生 > >sklearn.linear_model——LogisticRegression調參小結

sklearn.linear_model——LogisticRegression調參小結

from sklearn.linear_model import LogisticRegression

資料標準化處理:
from sklearn.preprocessing import StandardScaler
X = preprocessing.StandardScaler().fit_transform(X)

用法:
LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’liblinear’, max_iter=100, multi_class=’ovr’, verbose=0, warm_start=False, n_jobs=1)

引數介紹
penalty懲罰項
str, ‘l1’ or ‘l2’,
預設: ‘l2’
注:在調參時如果我們主要的目的只是為了解決過擬合,一般penalty選擇L2正則化就夠了。但是如果選擇L2正則化發現還是過擬合,即預測效果差的時候,就可以考慮L1正則化。另外,如果模型的特徵非常多,我們希望一些不重要的特徵係數歸零,從而讓模型係數稀疏化的話,也可以使用L1正則化。

solver優化方法
(1)liblinear:使用了開源的liblinear庫實現,內部使用了座標軸下降法來迭代優化損失函式。
(2)lbfgs:擬牛頓法的一種,利用損失函式二階導數矩陣即海森矩陣來迭代優化損失函式。
(3)newton-cg:也是牛頓法家族的一種,利用損失函式二階導數矩陣即海森矩陣來迭代優化損失函式。
(4)sag:即隨機平均梯度下降,是梯度下降法的變種,和普通梯度下降法的區別是每次迭代僅僅用一部分的樣本來計算梯度,適合於樣本資料多的時候,SAG是一種線性收斂演算法,這個速度遠比SGD快。
注:從上面的描述可以看出,newton-cg, lbfgs和sag這三種優化演算法時都需要損失函式的一階或者二階連續導數,因此不能用於沒有連續導數的L1正則化,只能用於L2正則化。而liblinear通吃L1正則化和L2正則化。

multi_class:(待完善)
‘ovr’:uses the one-vs-rest (OvR) scheme,無論多少元邏輯迴歸都看作二元的
‘multinomial’:uses the cross- entropy loss

正則化引數C
smaller values specify stronger regularization