機器學(xué)習筆記_01線性回歸和邏輯回歸
[TOC]
一、什么是機器學(xué)習
利用大量的數(shù)據(jù)樣本,使得計算機通過不斷的學(xué)習獲得一個模型,用來對新的未知數(shù)據(jù)做預(yù)測。
- 有監(jiān)督學(xué)習(分類、回歸)
同時將數(shù)據(jù)樣本和標簽輸入給模型,模型學(xué)習到數(shù)據(jù)和標簽的映射關(guān)系,從而對新數(shù)據(jù)進行預(yù)測。

-
無監(jiān)督學(xué)習(聚類)
只有數(shù)據(jù),沒有標簽,模型通過總結(jié)規(guī)律,從數(shù)據(jù)中挖掘出信息。
image.png 強化學(xué)習
強化學(xué)習會在沒有任何標簽的情況下,通過先嘗試做出一些行為得到一個結(jié)果,通過這個結(jié)果是對還是錯的反饋,調(diào)整之前的行為,就這樣不斷的調(diào)整,算法能夠?qū)W習到在什么樣的情況下選擇什么樣的行為可以得到最好的結(jié)果。
就好比你有一只還沒有訓(xùn)練好的小狗,每當它把屋子弄亂后,就減少美味食物的數(shù)量(懲罰),每次表現(xiàn)不錯時,就加倍美味食物的數(shù)量(獎勵),那么小狗最終會學(xué)到一個知識,就是把客廳弄亂是不好的行為。
【David Silve強化學(xué)習課程】:
- 推薦David Silver的Reinforcement Learning Course
- 課件鏈接:https://github.com/enfangzhong/DavidSilverRLPPT
-
機器學(xué)習基本術(shù)語與概念
image.png
二、線性回歸
利用大量的樣本,通過有監(jiān)督的學(xué)習,學(xué)習到由x到y(tǒng)的映射f,利用該映射關(guān)系對未知的數(shù)據(jù)進行預(yù)估,因為y為連續(xù)值,所以是回歸問題。

-
單變量情況
image.png 多變量情況
二維空間的直線,轉(zhuǎn)化為高維空間的平面

2.1 線性回歸的表達式
機器學(xué)習是數(shù)據(jù)驅(qū)動的算法,數(shù)據(jù)驅(qū)動=數(shù)據(jù)+模型,模型就是輸入到輸出的映射關(guān)系。
模型=假設(shè)函數(shù)(不同的學(xué)習方式)+優(yōu)化
1. 假設(shè)函數(shù)
線性回歸的假設(shè)函數(shù)(表示截距項,
,方便矩陣表達):
向量形式(θ,x都是列向量):

2. 優(yōu)化方法
監(jiān)督學(xué)習的優(yōu)化方法=損失函數(shù)+對損失函數(shù)的優(yōu)化
3. 損失函數(shù)
如何衡量已有的參數(shù)的好壞?
利用損失函數(shù)來衡量,損失函數(shù)度量預(yù)測值和標準答案的偏差,不同的參數(shù)有不同的偏差,所以要通過最小化損失函數(shù),也就是最小化偏差來得到最好的參數(shù)。
映射函數(shù):
損失函數(shù):
解釋:因為有m個樣本,所以要平均,分母的2是為了求導(dǎo)方便

最小化損失函數(shù)( loss function):凸函數(shù)
4. 損失函數(shù)的優(yōu)化
損失函數(shù)如右圖所示,是一個凸函數(shù),我們的目標是達到最低點,也就是使得損失函數(shù)最小。

多元情況下容易出現(xiàn)局部極值

求極值的數(shù)學(xué)思想,對公式求導(dǎo)=0即可得到極值,但是工業(yè)上計算量很大,公式很復(fù)雜,所以從計算機的角度來講,求極值是利用梯度下降法。

① 初始位置選取很重要
② 復(fù)梯度方向更新,二維情況下,函數(shù)變換最快的方向是斜率方向,多維情況下就成為梯度,梯度表示函數(shù)值增大的最快的方向,所以要在負梯度方向上進行迭代。
③ θ的更新公式如上圖,每個參數(shù) 都是分別更新的
高維情況:梯度方向就是垂直于登高線的方向

參數(shù)更新示例:

