梯度下降法,最小二乘法求線性回歸

2021-07-10 20:14:14 字數 1379 閱讀 8811

來自知乎內容:

最小二乘法和梯度下降法有哪些區別?

非線性最小二乘法:

非線性最小二乘的求解樣例:

**:longshaoan

問題:已知資料x、y,

x=[ -0.46,-0.0755,-0.0227,-0.63,-0.435,-0.4]

y=[0.595,0.556,0.44,0.53,0.634,0.551];

依照y=b/(a+x) ,用最小二乘擬合方法擬合出ab的值,並繪製出函式的曲線。

工具方法:matlab的lsqcurvefit函式。

具體實施:

(1)先大致看一下,此資料的效果,通過命令plot完成。

x=[ -0.46,-0.0755,-0.0227,-0.63,-0.435,-0.4]

y=[0.595,0.556,0.44,0.53,0.634,0.551];

plot(x,y, 'b:o', 'linewidth',3) %藍色o線繪出

(2)通過函式lsqcurvefit進行曲線擬合。

1>構建函式:

function f = myfun(x,xdata)

f= x(1)./(x(2)+xdata);

保持在當前目錄下面以myfun.m命名。

2>求取引數ab,這裡以x(1)和x(2)表示。

xdata=[-0.46,-0.0755,-0.0227,-0.63,-0.435,-0.4];

ydata=[0.595,0.556,0.44,0.53,0.634,0.551];

x0 = [1;1]  %初值

[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata)

鑑於不同的初值可能得到不同的結果,進行了如下嘗試:

初值x0=(1,1)

x(1)=2.2788

x(2)=4.4836

初值x0=(2,2)

x(1)=2.2797

x(2)=4.4851

初值x0=(1,10)

x(1)= 2.2792

x(2)= 4.4842

初值x0=(-1,100)

x(1)=2.2802

x(2)=4.4861

因此我們有理由相信x(1)=2.28,x(2)=4.48

因此次多項式可以表示為

y=2.28/(4.48+x)

接下來我們給出此多項式的圖形:

x=-5:0.1:5;

y=2.28./(4.48+x)

plot(x,y, 'r', 'linewidth',3)

為何更好的顯示擬合的效果,請看下圖:

總結:用此函式擬合這些點,效果看起來並不是特別好,如果資料範圍比較小,可以嘗試別的函式進行擬合。 

最小二乘法和梯度下降法

通過這段描述可以看出來,最小二乘法也是一種優化方法,求得目標函式的最優值。並且也可以用於曲線擬合,來解決回歸問題。難怪 統計學習方法 中提到,回歸學習最常用的損失函式是平方損失函式,在此情況下,回歸問題可以著名的最小二乘法來解決。看來最小二乘法果然是機器學習領域做有名和有效的演算法之一。二.最小二乘...

線性回歸演算法實現(最小二乘法, 梯度下降)

一 最小二乘法 import numpy as np import matplotlib.pyplot as plt 初始化資料,網上隨便找的資料,說是奧運會100公尺短跑用時,以及對應的年份。dataarray np.array 12,1896 11,1900 11,1904 10.8,1908 ...

最小二乘法以及最小二乘法和梯度下降法的區別

通過這段描述可以看出來,最小二乘法也是一種優化方法,求得目標函式的最優值。並且也可以用於曲線擬合,來解決回歸問題。難怪 統計學習方法 中提到,回歸學習最常用的損失函式是平方損失函式,在此情況下,回歸問題可以著名的最小二乘法來解決。看來最小二乘法果然是機器學習領域做有名和有效的演算法之一。二.最小二乘...