1. 程式人生 > >第5章 線性迴歸(一 理論講解)

第5章 線性迴歸(一 理論講解)

開發IDE:Anaconda 3(python3.6.5)

迴歸是由達爾文(Charles Darwin)的表兄弟Francis Galton發明的。Galton於1877年完成了第一次迴歸預測,目的是根據上一代豌豆種子(雙親)的尺寸來預測下一代豌豆種子(孩子)的尺寸。 Galton在大量物件上應用了迴歸分析,甚至包括人的身高。他注意到,如果雙親的高度比平均高度高,他們的子女也傾向於比平均高度高,但尚不及雙親。孩子的高度向著平均高度回退(迴歸)。 Galton在多項研究上都注意到這個現象,所以儘管這個英文單詞跟數值預測沒有任何關係,但這種研究方法仍被稱作迴歸

那麼什麼是線性迴歸呢?在統計學中,線性迴歸(Linear Regression)是利用稱為線性迴歸方程的最小平方函式對一個或多個自變數和因變數之間關係進行建模的一種迴歸分析

。這種函式是一個或多個稱為迴歸係數的模型引數的線性組合(自變數都是一次方)。只有一個自變數的情況稱為簡單迴歸,大於一個自變數情況的叫做多元迴歸。

我們和以前一樣,還是結合例項來講解吧。就以房價為例吧,這也是大家最熟悉,最關心得。

給定資料集 D={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}D = \lbrace (x^{(1)}, y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m) } ,y^{(m)}) \rbrace,其中x(i)={x1(

i),x2(i),...,xn(i)}x^{(i)} = \lbrace x_1^{(i)},x_2^{(i)},...,x_n^{(i)} \rbrace ,共有mm個樣本,每個樣本含有nn個特徵。

現在我們有關於重慶洪崖洞附近房價的一些資料,D={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}D = \lbrace (x^{(1)}, y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m) } ,y^{(m)}) \rbrace

y(2)),...,(x(m),y(m))} ,其中x(i)x^{(i)}只含有一個特徵,表示房子的面積, i=1,2,...,mi=1,2,...,m表示是第ii 個訓練樣本, y(i)y^{(i)}是數值,表示房子的價格。我們將該數值繪製成下圖。

在這裡插入圖片描述

圖1

通過觀察我們大致可以看出,房子的面積 與房子的價格 具有一定的線性關係,也就是說,我們可以畫出能夠大致表示 與 關係的一條直線,如下圖:

在這裡插入圖片描述

圖2

在該直線中,房子的面積為x(i)x^{(i)}自變數,房子的價格y^(i)\hat{y}^{(i)}因變數。而“線性迴歸”的目的就是,利用自變數 x(i)x^{(i)}與因變數y^(i)\hat{y}^{(i)} ,來學習出這麼一條能夠描述兩者之間關係的線。對於一元線性迴歸來說就是學習出一條直線,而對於多元線性迴歸來說則是學習出一個面或超平面。

對於上述的例子,我們可以得到一個函式關係,y=mx+cy=mx+c 。為了解決一般問題,我們就需要將線性迴歸的問題進行一般化、抽象化,轉換成我們能夠求解的數學問題。

5.1一元線性模型

在上面的例子中,我們可以看出自變數x(i)x^{(i)}**與因變數y^(i)\hat{y}^{(i)}大致成線性關係,因此我們可以對因變數做如下假設(hypothesis): y^(i)=θ1x(i)+θ0\hat{y}^{(i)}= \theta_1 x^{(i)} + \theta_0 或者 hθ(x(i))=θ1x(i)+θ0h_{\theta}(x^{(i)}) = \theta_1 x^{(i)} + \theta_0

其中i=1,2,...,mi=1,2,...,m在這裡使用y^(i)\hat{y}^{(i)}是由於通過觀察,我們可以發現直線並沒有完全擬合數據,而是存在一定的誤差。該假設即為一元線性函式的模型函式,其中含有兩個引數θ0\theta_0θ1\theta_1 。其中 θ1\theta_1可視為斜率, θ0\theta_0為則直線在yy 軸上的截距。接下來的任務就是如何求得這兩個未知引數。

5.1.1損失函式

模型建立好了,那麼怎樣的模型才是適合資料集放入呢?衡量一個模型和與資料點之間的接近程度,我們使用平方差來衡量。對於x(i)x^{(i)} 其對應的直線上的值為y^(i)\hat{y}^{(i)},但所給的資料集中 x(i)x^{(i)}對應的值為y(i)y^{(i)} 。而預測值y^(i)\hat{y}^{(i)}與實際值y(i)y^{(i)}存在誤差(或者也叫做殘差(residual),在機器學習中也被稱為代價(cost))。我們可以認為,預測值與實際值的誤差越小越好

在這裡我們使用均方誤差(Mean Squared Error)來描述所需要求解的目標函式(Objective function)或代價函式(Loss function):

J(θ0,θ1)=12mi=1m(y^(i)y(i))2=12mi=1m(hθ(x(i))y(i))2\color{red}J(\theta_0,\theta_1) = \frac{1}{2m} \sum_{i=1}^m(\hat{y}^{(i)}-y^{(i)}) ^2 = \frac{1}{2m} \sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2

其中 i=1,2,...,mi=1,2,...,m目標函式J(θ0,θ1)J(\theta_0,\theta_1)描述了所有訓練樣本實際值與預測值之間的均方誤差,而我們的目的就是求解能夠使得該誤差J(θ0,θ1)J(\theta_0,\theta_1)值最小的引數θ0,θ1\theta_0,\theta_1 。可將其表示為: minθ0,θ1J(θ0,θ1)min_{\theta0,\theta1} J(\theta_0,\theta_1)

在確定了代價函式以及所需要求解的目標(θ0,θ1)(\theta_0,\theta_1)以及條件minJ(θ0,θ1)minJ(\theta_0,\theta_1)