對每個theta都進行更新:

學(xué)習率:
① 學(xué)習率太大,會跳過最低點,可能不收斂
② 學(xué)習率太小收斂速度過慢

5. 過擬合和欠擬合(underfitting vs overfitting)

過擬合的原因:
① 如果我們有很多的特征或模型很復(fù)雜,則假設(shè)函數(shù)曲線可以對訓(xùn)練樣本擬合的非常好,學(xué)習能力太強了,但是喪失了一般性。從而導(dǎo)致對新給的待預(yù)測樣本,預(yù)測效果差.
② 眼見不一定為實,訓(xùn)練樣本中肯定存在噪聲點,如果全都學(xué)習的話肯定會將噪聲也學(xué)習進去。
過擬合造成什么結(jié)果:
過擬合是給參數(shù)的自由空間太大了,可以通過簡單的方式讓參數(shù)變化太快,并未學(xué)習到底層的規(guī)律,模型抖動太大,很不穩(wěn)定,variance變大,對新數(shù)據(jù)沒有泛化能力。
所有的模型都可能存在過擬合的風險:
- 更多的參數(shù),更復(fù)雜的模型,意味著有更強的能力, 但也更可能無法無天
- 眼見不一定為實,你看到的內(nèi)容不一定是全部真實的數(shù)據(jù)分布,死記硬背不太好
6. 利用正則化解決過擬合問題
正則化的作用:
① 控制參數(shù)變化幅度,對變化大的參數(shù)懲罰,不讓模型“無法無天”
② 限制參數(shù)搜索空間
添加正則化的損失函數(shù)
m:樣本有m個
n:n個參數(shù),對n個參數(shù)進行懲罰
λ:對誤差的懲罰程度,λ 越大對誤差的懲罰越大,容易出現(xiàn)過擬合,λ越小,對誤差的懲罰越小,對誤差的容忍度越大,泛化能力好。

7. 線性回歸代碼實例

三、邏輯回歸
監(jiān)督學(xué)習,解決二分類問題。
分類的本質(zhì):在空間中找到一個決策邊界來完成分類的決策
邏輯回歸:線性回歸可以預(yù)測連續(xù)值,但是不能解決分類問題,我們需要根據(jù)預(yù)測的結(jié)果判定其屬于正類還是負類。所以邏輯回歸就是將線性回歸的結(jié)果,通過sigmoid函數(shù)映射到(0,1) 之間。
線性回歸決策函數(shù):
sigmoid函數(shù):

① 可以對結(jié)果,映射到(0,1) 之間,作為概率。
② sigmoid(x)
sigmoid
,可以將
作為決策邊界。
③ 數(shù)學(xué)特性好,求導(dǎo)容易:
邏輯回歸的決策函數(shù)
將線性回歸決策函數(shù)通過sigmoid函數(shù),獲得邏輯回歸的決策函數(shù):

3.1 邏輯回歸的損失函數(shù)
線性回歸的損失函數(shù)為平方損失函數(shù),如果將其用于邏輯回歸的損失函數(shù),則其數(shù)學(xué)特性不好,有很多局部極小值,難以用梯度下降法求最優(yōu)。


邏輯回歸損失函數(shù):對數(shù)損失函數(shù)

解釋:如果一個樣本為正樣本,那么我們希望將其預(yù)測為正樣本的概率p越大越好,也就是決策函數(shù)的值越大越好,則logp越大越好,邏輯回歸的決策函數(shù)值就是樣本為正的概率;
如果一個樣本為負樣本,那么我們希望將其預(yù)測為負樣本的概率越大越好,也就是(1-p)越大越好,即log(1-p)越大越好。
為什么要用log:
樣本集中有很多樣本,要求其概率連乘,概率為(0,1)間的數(shù),連乘越來越小,利用log變換將其變?yōu)檫B加,不會溢出,不會超出計算精度。
邏輯回歸損失函數(shù):


3.2 邏輯回歸實現(xiàn)多分類

一對一(one vs one)
一對一分類,每兩個類之間構(gòu)建一個分類器,共需要個分類器
一對多(one vs rest)
一對多分類器,每個分類器判斷是三角形還是不是三角形,共需要N個分類器。
3.3 邏輯回歸代碼實現(xiàn)





