懲罰:懲罰項,str類型,可選參數為l1和l2,默認值為l2。用於指定罰款項目中使用的規格。牛頓-cg、sag和lbfgs算法僅支持L2規範。L1G規範假設模型的參數滿足拉普拉斯分布,L2假設的模型的參數滿足高斯分布。所謂範式就是給參數加上約束,這樣模型就不會過擬合。但是,如果有必要添加約束的話,也沒問題。這個問題沒人能回答。只能說,有了約束,理論上應該會得到泛化能力更強的結果。
Dual: dual或原始方法,bool類型,默認值為False。對偶方法僅用於求解線性多核的L2罰項。當樣本數>時;對要素進行采樣時,dual通常設置為False。
Tol:停止求解的標準,浮點型,默認值為1e-4。也就是在達到解的時候,停下來,認為已經找到了最優解。
c:正則化系數λ的倒數,浮點型,默認為1.0。必須是正浮點數。像SVM壹樣,較小的值表示較強的正則化。
Fit_intercept:是否有截距或偏差;布爾型;默認值為True。
Intercept_scaling:僅在正則項為“liblinear”且fit_intercept設置為True時有用。類型float,默認為1。
Class_weight:用於表示分類模型中各種類型的權重,可以是字典,也可以是‘平衡’字符串。默認情況下不輸入,即無論權重如何都是無。如果選擇輸入,可以選擇balanced讓類庫自己計算類型權重,也可以自己輸入每種類型的權重。比如0,1的二進制模型,我們可以定義class _ weight = {0: 0.9,1: 0.1},這樣0型的權重是90%,而1型的權重是10%。如果class_weight選擇了balanced,類庫將根據訓練樣本大小計算權重。某類樣本越多,權重越低,樣本量越少,權重越高。class_weight平衡時,類權重的計算方法如下:n _ samples/(n _ classes * NP . bin count(y))。N_samples是樣本數,n_classes是類別數,np.bincount(y)輸出每個類別的樣本數,例如y=。
那麽class_weight是做什麽的呢?
在分類模型中,我們經常會遇到兩種問題:
首先是錯誤分類的高成本。例如,對合法用戶和非法用戶進行分類是非常昂貴的。我們更傾向於將合法用戶歸類為非法用戶,然後可以手動重新識別,但不希望將非法用戶歸類為合法用戶。這時候可以適當提高非法用戶的權重。
第二是樣本高度不平衡。比如我們有10000個合法用戶和非法用戶的二進制樣本數據,其中合法用戶有9995個,非法用戶只有5個。如果不考慮權重,我們可以作為合法用戶預測所有的測試集,那麽理論上預測準確率是99.95%,但是沒有任何意義。這時候可以選擇balanced,讓類庫自動增加非法用戶樣本的權重。通過增加某個分類的權重,會比不考慮權重的情況下將更多的樣本歸入高權重類別,從而解決上述兩類問題。
Random_state:隨機數種子,int類型,可選參數,默認為none,僅在正則化優化算法為Sag和Liblinear時有用。
求解器:優化算法選擇參數,可選參數只有五個,分別是Newton-CG、LBFGS、Liblinear、Sag和Saga。默認值為liblinear。求解器參數決定了我們對邏輯回歸損失函數的優化方法,有四種算法可供選擇,即:
Liblinear:使用開源的liblinear庫,內部使用坐標軸下降法叠代優化損失函數。
Lbfgs:壹種擬牛頓法,利用損失函數的二階導數矩陣,即海森堡矩陣,叠代優化損失函數。
牛頓-cg:也是牛頓法族的壹種,利用損失函數的二階導數矩陣,即海森堡矩陣,叠代優化損失函數。
Sag:隨機平均梯度下降,是梯度下降法的壹個變種。與普通梯度下降法不同的是,每次叠代只使用壹部分樣本計算梯度,適用於樣本數據較多的情況。
Saga:變權線性收斂隨機優化算法。
總結:
Liblinear適合小數據集,sag和saga適合大數據集,因為速度更快。
對於多分類問題,只有newton-cg、sag、saga和lbfgs可以處理多重損失,而liblinear受到壹對殘差(OvR)的限制。什麽意思,用liblinear的時候,如果是多分類問題,必須先把壹個類別看成壹個類別,剩下的所有類別都看成另壹個類別。以此類推,所有範疇都被遍歷和分類。
Newton-cg、sag和lbfgs都需要丟失函數的壹階或二階連續導數,所以在沒有連續導數的情況下不能用於L1正則化,只能用於L2正則化。Liblinear和saga采用L1和L2的所有正則化。
同時,sag每次只使用部分樣本進行梯度叠代,所以在樣本量很小的情況下不要選擇它,但是如果樣本量很大,比如超過65438+百萬,則首選sag。但是sag不能用於L1的正則化,所以當妳有大量樣本,需要L1正則化的時候,妳就要自己做出選擇了。要麽通過采樣樣本來減少樣本量,要麽返回到L2正則化。
從上面的描述,妳可能會覺得既然newton-cg、lbfgs、sag都有那麽多限制,如果不是大樣本,我們可以只選擇liblinear!錯了,因為liblinear也有自己的弱點!我們知道,logistic回歸包括二元logistic回歸和多元logistic回歸。壹對多(OvR)和多對多(MvM)是多變量邏輯回歸的常見方法。MvM通常比OvR更準確。郁悶的是liblinear只支持OvR,不支持MvM,所以如果需要相對準確的多元logistic回歸,就不能選擇liblinear。這也意味著,如果我們需要相對準確的多元logistic回歸,我們不能使用L1正則化。
Max_iter:算法的最大叠代次數,int類型,默認值為10。只有當正則化優化算法是牛頓-cg時,sag和lbfgs才是有用的,算法的最大叠代次數收斂。
Multi_class:分類方法的選擇參數,str類型,可選參數為ovr和多項式,默認值為ovr。Ovr是前面提到的壹對多(OvR),多項式是前面提到的多對多(MvM)。如果是二元logistic回歸,ovr和多項式沒有區別,區別主要在多元logistic回歸。
OvR和MvM有什麽區別?*
OvR的想法很簡單。不管妳有多少元邏輯回歸,我們都可以把它看成二元邏輯回歸。具體來說,對於K類的分類決策,我們把K類的所有樣本作為正例,把除K類以外的所有樣本作為負例,然後對它們進行二元logistic回歸,得到K類的分類模型。得到其他類的分類模型等等。
然而,MvM相對復雜。這裏,解釋了MvM壹對壹(OvO)的特殊情況。如果模型有T類,我們壹次從所有T類樣本中選擇兩種樣本,不妨記為T1和T2,把所有輸出為T1和T2的樣本放在壹起,以T1為正例,T2為負例,進行二元邏輯回歸,得到模型參數。我們需要T(T-1)/2次分類。
可以看出,OvR相對簡單,但分類效果相對較差(這裏指的是大部分樣本分布,在某些樣本分布下OvR可能更好)。而MvM分類相對準確,但分類速度不如OvR快。如果選擇ovr,可以選擇liblinear、newton-cg、lbfgs、sag四種損失函數優化方法。但如果選擇多項式,就只能選擇牛頓-cg、lbfgs和sag。
Verbose:日誌冗余,int類型。默認值為0。即不輸出訓練過程,偶爾在1輸出結果,大於1,為每個子模型輸出。
Warm_start:熱啟動參數,bool類型。默認值為False。如果為真,則下壹次訓練將采用附加樹的形式(將最後壹次調用重新用作初始化)。
N_jobs:並行行數。Int類型,默認為1。在1,用壹核CPU運行程序,在2,用兩核CPU運行程序。當它是-1時,用所有CPU內核運行程序。
總結:
優點:實現簡單,易於理解和實現;計算成本不高,速度快,存儲資源低。
缺點:容易欠擬合,分類準確率可能不高。
其他:
Logistic回歸的目的是尋找壹個非線性函數Sigmoid的最佳擬合參數,求解過程可以通過優化算法來完成。
壹些改進的優化算法,比如sag。它可以在新數據到達時完成參數更新,而無需重新讀取整個數據集進行批處理。
機器學習的壹個重要問題是如何處理缺失數據。這個問題沒有標準答案,要看實際應用中的需求。有壹些解決方案,每種方案都有自己的優缺點。
根據資料,這是Sklearn的參數,為了達到更好的分類效果。