sklearn.linear_model.LogisticRegression
LogisticRegression(penalty='l2', dual=False,
tol=0.0001, C=1.0, fit_intercept=True,
intercept_scaling=1, class_weight=None,
random_state=None, solver='warn', max_iter=100,
multi_class='warn', verbose=0,
warm_start=False, n_jobs=None)
-
penalty
:懲罰項,可爲'l1' or 'l2'
。'netton-cg', 'sag', 'lbfgs'
只支持'l2'
。'l1'
正則化的損失函數不是連續可導的,而'netton-cg', 'sag', 'lbfgs'
這三種算法需要損失函數的一階或二階連續可導。- 調參時如果主要是爲了解決過擬合,選擇
'l2'
正則化就夠了。若選擇'l2'
正則化還是過擬合,可考慮'l1'
正則化。 - 若模型特徵非常多,希望一些不重要的特徵係數歸零,從而讓模型係數化的話,可使用
'l1'
正則化。
-
dual
:選擇目標函數爲原始形式還是對偶形式。將原始函數等價轉化爲一個新函數,該新函數稱爲對偶函數。對偶函數比原始函數更易於優化。
tol
:優化算法停止的條件。當迭代前後的函數差值小於等於tol時就停止。C
:正則化係數。其越小,正則化越強。fit_intercept
:選擇邏輯迴歸模型中是否會有常數項bb。intercept_scaling
:-
class_weight
:用於標示分類模型中各種類型的權重,{class_label: weight} or 'balanced'
。'balanced'
:類庫根據訓練樣本量來計算權重。某種類型的樣本量越多,則權重越低。- 若誤分類代價很高,比如對合法用戶和非法用戶進行分類,可適當提高非法用戶的權重。
- 樣本高度失衡的。如合法用戶9995條,非法用戶5條,可選擇
'balanced'
,讓類庫自動提高非法用戶樣本的權重。
random_state
:隨機數種子。-
solver
:邏輯迴歸損失函數的優化方法。'liblinear'
:使用座標軸下降法來迭代優化損失函數。'lbfgs'
:擬牛頓法的一種。利用損失函數二階導數矩陣即海森矩陣來迭代優化損失函數。'newton-cg'
:牛頓法的一種。同上。'sag'
:隨機平均梯度下降。每次迭代僅僅用一部分的樣本來計算梯度,適合於樣本數據多的時候。- 多元邏輯迴歸有OvR(one-vs-rest)和MvM(many-vs-many)兩種,而MvM一般比OvR分類相對準確一些。但是,
'liblinear'
只支持OvR。
max_iter
:優化算法的迭代次數。-
multi_class
:'ovr' or 'multinomial'
。'multinomial'
即爲MvM。- 若是二元邏輯迴歸,二者區別不大。
- 對於MvM,若模型有T類,每次在所有的T類樣本里面選擇兩類樣本出來,把所有輸出爲該兩類的樣本放在一起,進行二元迴歸,得到模型參數,一共需要T(T-1)/2次分類。
verbose
:控制是否print訓練過程。warm_start
:-
n_jobs
:用cpu的幾個核來跑程序。