Sklearn参数详解—LR模型
總第105篇
最近會開始一個新的系列,sklearn庫中各模型的參數解釋,本篇主要講述最基礎的LR模型。
模型參數詳解
邏輯回歸:
sklearn.linear_model.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:正則化選擇參數,參數可選值為l1和l2,分別對應l1正則化和l2正則化,默認是l2正則化。
調整該參數的目的主要是為了防止過擬合,一般penalty選擇l2正則化就夠啦,但是如果選擇l2正則化發現依然過擬合,即預測效果還是很差的時候,就可以考慮l1正則化。如果模型的特征非常多,我們希望做一些特征選擇(即把一些不重要的特征過濾掉),這個時候也可以考慮用l1正則化。
penalty參數的選擇會影響我們損失函數優化算法的選擇,即參數solver的選擇,如果是l2正則化,可選的優化算法 {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}都可以選擇。但是如果penalty是L1正則化的話,就只能選擇‘liblinear’了。這是因為L1正則化的損失函數不是連續可導的,而{‘newton-cg’, ‘lbfgs’,‘sag’}這三種優化算法時都需要損失函數的一階或者二階連續導數。而‘liblinear’并沒有這個依賴。這幾個優化方法在solver參數環節進行講述。
dual:用來指明是否將原問題改成他的對偶問題,對偶問題可以理解成相反問題,比如原問題是求解最大值的線性規劃,那么他的對偶問題就是轉化為求解最小值的線性規劃,適用于樣本較小的數據集,因樣本小時,計算復雜度較低。
tol:殘差收斂條件,默認是0.0001,也就是只需要收斂的時候兩步只差<0.0001就停止,可以設置更大或更小。(邏輯回歸模型的損失函數是殘差平方和)
C:正則化系數,正則化強度的導數,必須是一個正數,值越小,正則化強度越大,即防止過擬合的程度更大。
fit_intercept:是否將截距/方差加入到決策模型中,默認為True。
class_weight:class_weight是很重要的一個參數,是用來調節正負樣本比例的,默認是值為None,也就是正負樣本的權重是一樣的,你可以以dict的形式給模型傳入任意你認為合適的權重比,也可以直接指定一個值“balanced”,模型會根據正負樣本的絕對數量比來設定模型最后結果的權重比。
比如,有一數據集的正負樣本絕對數量比為4:6,如果你給參數class_weight賦予balanced值,那么最后模型結果中,正負樣本的權重比就會變成6:4。
random_state:隨機種子的設置,默認是None,如果設置了隨機種子,那么每次使用的訓練集和測試集都是一樣的,這樣不管你運行多少次,最后的準確率都是一樣的;如果沒有設置,那么每次都是不同的訓練集和測試集,最后得出的準確率也是不一樣的。
solver:用來指明損失函數的優化方法,默認是‘liblinear’方法,sklearn自帶了如下幾種:
| liblinear | 使用了坐標軸下降法來迭代優化損失函數 |
| lbfgs | 擬牛頓法的一種,利用損失函數二階導數矩陣即海森矩陣來迭代優化損失函數 |
| newton-cg | 也是牛頓法法的一種,利用損失函數二階導數矩陣即海森矩陣來迭代優化損失函數 |
| sag | 即隨機平均梯度下降,是梯度下降法的變種,是一種線性收斂算法,和普通梯度下降法的區別是每次迭代僅僅用一部分的樣本來計算梯度,適合于樣本數據多的時候 |
newton-cg, lbfgs和sag這三種優化算法時都需要損失函數的一階或者二階連續導數,因此不能用于沒有連續導數的L1正則化,只能用于L2正則化。而liblinear對L1正則化和L2正則化都適用。同時,因sag每次僅僅使用了部分樣本進行梯度迭代,所以當數據量較少時不宜選用,而當數據量很大時,為了速度,sag是第一選擇。
max_iter:算法收斂的最大迭代次數,即求取損失函數最小值的迭代次數,默認是100,
multi_class:分類方法參數選擇,‘ovr’和‘multinomial’兩個值可以選擇,默認值為‘ovr’,如果分類問題是二分類問題,那么這兩個參數的效果是一樣的,主要體現在多分類問題上。
對于多分類問題,"ovr"分類方法是:針對每一類別進行判斷時,都會把這個分類問題簡化為是/非兩類問題;而‘multinomial’是從眾多類別中選出兩個類別,對這兩個類別進行判斷,待判斷完成后,再從剩下的類別中再選出兩類進行判斷,直至最后判斷完成。
verbose:英文意思是”冗余“,就是會輸出一些模型運算過程中的東西(任務進程),默認是False,也就是不需要輸出一些不重要的計算過程。
warm_start:是否使用上次的模型結果作為初始化,默認是False,表示不使用。
n_jobs:并行運算數量(核的數量),默認為1,如果設置為-1,則表示將電腦的cpu全部用上。
模型對象
coef_:返回各特征的系數,絕對值大小可以理解成特征重要性
intercept_:返回模型的截距
n_iter_:模型迭代次數
模型方法
decision_function(X):返回決策函數值(比如svm中的決策距離)
predict_proba(X):返回每個類別的概率值(有幾類就返回幾列值)
predict_log_proba(X):返回概率值的log值(即將概率取對數)
predict(X):返回預測結果值(0/1)
score(X, y=None):返回函數
get_params(deep=True):返回估計器的參數
set_params(**params):為估計器設置參數
你還可以看:
邏輯斯蒂回歸模型
?
總結
以上是生活随笔為你收集整理的Sklearn参数详解—LR模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实战—用户价值模型搭建
- 下一篇: Sklearn参数详解--决策树