從0開始的機器學習 梯度下降法(2)

2022-09-09 14:45:21 字數 1412 閱讀 6335

簡單實現一下梯度下降法。

首先引入需要的庫,然後畫乙個簡單的函式影象。

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...