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:選擇邏輯回歸模型中是否會有常數項\(b\)。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的幾個核來跑程序。
sklearn.linear_model.LogisticRegressionCV
- 相比於
LogisticRegression,LogisticRegressionCV使用交叉驗證來選擇正則化系數C。
