線性迴歸(吳恩達機器學習)

weixin_33866037發表於2018-02-12

迴歸是機器學習中最經典的演算法,它的意思就是根據之前的資料找出某種規律(可以是線性,也可以是非線性),構建模型實現預測或分類。

一、線性迴歸

1.線性迴歸

線性迴歸顧名思義,就是找出大量資料在二維平面中呈現的是線性關係。拿房價舉個例子,假如你現在要出售自己的房子,你不大清楚這麼大面積的房子能賣多少錢,於是你找到了所在小區的房價資料(房價、面積),發現大概是呈線性分佈,那麼如果你可以通過這個直線,去計算出自己的房子大概可以賣多少錢

4129254-ea69eeea7f5ec216.png!thumbnail
房價與面積資料

2.工作方式

整個監督學習演算法的工作方式如下圖,還是拿剛才的預測房價舉例,把訓練集資料(房價、房屋面積)餵給演算法,等到演算法學到足夠好之後。我們給他輸入一個x(代表面積),演算法就給我們一個y(預測房價)。因此,h(演算法)是一個從x(輸入資料)到y(輸出資料)的函式對映。


4129254-1895ab6ad34e1ea3.png
監督學習工作方式



二、誤差函式表示

那麼我們如何表達h,現在學習的是線性迴歸,當然可以做出這樣的假設:

4129254-44cb87578359adeb.png!thumbnail
假設演算法模型

那麼我們現在的目的,就是找到這個演算法中合適的引數。怎樣才算合適?當然是演算法擬合出來的結果與真實的結果誤差越小越好,試想一下如果演算法擬合出來的結果與真實值的誤差為零,那簡直完美有木有!所以可以根據“真實值與演算法擬合值的誤差”來表示演算法的“合適程度”!

所以我們假設出這樣的公式:

4129254-82025b0f50b393cb.png!thumbnail
誤差函式

這裡要用到最小二乘的思想去構建平方差函式:

4129254-cd6e6559b0750239.png!thumbnail
全域性性誤差(平方差函式)

這裡的loss,我們定義為“全域性性誤差函式”,它的含義為:

模型預測的準確程度

換句話說,loss的值越小,則代表演算法擬合結果與真實結果越接近;loss的值越大,則表示目前的演算法越不靠譜,反應Loss與“演算法資料”的關係如下圖:

4129254-1e5d3f8d1784b787.png!thumbnail
Loss與演算法資料關係

當我們看到在右邊的loss函式中取深藍色的點,即w=0,對應左面的演算法與真實資料相差最遠。當取粉紅色的即w=0.5時,左邊影象的演算法離真實值更加接近了。而當我們找到Loss的最小值點,即w=1的時候,對應左邊的影象可以說近乎完美地擬合出了真實資料的規律

當你找到了loss的最小值點對應的w,也就找到了我們的目標演算法對應的描述引數。

三、梯度下降

所以問題就變成了,如何找到全域性性誤差函式loss的最小值問題,要用到之前提到的“梯度下降法”

這裡就不再贅述了(之前的文章對梯度下降有過詳解,感興趣的朋友可以出門左轉去看),這裡重點說下梯度下降的思想邏輯

就像剛才提到的,我們的目標現在已經變成了求得loss的最小值點。梯度下降的核心思想就是隨機在loss上取一個點,然後朝著loss下降變化最大的下一個點挪動,通過這樣一步一步挪動的方式,找到函式的最小值

四.線性迴歸“得到”

·所謂迴歸,就是我們從資料中找打演算法(規律),實現對未知資料的預測或分類

·我們可以通過假設的演算法,去描述這個規律

·為了找到合適的演算法,就要構建全域性性損失函式,即真實資料與擬合資料的誤差

·損失函式的值越接近於零,則模型的效果越好

·為了找到這個“最小值”(零點),需要用到梯度下降法

相關文章