sklearn学习(逻辑回归)
邏輯回歸
- 1 概述
- 1.1 名為“回歸”的分類器
- 優(yōu)點(diǎn):
- 1.3 sklearn中的邏輯回歸
- 邏輯回歸相關(guān)的類 說明
- 其他會涉及的類 說明
- 2.1 二元邏輯回歸的損失函數(shù)
- penalty
- 2.2 正則化:重要參數(shù)penalty & C
- 2.2 梯度下降:重要參數(shù)max_iter
1 概述
1.1 名為“回歸”的分類器
回歸樹,隨機(jī)森林的回歸,無一例外他們都是區(qū)別于分類算法們,用來處理和預(yù)測連續(xù)型標(biāo)簽的算法。然而邏輯回歸,是一種名為“回歸”的線性分類器,其本質(zhì)是由線性回歸變化而來的,一種廣泛使用于分類問題中的廣義回歸算法。要理解邏輯回歸從何而來,得要先理解線性回歸。線
性回歸是機(jī)器學(xué)習(xí)中最簡單的的回歸算法,它寫作一個(gè)幾乎人人熟悉的方程:
被統(tǒng)稱為模型的參數(shù),其中 被稱為截距(intercept), θ 1~θ n 被稱為系數(shù)(coefficient),這個(gè)表達(dá)式,其實(shí)就和我們小學(xué)時(shí)就無比熟悉的y=ax+b 是同樣的性質(zhì)。我們以使用矩陣來表示這個(gè)方程,其中x和θ 都可以被看做是一個(gè)列矩陣,則有:
線性回歸的任務(wù),就是構(gòu)造一個(gè)預(yù)測函數(shù) 來映射輸入的特征矩陣x和標(biāo)簽值y的線性關(guān)系,而構(gòu)造預(yù)測函數(shù)的核心就是找出模型的參數(shù): 和 ,著名的最小二乘就是用來求解線性回歸中參數(shù)的數(shù)學(xué)方法。通過函數(shù) ,線性回歸使用輸入的特征矩陣X來輸出一組連續(xù)型的標(biāo)簽值y_pred,以完成各種預(yù)測連續(xù)型變量的任務(wù)
(比如預(yù)測產(chǎn)品銷量,預(yù)測股價(jià)等等)。那如果我們的標(biāo)簽是離散型變量,尤其是,如果是滿足0-1分布的離散型
變量,我們要怎么辦呢?我們可以通過引入聯(lián)系函數(shù)(link function),將線性回歸方程z變換為g(z),并且令g(z)的值
分布在(0,1)之間,且當(dāng)g(z)接近0時(shí)樣本的標(biāo)簽為類別0,當(dāng)g(z)接近1時(shí)樣本的標(biāo)簽為類別1,這樣就得到了一個(gè)分
類模型。而這個(gè)聯(lián)系函數(shù)對于邏輯回歸來說,就是Sigmoid函數(shù):
線性回歸中 ,于是我們將
帶入,就得到了二元邏輯回歸模型的一般形式:
優(yōu)點(diǎn):
信用卡欺詐,評分卡制作,電商中的營銷預(yù)測等等相關(guān)的數(shù)據(jù),都是邏輯回歸的強(qiáng)項(xiàng)。雖然現(xiàn)在有了梯度提升樹GDBT,比邏輯回歸效果更好,也被許多數(shù)據(jù)咨詢公司啟用,但邏輯回歸在金融領(lǐng)域,尤其是銀行業(yè)中的統(tǒng)治地位依然不可動搖(相對的,邏輯回歸在非線性數(shù)據(jù)的效果很多時(shí)候比瞎猜還不如,所以如果你已經(jīng)知道數(shù)據(jù)之間的聯(lián)系是非線性的,千萬不要迷信邏輯回歸)
predict_proba調(diào)用就好,但一般來說,正常的決策樹沒有這個(gè)功能)。
另外,邏輯回歸還有抗噪能力強(qiáng)的優(yōu)點(diǎn)。福布斯雜志在討論邏輯回歸的優(yōu)點(diǎn)時(shí),甚至有著“技術(shù)上來說,最佳模型的AUC面積低于0.8時(shí),邏輯回歸非常明顯優(yōu)于樹模型”的說法。并且,邏輯回歸在小數(shù)據(jù)集上表現(xiàn)更好,在大型的數(shù)據(jù)集上,樹模型有著更好的表現(xiàn)。
由此,我們已經(jīng)了解了邏輯回歸的本質(zhì),它是一個(gè)返回對數(shù)幾率的,在線性數(shù)據(jù)上表現(xiàn)優(yōu)異的分類器,它主要被應(yīng)用在金融領(lǐng)域。其數(shù)學(xué)目的是求解能夠讓模型最優(yōu)化的參數(shù) 的值,并基于參數(shù) 和特征矩陣計(jì)算出邏輯回歸的結(jié)果y(x)。注意:雖然我們熟悉的邏輯回歸通常被用于處理二分類問題,但邏輯回歸也可以做多分類。
1.3 sklearn中的邏輯回歸
邏輯回歸相關(guān)的類 說明
linear_model.LogisticRegression 邏輯回歸回歸分類器(又叫l(wèi)ogit回歸,最大熵分類器)
linear_model.LogisticRegressionCV 帶交叉驗(yàn)證的邏輯回歸分類器
linear_model.logistic_regression_path 計(jì)算Logistic回歸模型以獲得正則化參數(shù)的列表
linear_model.SGDClassifier 利用梯度下降求解的線性分類器(SVM,邏輯回歸等等)
linear_model.SGDRegressor 利用梯度下降最小化正則化后的損失函數(shù)的線性回歸模型
metrics.log_loss 對數(shù)損失,又稱邏輯損失或交叉熵?fù)p失
linear_model.RandomizedLogisticRegression 隨機(jī)的邏輯回歸
其他會涉及的類 說明
metrics.confusion_matrix 混淆矩陣,模型評估指標(biāo)之一
metrics.roc_auc_score ROC曲線,模型評估指標(biāo)之一
metrics.accuracy_score 精確性,模型評估指標(biāo)之一
2 linear_model.LogisticRegression
class 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=’warn’, max_iter=100,
multi_class=’warn’, verbose=0, warm_start=False, n_jobs=None)
2.1 二元邏輯回歸的損失函數(shù)
衡量參數(shù) 的優(yōu)劣的評估指標(biāo),用來求解最優(yōu)參數(shù)的工具
損失函數(shù)小,模型在訓(xùn)練集上表現(xiàn)優(yōu)異,擬合充分,參數(shù)優(yōu)秀
損失函數(shù)大,模型在訓(xùn)練集上表現(xiàn)差勁,擬合不足,參數(shù)糟糕
我們追求,能夠讓損失函數(shù)最小化的參數(shù)組合
注意:沒有”求解參數(shù)“需求的模型沒有損失函數(shù),比如KNN,決策樹
參數(shù) 說明
penalty
可以輸入"l1"或"l2"來指定使用哪一種正則化方式,不填寫默認(rèn)"l2"。
注意,若選擇"l1"正則化,參數(shù)solver僅能夠使用”liblinear",若使用“l(fā)2”正則化,參數(shù)solver中
所有的求解方式都可以使用。
C C正則化強(qiáng)度的倒數(shù),必須是一個(gè)大于0的浮點(diǎn)數(shù),不填寫默認(rèn)1.0,即默認(rèn)一倍正則項(xiàng)。
C越小,對損失函數(shù)的懲罰越重,正則化的效力越強(qiáng),參數(shù) 會逐漸被壓縮得越來越小。在很多書
籍和博客的原理講解中, 被寫作 ,為了大家便于理解sklearn中的參數(shù),我將公式改寫成 ,
更加直觀。
邏輯回歸的損失函數(shù)是由最大似然法來推導(dǎo)出來的,具體結(jié)果可以寫作:
其中, 表示求解出來的一組參數(shù),m是樣本的個(gè)數(shù), 是樣本i上真實(shí)的標(biāo)簽, 是樣本i上,基于參數(shù) 計(jì)算出來的邏輯回歸返回值, 是樣本i的取值。我們的目標(biāo),就是求解出使 最小的 取值。
由于我們追求損失函數(shù)的最小值,讓模型在訓(xùn)練集上表現(xiàn)最優(yōu),可能會引發(fā)另一個(gè)問題:如果模型在訓(xùn)練集上表示優(yōu)秀,卻在測試集上表現(xiàn)糟糕,模型就會過擬合。雖然邏輯回歸和線性回歸是天生欠擬合的模型,但我們還是需要控制過擬合的技術(shù)來幫助我們調(diào)整模型,對邏輯回歸中過擬合的控制,通過正則化來實(shí)現(xiàn)。
2.2 正則化:重要參數(shù)penalty & C
正則化是用來防止模型過擬合的過程,常用的有L1正則化和L2正則化兩種選項(xiàng),分別通過在損失函數(shù)后加上參數(shù)向
量 的L1范式和L2范式的倍數(shù)來實(shí)現(xiàn)。這個(gè)增加的范式,被稱為“正則項(xiàng)”,也被稱為"懲罰項(xiàng)"。損失函數(shù)改變,基
于損失函數(shù)的最優(yōu)化來求解的參數(shù)取值必然改變,我們以此來調(diào)節(jié)模型擬合的程度。其中L1范數(shù)表現(xiàn)為參數(shù)向量中的每個(gè)參數(shù)的絕對值之和,L2范數(shù)表現(xiàn)為參數(shù)向量中的每個(gè)參數(shù)的平方和的開方值。
其中 是我們之前提過的損失函數(shù),C是用來控制正則化程度的超參數(shù),n是方程中特征的總數(shù),也是方程中參數(shù)的總數(shù),j代表每個(gè)參數(shù)。在這里,J要大于等于1,是因?yàn)槲覀兊膮?shù)向量 中,第一個(gè)參數(shù)是 ,是我們的截距,它通常是不參與正則化的。
L1正則化和L2正則化雖然都可以控制過擬合,但它們的效果并不相同。當(dāng)正則化強(qiáng)度逐漸增大(即C逐漸變小),參數(shù) 的取值會逐漸變小,但L1正則化會將參數(shù)壓縮為0,L2正則化只會讓參數(shù)盡量小,不會取到0。 在L1正則化在逐漸加強(qiáng)的過程中,攜帶信息量小的、對模型貢獻(xiàn)不大的特征的參數(shù),會比攜帶大量信息的、對模型有巨大貢獻(xiàn)的特征的參數(shù)更快地變成0,所以L1正則化本質(zhì)是一個(gè)特征選擇的過程,掌管了參數(shù)的“稀疏性”。L1正則化越強(qiáng),參數(shù)向量中就越多的參數(shù)為0,參數(shù)就越稀疏,選出來的特征就越少,以此來防止過擬合。因此,如果特征量很大,數(shù)據(jù)維度很高,我們會傾向于使用L1正則化。由于L1正則化的這個(gè)性質(zhì),邏輯回歸的特征選擇可以由Embedded嵌入法來完成。相對的,L2正則化在加強(qiáng)的過程中,會盡量讓每個(gè)特征對模型都有一些小的貢獻(xiàn),但攜帶信息少,對模型貢獻(xiàn)不大的特征的參數(shù)會非常接近于0。通常來說,如果我們的主要目的只是為了防止過擬合,選擇L2正則化就足夠了。但是如果選擇L2正則化后還是過擬合,模型在未知數(shù)據(jù)集上的效果表現(xiàn)很差,就可以考慮L1正則化。
而兩種正則化下C的取值,都可以通過學(xué)習(xí)曲線來進(jìn)行調(diào)整。
建立兩個(gè)邏輯回歸,L1正則化和L2正則化的差別就一目了然了:
可以看見,當(dāng)我們選擇L1正則化的時(shí)候,許多特征的參數(shù)都被設(shè)置為了0,這些特征在真正建模的時(shí)候,就不會出
現(xiàn)在我們的模型當(dāng)中了,而L2正則化則是對所有的特征都給出了參數(shù)。
究竟哪個(gè)正則化的效果更好呢?還是都差不多?
可見,至少在我們的乳腺癌數(shù)據(jù)集下,兩種正則化的結(jié)果區(qū)別不大。但隨著C的逐漸變大,正則化的強(qiáng)度越來越
小,模型在訓(xùn)練集和測試集上的表現(xiàn)都呈上升趨勢,直到C=0.8左右,訓(xùn)練集上的表現(xiàn)依然在走高,但模型在未知
數(shù)據(jù)集上的表現(xiàn)開始下跌,這時(shí)候就是出現(xiàn)了過擬合。我們可以認(rèn)為,C設(shè)定為0.9會比較好。在實(shí)際使用時(shí),基本
就默認(rèn)使用l2正則化,如果感覺到模型的效果不好,那就換L1試試看。
2.2 梯度下降:重要參數(shù)max_iter
邏輯回歸的數(shù)學(xué)目的是求解能夠讓模型最優(yōu)化的參數(shù) 的值,即求解能夠讓損失函數(shù)最小化的 的值,而這個(gè)求解過程,對于二元邏輯回歸來說,有多種方法可以選擇,最常見的有梯度下降法(Gradient Descent),坐標(biāo)軸下降法(Coordinate Descent),牛頓法(Newton-Raphson method)等,每種方法都涉及復(fù)雜的數(shù)學(xué)原理,但這些計(jì)算在執(zhí)行的任務(wù)其實(shí)是類似的。
以梯度下降法為例,我們來看看求解過程是如何完成的。下面這個(gè)華麗的平面就是我們的損失函數(shù)在輸入了一組特征矩陣和標(biāo)簽之后在三維立體坐標(biāo)系中的圖像。現(xiàn)在,我們尋求的是損失函數(shù)的最小值,也就是圖像的最低點(diǎn)(看起來像是深藍(lán)色區(qū)域的某處),一旦我們獲取了圖像在最低點(diǎn)的取值 ,在我們的損失函數(shù)公式中,唯一未知的就是我們的參數(shù)向量 了。
現(xiàn)在,我在這個(gè)圖像上隨機(jī)放一個(gè)小球,當(dāng)我松手,這個(gè)小球就會順著這個(gè)華麗的平面滾落,直到滾到深藍(lán)色的區(qū)域——損失函數(shù)的最低點(diǎn)。但是,小球不能夠一次性滾動到最低處,它的能量不足,所以每次最多只能走距離G。
為了嚴(yán)格監(jiān)控這個(gè)小球的行為,我要求小球每次只能走0.05 * G,并且我要記下它每次走動的方向,直到它滾到圖像上的最低點(diǎn)。
總結(jié)
以上是生活随笔為你收集整理的sklearn学习(逻辑回归)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么32位系统支持的最大内存为4G?
- 下一篇: photoshop常出错,归纳一下,头都