這裡為了更好的記錄梯度下降法的邏輯,用簡單的二元線性回歸方程來模擬梯度下降法來找到最小值,然後以後也可以將這個邏輯來尋找最小最優演算法
所以得出線性回歸的損失函式是mse,也就是均方誤差,然後對均方誤差求導,就能得到梯度值,具體實現**如下,以簡單線性回歸方程為例
import numpy as np
from matplotlib import pyplot as plt
def j(x):
return (x - 3) ** 2 + 1
def dj(x):
return 2*(x-3)
x = np.linspace(-1, 7, 140)
y = j(x)
plt.plot(x, y)
def find(num) :
theta = 0.0
n = 0.5
e = 1e-8
thetalist = [theta]
while num >= 0:
lasttheta = theta
theta = lasttheta - n*dj(theta)
if abs(j(lasttheta) - j(theta)) < e:
break
num -= 1
return np.array(thetalist)
thetas = find(100)
yfind = j(thetas)
print(yfind)
#return false
plt.plot(thetas, yfind, color='r', marker = '+')
plt.show()
結果:
線性回歸與梯度下降法
原文 最近在看斯坦福的 機器學習 的公開課,這個課程是2009年的,有點老了,不過講的還是很好的,廓清了一些我以前關於機器學習懵懂的地方。我的一位老師曾經說過 什麼叫理解?理解就是你能把同乙個事情用自己的語言表達出來,並且能讓別人聽得懂。本著這樣的原則,同時也為了證明自己是 理解 的,於是決定打算在...
20191008 線性回歸 梯度下降法
不斷的迭代,還是波士頓房價 獲取資料 資料清洗預處理 劃分資料集 特徵工程 預估器流程 coef intercept 模型評估 from sklearn.datasets import load boston from sklearn.model selection import train tes...
梯度下降法求解線性回歸
梯度下降法 英語 gradient descent 是乙個一階最優化演算法,通常也稱為最速下降法。要使用梯度下降法找到乙個函式的區域性極小值,必須向函式上當前點對應梯度 或者是近似梯度 的反方向的規定步長距離點進行迭代搜尋。如果相反地向梯度正方向迭代進行搜尋,則會接近函式的區域性極大值點 這個過程則...