TensorFlow學習(2)——線性迴歸、訓練和損失
線性迴歸
很多數學不是太好的同學一聽到線性迴歸這麼高階的名詞往往望而卻步,很多東西只要深入學習並沒有看起來那麼可怕。
那麼何為線性迴歸呢?其實就是我們初中學到的直線方程,還記得不?記不起來也不要緊,瞄一眼下圖你必能喚回當年那痛苦的記憶!哈哈
沒想到吧,當年最討厭數學的我,以為買菜用不到那麼多數學知識,現在居然用到了。那麼這麼一條直線方程跟我們機器學習有什麼關係呢?
假設我們要分析蟋蟀的鳴叫聲與溫度的關係,經過晝夜不停的記錄,我們製作了下圖:
注意觀察紅點的分佈,並做一條線,看起來特別像一條直線方程有木有?雖然不是那麼完美。
我們把這種分佈叫做線性迴歸,那麼也就是說直線方程現在有了一個更吊的名字叫線性迴歸。
既然分佈沒有那麼完美,那麼我們也應該做出一個不怎麼完美的線性迴歸方程:
上面的方程只考慮了一個特徵值“溫度”,如果還有別的特徵值呢?比如白天/黑夜、雨天/晴天等,那麼該方程又可以繼續引入其他變數:
表示什麼呢?其實不難,就是表示權重百分比,表示該特徵值得重要程度。比如晴天和雨天這個因素對於蟋蟀鳴叫的影響大不?大的話就把值設定大一點,小的話就設定小一點。
其實上面的方程還可以變得更吊一點,那就是用一個更簡練的符號來表示:
有同學可能會問,b 去哪裡了?讓學弟告訴你吧,其實 b 相當於 x=0 ,這樣是為什麼 i 的下標會從0開始的原因。
上面的式子雖然看起來更簡練了,但是對於我等數學小白來說就變得更加難以理解了,不過數學家喜歡這樣,我們要從善如流啊!
訓練
首先為什麼要訓練?仔細觀察這個方程 你會發現在我們的訓練資料中,,但是和 b 卻是未知的,所以我們訓練的目的就是為了確定和 b 的值。
損失
那什麼是損失呢?觀察下圖:
如上圖所示,所謂的損失就是預測值與真實值之間的差距,上圖中紅色箭頭表示損失。
那麼如何測量損失的大小呢?這裡有兩個方法:
平方損失
所謂的平方損失就是用每個樣本的真實值減去預測值再平方,即:
例如當每分鐘蟲鳴聲為126下的時候我們預測溫度為26度,但是實際情況是當時的溫度為30度,所以平方損失為:
均方誤差 (MSE)
那什麼又是均方誤差呢?就是各個樣本的所有平方損失之和,然後除以樣本數量:
其中 prediction(x) 就是平方損失裡的
////////////////////////////////////////////////////懵逼分割線/////////////////////////////////////////////////////////
歡迎大家加入Q群討論:463255841
////////////////////////////////////////////////////懵逼分割線/////////////////////////////////////////////////////////