1、引言
今天,我們將深入探討機器學習中的三個關鍵概念:線性回歸、代價函數和梯度下降。這些概念構成了許多機器學習算法的基礎。起初,我決定不寫一篇關于這些主題的文章,因為它們已經被廣泛涉及。不過,我改變了主意,因為理解這些概念對于理解神經網絡等更高級的主題至關重要。
閑話少說,我們直接開始吧!
2、問題引入
與任何機器學習問題一樣,我們首先要回答一個具體的問題。在本例中,我們的朋友馬克正在考慮出售他 2400 平方英尺的房子,并向我們尋求幫助,以確定最合適的掛牌價格。
憑直覺,我們首先要查找朋友所在社區的同類房屋。經過一番挖掘,我們找到了附近三棟房子的清單,并查看了它們的售價。當然,一個典型的數據集會有數千甚至數萬個數據點,但我們只用這三棟房子就夠了。
接著,讓我們來繪制這些數據:
通過觀察數據,房屋價格似乎與房屋面積呈線性關系。為了模擬這種關系,我們可以使用一種稱為線性回歸的機器學習技術。這需要在散點圖上畫出一條最能代表數據點模式的線。我們的模型可能是這樣的:
根據這條線,2400 平方英尺的房子應該賣多少錢?
大概$260,000。這就是答案。
現在最大的問題是:我們如何確定數據的最佳擬合線?
3、 確認最佳擬合方程
經過上述分析,我們的問題轉化為如何確定數據的最佳擬合線?我畫的線可能有點偏,就像這樣:
我們可以清楚地知道,這種情況下對數據的擬合程度遠不如第一種情形。要找出最佳的擬合線,我們首先要做的就是用數學方法來衡量一條糟糕的線。
讓我們來看看這條 "相對糟糕 "的擬合線,根據這條線,一棟 2000 平方英尺的房子應該賣 14 萬美元,而我們知道它實際上賣了 30 萬美元:
線上其他數值也有明顯差異:
平均而言,這條線的上預測差額約為 94,000 美元(50,000 美元 + 160,000 美元 + 72,000 美元/3)。
事實上,我們有預測差額更小的預測線,如下:
這條線路的平均預測差額約為 44 000
美元,這要好得多。這 4.4
萬美元被稱為使用這條線的cost
。cost
就是用來衡量這條線與真實數據的偏差程度。與真實數據偏差最小或cost
最低的預測線就是最佳選擇。要找出哪條線是最佳線,我們需要使用損失cost
函數。
4、損失函數
以上章節我們利用平均絕對誤差 (MAE) 代價函數來確定實際房價與預測房價的偏差。這基本上是計算實際房價(用 y 表示,因為它代表 y 軸上的值)與預測房價(用 ? 表示)偏離程度的平均值。我們可以這樣用以下數學公式來計算 MAE:
注:在計算 MAE 時使用絕對值,因為絕對值可確保預測值與實際值之間的差值始終為正值,無論預測值是高還是低。這樣就可以公平地比較不同預測值之間的誤差,因為如果不采用絕對值,正負差值就會抵消。
根據不同機器學習算法,我們可以采用不同類型的成本代價函數,也叫損失函數。對于我們的問題,我們將不使用 MAE,而是采用一種更加常用的方法,即平均平方誤差 (MSE),它計算的是預測房價與實際房價之差的平方平均數。
歸根結底,任何代價函數的目的都是使其取值最小化,并盡可能降低損失。
5、 直線方程
在深入研究損失函數之前,讓我們先回顧一下基礎知識。下面是一條直線的示例:
y = 1 + 2x
,第一項數字稱為截距,它告訴我們起始線應該有多高。
第二項告訴我們直線的角度(或專業術語,斜率):
既然我們已經理解了直線方程的工作原理,那么我們只需要確定這兩個值的最佳值–斜率和截距,就可以得到線性回歸問題的最佳擬合線。為了讓事情變得更簡單,讓我們假設我們已經神奇地得到了斜率值 0.069。因此,我們的線性回歸線方程如下:
要獲得某一面積房屋的預測價格,我們只需輸入截距值和所需房屋面積。例如,如果房屋面積為 1000 平方英尺,截距為 0時,如下:
得出預測房價為 69,000 美元。因此,我們現在要做的就是找到截距的最佳值,從而得到線性回歸模型。
6、求解截距
如何來求解截距呢?有一種方法(我們很快就會發現這種方法非常乏味,而且并不有趣)是"暴力枚舉",即反復猜測截距值,畫一條 LR 線,然后計算 MSE。為了實驗起見,讓我們嘗試一下這種方法。
首先隨機猜測一個截距值(從 0 開始),然后繪制直線:
然后我們計算這條線的 MSE:
為了獲得直觀的理解,讓我們在圖表上繪制截距值和相應的 MSE:
接下來,我們將測試另一個截距值(比如 25),繪制相應的直線,并計算 MSE。
我們可以用不同的截距值(0、25、50、75、100、125、150 和 175)繼續這一過程,直到最后得到如下圖形:
從圖中繪制的點可以看出,當截距設置為 100 時,MSE 最低。不過,在 75 和 100 之間可能還有另一個截距值,會導致更低的 MSE。尋找最小 MSE 的一種緩慢而痛苦的方法是,如下圖所示,為截距設置更多的值:
盡管我們做出了努力,但仍無法確定我們已經找到了最低的 MSE 值。測試多個截距值的過程既繁瑣又低效。幸運的是,梯度下降可以幫助我們解決這個問題,以更高效的方式找到最優解。這正是我們將在本系列第二部分中探討的問題!