1. 概述
在scikit-learn中,與邏輯回歸有關(guān)的主要是這3個類。LogisticRegression, LogisticRegressionCV 和logistic_regression_path。其中LogisticRegression和LogisticRegressionCV的主要區(qū)別是LogisticRegressionCV使用了交叉驗證來選擇正則化系數(shù)C。而LogisticRegression需要自己每次指定一個正則化系數(shù)。除了交叉驗證,以及選擇正則化系數(shù)C以外, LogisticRegression和LogisticRegressionCV的使用方法基本相同。
logistic_regression_path類則比較特殊,它擬合數(shù)據(jù)后,不能直接來做預(yù)測,只能為擬合數(shù)據(jù)選擇合適邏輯回歸的系數(shù)和正則化系數(shù)。主要是用在模型選擇的時候。一般情況用不到這個類,所以后面不再講述logistic_regression_path類。
此外,scikit-learn里面有個容易讓人誤解的類RandomizedLogisticRegression,雖然名字里有邏輯回歸的詞,但是主要是用L1正則化的邏輯回歸來做特征選擇的,屬于維度規(guī)約的算法類,不屬于我們常說的分類算法的范疇。
后面的講解主要圍繞LogisticRegression和LogisticRegressionCV中的重要參數(shù)的選擇來來展開,這些參數(shù)的意義在這兩個類中都是一樣的。
2. 正則化選擇參數(shù):penalty
LogisticRegression和LogisticRegressionCV默認(rèn)就帶了正則化項。penalty參數(shù)可選擇的值為"l1"和"l2".分別對應(yīng)L1的正則化和L2的正則化,默認(rèn)是L2的正則化。
在調(diào)參時如果我們主要的目的只是為了解決過擬合,一般penalty選擇L2正則化就夠了。但是如果選擇L2正則化發(fā)現(xiàn)還是過擬合,即預(yù)測效果差的時候,就可以考慮L1正則化。另外,如果模型的特征非常多,我們希望一些不重要的特征系數(shù)歸零,從而讓模型系數(shù)稀疏化的話,也可以使用L1正則化。
penalty參數(shù)的選擇會影響我們損失函數(shù)優(yōu)化算法的選擇。即參數(shù)solver的選擇,如果是L2正則化,那么4種可選的算法{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}都可以選擇。但是如果penalty是L1正則化的話,就只能選擇‘liblinear’了。這是因為L1正則化的損失函數(shù)不是連續(xù)可導(dǎo)的,而{‘newton-cg’, ‘lbfgs’,‘sag’}這三種優(yōu)化算法時都需要損失函數(shù)的一階或者二階連續(xù)導(dǎo)數(shù)。而‘liblinear’并沒有這個依賴。
具體使用了這4個算法有什么不同以及有什么影響我們下一節(jié)講。
3. 優(yōu)化算法選擇參數(shù):solver
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26