作者:Adarsh Menon
在這個(gè)教程中,你可以了解梯度下降算法將如何工作,并在python中從頭開始實(shí)現(xiàn)。首先我們看一下線性回歸是什么,然后定義損失函數(shù)。我們學(xué)習(xí)了梯度下降算法的工作原理,最后我們將在給定的數(shù)據(jù)集上實(shí)現(xiàn)它,并進(jìn)行預(yù)測(cè)。
在每次迭代時(shí)更新m和c的值以獲得最優(yōu)解
線性回歸
在統(tǒng)計(jì)學(xué)中,線性回歸是一種線性方法,用于對(duì)因變量與一個(gè)或多個(gè)自變量之間的關(guān)系進(jìn)行建模。設(shè)X為自變量,Y為因變量。我們將在這兩個(gè)變量之間定義一個(gè)線性關(guān)系,如下所示:
這是你在高中學(xué)習(xí)的線性方程。m是直線的斜率,c是y截距。如今我們將使用這個(gè)方程用給定的數(shù)據(jù)集訓(xùn)練我們的模型,并預(yù)測(cè)任何給定X值的Y值。我們今天的挑戰(zhàn)是確定m和c的值,使得對(duì)應(yīng)于這些值的線是最佳擬合直線或給出最小誤差。
損失函數(shù)
損失是我們預(yù)測(cè)的m和c值的誤差。我們的目標(biāo)是最小化這個(gè)誤差,以獲得最準(zhǔn)確的m和c值。
我們將使用均方誤差函數(shù)來計(jì)算損失。這個(gè)函數(shù)有三個(gè)步驟:
均方誤差方程
這是yi實(shí)際值,? i是預(yù)測(cè)值。讓我們替換? i的值:
替換 ? i的值
所以我們將誤差平方并找出均值。因此,名稱均方誤差?,F(xiàn)在我們已經(jīng)定義了損失函數(shù),讓我們進(jìn)入有趣的部分 - 最小化它,并找到m和c。
梯度下降算法
梯度下降是尋找函數(shù)最小值的迭代優(yōu)化算法。這里的函數(shù)是我們的損失函數(shù)。
了解梯度下降
說明梯度下降算法的工作原理
想象一個(gè)山谷和一個(gè)沒有方向感的人想要到達(dá)山谷的底部。當(dāng)斜坡陡峭時(shí),他沿著斜坡走下坡時(shí),步幅較大,當(dāng)斜坡不那么陡峭時(shí),步幅較小。他根據(jù)自己目前的位置決定下一個(gè)位置,并在他到達(dá)山谷底部時(shí)停下來,這是他的目標(biāo)。
讓我們嘗試將梯度下降算法應(yīng)用于m和c,并逐步逼近它:
1.最初讓m = 0和c = 0。設(shè)L是我們的學(xué)習(xí)率。這可以控制m值隨每一步的變化程度。 L可以是0.0001的這樣小的數(shù)值,以獲得良好的準(zhǔn)確性。
2.計(jì)算損失函數(shù)相對(duì)于m的偏導(dǎo)數(shù),并插入其中x,y,m和c的當(dāng)前值,得到導(dǎo)數(shù)值D。
關(guān)于m的導(dǎo)數(shù)
Dc 是相對(duì)于m的偏導(dǎo)數(shù)的值。類似地,我們找到關(guān)于c,Dc的偏導(dǎo)數(shù):
關(guān)于c的導(dǎo)數(shù)
3.現(xiàn)在我們使用以下等式更新m和c的當(dāng)前值:
4.我們重復(fù)這個(gè)過程,直到我們的損失函數(shù)是一個(gè)非常小的值或理想情況下為0(這意味著0誤差或100%準(zhǔn)確度)。我們現(xiàn)在剩下的m和c的值將是最佳值。
現(xiàn)在回到我們的類比,m可以被認(rèn)為是圖中人員的當(dāng)前位置。D等于斜率的陡度,L是他移動(dòng)的速度?,F(xiàn)在我們使用上面的等式計(jì)算的m的新值將是他的下一個(gè)位置,并且L×D將是步幅的大小。當(dāng)斜率更陡(D更大)時(shí),他需要邁出更大的步幅,當(dāng)它更陡(D更小)時(shí),他邁出更小的步幅。最后他到達(dá)山谷的底部,相當(dāng)于我們的損失= 0。
現(xiàn)在有了m和c的最佳值,我們的模型已經(jīng)準(zhǔn)備好進(jìn)行預(yù)測(cè)了。
實(shí)施模型
現(xiàn)在讓我們將上面的所有內(nèi)容轉(zhuǎn)換為代碼并查看我們的模型!
梯度下降算法是機(jī)器學(xué)習(xí)中最簡(jiǎn)單、應(yīng)用最廣泛的算法之一,主要是因?yàn)樗梢詰?yīng)用于任何函數(shù)來優(yōu)化它。學(xué)習(xí)它為掌握機(jī)器學(xué)習(xí)奠定了基礎(chǔ)。你可以在這里找到數(shù)據(jù)集和代碼:
https//github.com/chasinginfinity/ml-from-scratch/tree/master/02%20Linear%20Regression%20using%20Gradient%20Descent
聯(lián)系客服