線性回歸是最基礎(chǔ)和常見的算法页衙,屬于監(jiān)督學(xué)習(xí)的一種,是講述算法開始的地方同辣。我們在中學(xué)拷姿、大學(xué)學(xué)過很多次惭载,雖然我已完全不記得。線性回歸作為基礎(chǔ)响巢,雖然simple但不意味著easy描滔,對其掌握很重要的。
雖然看上去平平無奇踪古,不過其內(nèi)涵之豐富讓人驚嘆含长,很多復(fù)雜的算法中都能看到線性回歸的影子,可以自然的過渡到邏輯回歸伏穆、多層感知機(jī)拘泞、再到深度學(xué)習(xí)等復(fù)雜的方法得封。
本篇主要結(jié)構(gòu)如下:
快照snapshot:sklearn實例
最小二乘法
快照snapshot
首先看看我們要解決的問題髓霞。來自kaggle的house price數(shù)據(jù)集汪榔,有1460個樣本的訓(xùn)練集眼坏,我們節(jié)選兩列作為例子项秉。
給定n個實例溃卡,每個實例含有m個特征和1個目標(biāo)變量沮焕。目標(biāo)變量為連續(xù)值時对室,意味著采用回歸的方法参滴;目標(biāo)變量為離散值時强岸,則采用分類的方法。這里的例子中砾赔,GrLivArea和LotArea兩列是已知的特征蝌箍,SalePrice列則是目標(biāo)變量。目標(biāo)變量與兩個特征的關(guān)系如下圖暴心,可見特征與目標(biāo)間基本符合“線性”的假設(shè)妓盲。
線性回歸假設(shè)每個特征和目標(biāo)變量的關(guān)系為線性關(guān)系,目標(biāo)可用各個特征的加權(quán)求和求得专普。用如下公式表達(dá):
其中本橙,x是一個實例,含有m個特征故形狀為(1脆诉,m)甚亭;y是因變量;w是每個特征對應(yīng)的權(quán)重击胜,形狀為(m,1)亏狰;b是偏差,形狀為1偶摔。
我們可以把n個實例的公式暇唾,寫成矩陣形式:
其中,X變?yōu)閚個實例的集合,是一個(n策州,m)形狀的矩陣瘸味。Y為n個實例的目標(biāo),是形狀為(n够挂,1)的矩陣旁仿。
線性回歸的求解過程是,已知X和Y孽糖,設(shè)置一個目標(biāo)枯冈,求解最優(yōu)目標(biāo)時的對應(yīng)的w和b。這里的目標(biāo)既是:損失函數(shù)取最小值办悟。這樣問題轉(zhuǎn)化為一個數(shù)學(xué)優(yōu)化問題來求解尘奏,主要求解方法有基于誤差的最小二乘法,和基于頻率派觀點的最大似然法病蛉,基于貝葉斯派觀點的最大后驗法炫加。
為了了解基本過程,我們先在sklearn里實現(xiàn)一下铺然。
# load the data
我們得到了兩個特征對應(yīng)的權(quán)重是4.89e-04和2.83-06琢感,對應(yīng)的截距b是11.25。這意味著
SalePrice=4.89e-4* GrLivArea + 2.83e-6* LotArea + 11.25
這樣探熔,我們就實現(xiàn)了一個線性回歸的過程,知道了它大概的含義烘挫。當(dāng)然诀艰,就算在excel里,也很容易的做出擬合來饮六。
最小二乘法
最小二乘法其垄,看著也是平平無奇,但他的發(fā)明者卻是真大佬:高斯和勒讓德卤橄。勒讓德在1805年的著作《計算慧星軌道的新方法》中首先發(fā)表最小二乘法绿满。高斯在4年后也發(fā)表了最小二乘法,并宣稱已用了很多年了窟扑,而且還用它精確預(yù)測了谷神星的位置喇颁。如果是別人這么說,可能是沽名釣譽(yù)嚎货,但如果是高斯這么說橘霎,我是相信的≈呈簦看來姐叁,最小二乘法也是響當(dāng)當(dāng)?shù)母叨酥R。
最小二乘法的理念是承認(rèn)觀測誤差的存在,認(rèn)為誤差是圍繞真值上下波動的外潜,當(dāng)平方誤差最小時即為真值原环。具體應(yīng)用時,算法的關(guān)鍵是要學(xué)習(xí)到線性方程中中的未知權(quán)重w和b处窥,當(dāng)經(jīng)驗風(fēng)險最小化時的權(quán)重認(rèn)為是最優(yōu)的嘱吗。為了簡化,我們經(jīng)常在推導(dǎo)中忽略b碧库,因為b可以認(rèn)為存在一個常數(shù)列x=1對應(yīng)的權(quán)重w的一個分量柜与,不必單獨(dú)另求。
<embed src="https://mmbiz.qlogo.cn/mmbiz_svg/O1dAhMERUwV9wQrMHTmps5RiajptXABo99NricmEpNhl4NbkKAnOvibPBs7FEpQaufs8T9Wh8dOuWLR9XtYbibS7ydNlS5EpRTicU/0?wx_fmt=svg" data-type="svg+xml" style="margin: 0px; padding: 0px; max-width: 300%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: -2.488ex; width: 24.528ex; height: auto;">
m個實例的經(jīng)驗數(shù)據(jù)嵌灰,其經(jīng)驗損失函數(shù)為:
<embed src="https://mmbiz.qlogo.cn/mmbiz_svg/O1dAhMERUwV9wQrMHTmps5RiajptXABo93dia1N4lhLfUYvVH3rCbC18ibUZ2HKxXCTibz0ia4VibykmqmSWDsNsZJvlo6ZGgpLAmB/0?wx_fmt=svg" data-type="svg+xml" style="margin: 0px; padding: 0px; max-width: 300%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: -2.819ex; width: 26.007ex; height: auto;"><embed src="https://mmbiz.qlogo.cn/mmbiz_svg/O1dAhMERUwV9wQrMHTmps5RiajptXABo9JduR0yZnjWz4VWrCsv1Rq1zA25TmOBFNVjAdkoNOLyXRyicfviaGuwCEe9soNjz7wC/0?wx_fmt=svg" data-type="svg+xml" style="margin: 0px; padding: 0px; max-width: 300%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: -1.577ex; width: 34.579ex; height: auto;"><embed src="https://mmbiz.qlogo.cn/mmbiz_svg/O1dAhMERUwV9wQrMHTmps5RiajptXABo9nRUwraXB4jGAiaqMibaScGPZSbEGm5S3iajsoFhOO5A75foebtpXCcuHSy35sql4Mkb/0?wx_fmt=svg" data-type="svg+xml" style="margin: 0px; padding: 0px; max-width: 300%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: -1.577ex; width: 50.489ex; height: auto;">
雖然預(yù)測的時候我們是帶入x弄匕,求解y,是關(guān)于特征x的函數(shù)沽瞭。但訓(xùn)練的時候迁匠,我們把損失函數(shù)Loss看成是關(guān)于w的函數(shù),把問題轉(zhuǎn)化為求關(guān)于w的最優(yōu)化問題驹溃。即Loss取最小值時城丧,認(rèn)為w和b是最佳值。最小值問題當(dāng)然可以用微積分豌鹤,導(dǎo)數(shù)為0時取得的值為極值亡哄,如果是凸函數(shù),此時的極值為最小值布疙。L對w的導(dǎo)數(shù)為:
<embed src="https://mmbiz.qlogo.cn/mmbiz_svg/O1dAhMERUwV9wQrMHTmps5RiajptXABo9IMUnlg89xb9rWCFcNIQibtZBmliasCgGTQ1pLfgbTlZvFtt3gWZdzLyX5qI2TYZuCm/0?wx_fmt=svg" data-type="svg+xml" style="margin: 0px; padding: 0px; max-width: 300%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: -1.602ex; width: 26.595ex; height: auto;">
其中蚊惯,矩陣求導(dǎo)過程中用到的幾個規(guī)律:
可求得w的解析解為:
這里需要存在逆矩陣的情況下才存在解析解,即需要其是一個滿秩矩陣灵临。如果是奇異矩陣截型,如特征的個數(shù)超過樣本的個數(shù)或一些特征本身是線性相關(guān)的,則無法得到其解析解儒溉。
# 解析
梯度下降
矩陣求逆的運(yùn)算量較大宦焦,且數(shù)據(jù)量較大甚至無法放進(jìn)內(nèi)存時,我們就需要一種高效數(shù)值解法:連深度學(xué)習(xí)都說好的梯度下降法顿涣。數(shù)值解法通過不斷的迭代波闹,以時間換空間,逐步求的最優(yōu)解涛碑。
直觀理解就是舔痪,在曲面上的一點,其變化最大的方向锌唾、最陡的方向是沿著梯度的方向锄码。我們把loss看作一個w的函數(shù)夺英,為了讓loss不斷減小,移動w的方向就是沿著其梯度的方向滋捶。
這里的 就是調(diào)參中最重要參數(shù)了學(xué)習(xí)率痛悯。每一步都沿著梯度負(fù)方向前進(jìn)一點。梯度下降可以求得全局最優(yōu)解的條件是凸優(yōu)化重窟。
批量梯度下降
批量梯度下降則是為了應(yīng)對更大量數(shù)據(jù)的载萌,總共有n個樣本⊙采龋可以一次進(jìn)去一小批扭仁,更新一下參數(shù),再進(jìn)去更新一小批厅翔,更新一下參數(shù)乖坠。這里n個樣本循環(huán)輪數(shù)稱為epochs,每次進(jìn)去的一下批的個數(shù)為batch_size刀闷,所以權(quán)重w一共更新的次數(shù)為 n/batch_size*epochs熊泵,稱為總的步數(shù)steps。
如果每次只進(jìn)去一個樣本進(jìn)行更新權(quán)重甸昏,則稱為隨機(jī)梯度下降顽分,此時batch_size大小為1。
這些參數(shù)即使到了深度學(xué)習(xí)也是需要了解的基本概念施蜜,因此這里介紹了一下卒蘸。而從梯度下降對調(diào)參的重要啟示是:初始化很重要,學(xué)習(xí)率很重要翻默,梯度下降決定了各個特征需要norm標(biāo)準(zhǔn)化缸沃。
通過最小二乘法,我們看到求解一個算法的基本步驟冰蘑。那就是定義一個損失函數(shù)/目標(biāo)函數(shù),一般的目標(biāo)函數(shù)都是為了讓模型的預(yù)測盡量貼近數(shù)據(jù)中已有的標(biāo)簽村缸。然后采用優(yōu)化方法祠肥,不斷調(diào)整模型重的參數(shù),使目標(biāo)函數(shù)取得最小值梯皿,此時的模型參數(shù)即為我們找到的模型仇箱。這個過程,就可以稱之為“學(xué)習(xí)”东羹。
我是YueTan剂桥,歡迎關(guān)注。
下篇預(yù)告: 機(jī)器學(xué)習(xí)- 線性回歸II從零開始實現(xiàn)
參考資料:
機(jī)器學(xué)習(xí)
PRML
ESL