來自知乎內容:
最小二乘法和梯度下降法有哪些區別?
非線性最小二乘法:
非線性最小二乘的求解樣例:
**: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 ...
最小二乘法以及最小二乘法和梯度下降法的區別
通過這段描述可以看出來,最小二乘法也是一種優化方法,求得目標函式的最優值。並且也可以用於曲線擬合,來解決回歸問題。難怪 統計學習方法 中提到,回歸學習最常用的損失函式是平方損失函式,在此情況下,回歸問題可以著名的最小二乘法來解決。看來最小二乘法果然是機器學習領域做有名和有效的演算法之一。二.最小二乘...