線性迴歸是利用數理統計中的迴歸分析,來肯定兩種或兩種以上變量間相互依賴的定量關係的一種統計分析方法,在機器學習中屬於監督學習。在數據分析等領域應用十分普遍。算法
不少狀況下咱們都用它進行預測,好比預測房屋價格。在這裏用一個簡單的例子來講明,假設有一組房屋數據,爲了理解方便,假設決訂價格的只有房屋到市中心的距離:機器學習
Distance(km)函數 |
Price(¥/m2)學習 |
5spa |
1000003d |
10blog |
80000圖片 |
15ci |
60000數據分析 |
25 |
50000 |
30 |
30000 |
從上面自擬的數據能夠看到,距離越小价格就會越大。那麼問題來了,假如你有一套房,距離市中心大約有8km,你想要知道大概能賣多少錢?這個時候線性迴歸就起做用了。
將數據大概地繪製成以下的圖,因而可知這套房大體上能賣92000¥
這就是線性迴歸,它能夠用來預測值。在現實中,決定性的因素絕對不止一個,數據每每是多維的,那就會變得有些複雜了,這時候就須要經過算法來實現了。在學習算法以前,能夠先過一下有關的數學知識。
一、導數
導數這個概念在高中的時候就接觸了,它的幾何意義爲函數y=f(x)在某一點處沿x軸正方向的變化率,通俗地講,表明函數的斜率。
二、偏導數
偏導數的概念其實跟導數差很少,區別就在於偏導數通常是對於多元函數而言,y=f(x1,x2,…,xn)在某一點處沿某一座標軸(x1,x2,…,xn)正方向的變化率。也就是說,函數對x1的偏導即爲函數在x1方向上的變化率。
三、方向導數
方向導數是創建偏導數的基礎上的一個數學定義,偏導是指在正方向的變化率,而方向導數是指在其餘特定方向上的變化率。以二元函數爲例,假設已知x,y方向上的偏導,那麼方向導數就能夠是圖中藍色箭頭方向上的數值(不要被圖片迷惑了,它能夠是其餘任意方向上的數值,並且它是個標量)。
四、梯度
梯度是一個向量,即有方向有大小,它的方向是最大方向導數的方向,它的值是最大方向導數的值。就跟介紹方向導數的圖那樣,藍色的矢量,表明的就是梯度。
在線性迴歸中,迴歸方程爲:,經過這個方程獲得的預測值每每與真實值y之間會存在偏差。令偏差爲,則預測值與真實值之間的關係就能夠表示爲,咱們但願求出來的使得偏差最小。所以,咱們假設服從均值爲0,方差爲的正態分佈,根據正態分佈的機率密度函數可得,其中==。
爲了使得偏差儘量的小,根據上式,咱們能夠令,這個公式表示求使得預測值更接近於真實值的值的機率,所以咱們但願它的值越大越好。接下來進行最大似然估計:,相比於累加,這個公式累乘計算的難度會更大,因此不妨把它轉換成對數形式,以下圖所示:
最後獲得: ,在這個式子中,起關鍵做用的式子是,咱們稱它爲代價函數(Cost Function)。咱們但願代價函數越小越好,所以咱們須要求它的極小值,或者說局部最小值。假如只有一個,那麼這個代價函數的圖像能夠這樣表示:
能夠看到,當曲線的斜率爲0,即函數的導數值爲0時,函數值最小。這只是對於一元函數而言,可事實上咱們的數據是不少維度的,所以咱們就須要經過梯度來獲得咱們須要的值。因而,梯度降低算法就出現了。
梯度降低算法是這樣的:
repeat until convergence {
;
}
其中,稱爲速率因子,表示梯度降低的速度。對於這個算法,通俗點說,假設初始的時候某個點在曲面(曲線)上,它找到相對比較「陡峭」的方向,沿着這個方向「下坡」,直到最低點爲止。在這裏須要注意的一點是,的值不宜過小也不宜太大,過小會使得「下坡」的次數不少,影響效率;太大的話可能會錯過最低點。一般咱們能夠經過斜率的值改變的值。