1 原理
1.1 引入
線性回歸是最為常用的一種數(shù)據(jù)分析手段,通常我們拿到一組數(shù)據(jù)后,都會(huì)先看一看數(shù)據(jù)中各特征之間是否存在明顯的線性關(guān)系。例如,現(xiàn)在我們拿到了一組學(xué)校中所有學(xué)生基本資料的數(shù)據(jù),該數(shù)據(jù)以二維表格的形式呈現(xiàn),如下表所示。
示例數(shù)據(jù)表
每行代表一個(gè)學(xué)生,每列代表該學(xué)生的一個(gè)屬性(或稱為特征),那么如果我們對(duì)特征進(jìn)行仔細(xì)觀察,不難發(fā)現(xiàn)身高和年齡總是呈現(xiàn)正相關(guān)關(guān)系,數(shù)學(xué)成績與物理成績也基本呈現(xiàn)正相關(guān)關(guān)系。那么我們是否可以給這樣的兩個(gè)特征之間擬合出一條近似的直線來表達(dá)他們之間的線性函數(shù)關(guān)系呢?這里我們的想法其實(shí)就是機(jī)器學(xué)習(xí)的世界觀:數(shù)據(jù)驅(qū)動(dòng)構(gòu)建模型。
1.2 模型
只不過這里的模型非常簡單,只是線性模型,也就是一條直線方程,通長我們可以表達(dá)成如下公式:
這里,數(shù)據(jù)中我們將某一特征列作為自變量 x (例如身高),因變量 y (如體重)也就是我們想要預(yù)測的值, x 和 y 都已知,現(xiàn)在的任務(wù)就是:加入新增了一個(gè) x ,而其對(duì)應(yīng)的 y 未知,那么我們?cè)撊绾晤A(yù)測出一個(gè) 它?顯然,我們需要構(gòu)建 y 與 x 之間的函數(shù)關(guān)系:對(duì)于身高體重這樣的簡單問題而言,就可以直接使用上述的線性方程作為我們想要擬合的模型。
接下來的問題就是,如何擬合這個(gè)模型,也就是說,如何求得線性模型中的兩個(gè)參數(shù) w 和 b?
1.3 損失函數(shù)
要求解最佳的參數(shù),首先我們需要讓計(jì)算機(jī)知道一個(gè)目標(biāo),畢竟解決任何問題都需要確立一個(gè)明確的目標(biāo)才行,對(duì)于計(jì)算機(jī)這樣的數(shù)字世界,我們就需要給它確定一個(gè)定量化的目標(biāo)函數(shù)式,在優(yōu)化問題中,我們通常稱之為目標(biāo)函數(shù),或者損失函數(shù)(Loss function)。無論我們選擇什么樣的模型,最終都是可以得到一組預(yù)測值 ,對(duì)比已有的真實(shí)值 y ,數(shù)據(jù)行數(shù)為 n ,我們很自然地可以將損失函數(shù)定義如下:
即預(yù)測值與真實(shí)值之間的平均的平方距離,統(tǒng)計(jì)中我們一般稱其為MAE(mean square error)均方誤差。把之前我們確定的 帶入損失函數(shù):
注意,對(duì)于損失函數(shù) L 而言,其自變量不再是我們習(xí)慣中的 x(其實(shí) x 和 y 都是在訓(xùn)練數(shù)據(jù)中的已知值),損失函數(shù) L 的自變量應(yīng)該是我們要求解的參數(shù) w 和 b,因此我們可以把損失函數(shù)重新記為:
現(xiàn)在,我們的任務(wù)就是希望把這個(gè)損失函數(shù)交給計(jì)算機(jī),然后跟計(jì)算機(jī)說,幫我把這個(gè)函數(shù)最小化,然后告訴我 L 最小時(shí)的一組 w 和 b 是多少就行了。但是顯然計(jì)算機(jī)還沒那么聰明,它并不知道怎么算,我們還是要靠自己解決。
核心的優(yōu)化目標(biāo)式:
這里有兩種方式:
一種是“最小二乘法”(least square method),可直接求解;
另一種是梯度下降(gradient descent),有關(guān)梯度下降的方法原理可參考我之前這篇文章 -》 [link]。
1.4 最小二乘法
求解 和 是使損失函數(shù)最小化的過程,在統(tǒng)計(jì)中,稱為線性回歸模型的最小二乘“參數(shù)估計(jì)”(parameter estimation)。我們可以將 L 分別對(duì) w 和 b 求導(dǎo),得到:
令上述兩式為0,可得到 w 和 b 最優(yōu)解的閉式(closed-form)解:
1.5 梯度下降法求解
2 代碼實(shí)現(xiàn) (使用梯度下降法)
首先建立 liner_regression.py 文件,用于實(shí)現(xiàn)線性回歸的類文件,包含了線性回歸內(nèi)部的核心函數(shù)。
建立 train.py 文件,用于生成模擬數(shù)據(jù),并調(diào)用 liner_regression.py 中的類,完成線性回歸任務(wù)。
顯示結(jié)果:
原始數(shù)據(jù)x, y和擬合的直線方程
利用梯度下降法優(yōu)化過程中損失函數(shù)的下降情況
-
線性回歸
+關(guān)注
關(guān)注
0文章
41瀏覽量
4300
原文標(biāo)題:線性回歸(Liner Regression) —— 蘊(yùn)含機(jī)器學(xué)習(xí)基本思想的入門級(jí)模型
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論