簡單實現一下梯度下降法。
首先引入需要的庫,然後畫乙個簡單的函式影象。
import numpy as np
import matplotlib.pyplot as plt
plot_x = np.linspace(-1,6,141) #畫函式曲線,x是範圍-1到6內的140個離散點
是這樣乙個簡單的二次函式。
def dj(theta):
return 2*(theta - 2.5) #這個是對函式進行求導,也就是斜率值
def j(theta):
return (theta - 2.5)**2 - 1 #函式,也就是plot_y
theta = 0.0
eta = 0.1 #學習步長 這個引數很重要
epsilon = 1e-8 #跳出迴圈的條件。當**值與真實值之差的絕對值小於這個數就可以認為基本吻合了
while true:
gradient = dj(theta)
last_theta = theta
theta = theta - eta * gradient
if(abs(j(theta) - j(last_theta))
這是結果值。
如果加入乙個陣列存放每乙個**過的theta值,然後把過程也在圖中顯示出來,**如下:
為便於呼叫,把函式進行封裝。
當eta = 0.1時,影象如下:
可以看出還是比較稀疏的,特別是在從0開始得到那部分,步長比較大,到後面越來越密集。
接下來改變eta的值:
當eta=0.01時,此時陣列中有424個資料,加上初始比較的那次,一共進行了425次計算步長,最終找到最小值。
eta作為乙個超引數和函式曲線上面的某乙個點的斜率有關,基本上取0.01就比較合適,但是如果效果不理想,可以按照上面的方法繪圖檢視一下。但是不要覺得eta到1就是極限值了,這個要看實驗資料和內容確定具體的eta值。
機器學習之梯度下降法 梯度下降法分析
梯度下降法的基本思想是函式沿著其梯度方向增加最快,反之,沿著其梯度反方向減小最快。在前面的線性回歸和邏輯回歸中,都採用了梯度下降法來求解。梯度下降的迭代公式為 j j j j 在回歸演算法的實驗中,梯度下降的步長 為0.01,當時也指出了該步長是通過多次時間找到的,且換一組資料後,演算法可能不收斂。...
機器學習 梯度下降法
梯度下降法,一般用來求解線性回歸方程,我的理解是根據一組形如 特徵1,特徵2.結果 的資料來找到這些對應的特徵和結果之間的聯絡 例如,我們利用一組 銷量的資料判斷乙個物品的銷量和 之間的關係 我們要求的線性回歸方程可以表示為 銷量 引數 實質上其實就是找到對應的 引數 而當影響乙個結果的特徵不只有乙...
機器學習 梯度下降法
1 梯度下降法的邏輯思路 的取值影響獲得最優解的速度 取值不合適,甚至得不到最優解 是梯度下降法的乙個超引數 一般需要調參找到最適合的 太小,減慢收斂學習速度 太大,導致不收斂 2 梯度下降法的問題 3 其它1 具體實現 模擬損失函式 y x 2.5 2 1 資料集特徵值 plot x np.lin...