四、LR的特點
可解釋性高,工業(yè)中可控度高。


五、 為什么邏輯回歸比線性回歸好
雖然邏輯回歸能夠用于分類,不過其本質(zhì)還是線性回歸。它僅在線性回歸的基礎(chǔ)上,在特征到結(jié)果的映射中加入了一層sigmoid函數(shù)(非線性)映射,即先把特征線性求和,然后使用sigmoid函數(shù)來預(yù)測。
這主要是由于線性回歸在整個實數(shù)域內(nèi)敏感度一致,而分類范圍,需要在[0,1]之內(nèi)。而邏輯回歸就是一種減小預(yù)測范圍,將預(yù)測值限定為[0,1]間的一種回歸模型,其回歸方程與回歸曲線如下圖所示。邏輯曲線在z=0時,十分敏感,在z>>0或z<<0處,都不敏感,將預(yù)測值限定為(0,1)。
LR在線性回歸的實數(shù)范圍輸出值上施加sigmoid函數(shù)將值收斂到0~1范圍, 其目標函數(shù)也因此從差平方和函數(shù)變?yōu)閷?shù)損失函數(shù), 以提供最優(yōu)化所需導(dǎo)數(shù)(sigmoid函數(shù)是softmax函數(shù)的二元特例, 其導(dǎo)數(shù)均為函數(shù)值的f*(1-f)形式)。請注意, LR往往是解決二元0/1分類問題的, 只是它和線性回歸耦合太緊, 不自覺也冠了個回歸的名字(馬甲無處不在). 若要求多元分類,就要把sigmoid換成大名鼎鼎的softmax了。
首先邏輯回歸和線性回歸首先都是廣義的線性回歸,其次經(jīng)典線性模型的優(yōu)化目標函數(shù)是最小二乘,而邏輯回歸則是似然函數(shù),另外線性回歸在整個實數(shù)域范圍內(nèi)進行預(yù)測,敏感度一致,而分類范圍,需要在[0,1]。邏輯回歸就是一種減小預(yù)測范圍,將預(yù)測值限定為[0,1]間的一種回歸模型,因而對于這類問題來說,邏輯回歸的魯棒性比線性回歸的要好。
邏輯回歸的模型本質(zhì)上是一個線性回歸模型,邏輯回歸都是以線性回歸為理論支持的。但線性回歸模型無法做到sigmoid的非線性形式,sigmoid可以輕松處理0/1分類問題。
六、 LR和SVM的關(guān)系
1、LR和SVM都可以處理分類問題,且一般都用于處理線性二分類問題(在改進的情況下可以處理多分類問題)
2、兩個方法都可以增加不同的正則化項,如l1、l2等等。所以在很多實驗中,兩種算法的結(jié)果是很接近的。
區(qū)別:
1、LR是參數(shù)模型,SVM是非參數(shù)模型。
2、從目標函數(shù)來看,區(qū)別在于邏輯回歸采用的是logistical loss,SVM采用的是hinge loss,這兩個損失函數(shù)的目的都是增加對分類影響較大的數(shù)據(jù)點的權(quán)重,減少與分類關(guān)系較小的數(shù)據(jù)點的權(quán)重。
3、SVM的處理方法是只考慮support vectors,也就是和分類最相關(guān)的少數(shù)點,去學(xué)習分類器。而邏輯回歸通過非線性映射,大大減小了離分類平面較遠的點的權(quán)重,相對提升了與分類最相關(guān)的數(shù)據(jù)點的權(quán)重。
4、邏輯回歸相對來說模型更簡單,好理解,特別是大規(guī)模線性分類時比較方便。而SVM的理解和優(yōu)化相對來說復(fù)雜一些,SVM轉(zhuǎn)化為對偶問題后,分類只需要計算與少數(shù)幾個支持向量的距離,這個在進行復(fù)雜核函數(shù)計算時優(yōu)勢很明顯,能夠大大簡化模型和計算。
5、logic 能做的 svm能做,但可能在準確率上有問題,svm能做的logic有的做不了。
博客中的PPT筆記地址:https://github.com/enfangzhong/ML_Material
(感謝七月在線機器學(xué)習課程。僅供學(xué)習交流,嚴禁用于商業(yè)用途)


