国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)

這篇具有很好參考價值的文章主要介紹了線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

關(guān)于回歸和擬合,從它們的求解過程以及結(jié)果來看,兩者似乎沒有太大差別,事實也的確如此。從本質(zhì)上說,回歸屬于數(shù)理統(tǒng)計問題,研究解釋變量與響應(yīng)變量之間的關(guān)系以及相關(guān)性等問題。而擬合是把平面的一系列點(diǎn),用一條光滑曲線連接起來,并且讓更多的點(diǎn)在曲線上或曲線附近。更確切的說,擬合是回歸用到的一種數(shù)學(xué)方法,而擬合與回歸的應(yīng)用場合不同。擬合常用的方法有最小二乘法梯度下降法、高斯牛頓(即迭代最小二乘)、列-馬算法。其中最最常用的就是最小二乘法。并且擬合可以分為線性擬合非線性擬合,非線性擬合比較常用的是多項式擬合。根據(jù)自變量的個數(shù),擬合也可以分為曲線擬合曲面擬合等。

而回歸大多數(shù)采用最小二乘法?;貧w可以分為一元線性回歸、一元非線性回歸、多元線性回歸、多元非線性回歸等。

通常情況下,擬合通常所處理的是一元函數(shù)(即曲線擬合),求自變量與因變量之間的關(guān)系;對于多元回歸問題,一般會涉及很多個解釋變量。通常情況下,我們會把線性回歸與線性擬合定義等同。本文對于回歸問題,與擬合方法結(jié)合,講解對于不同情況下擬合方程的求法,對相關(guān)系數(shù)等知識不做展開。

一:最小二乘法。

無論是在高等數(shù)學(xué)、線性代數(shù),還是數(shù)理統(tǒng)計,我們都可以看到最小二乘法的身影。只不過每一部分側(cè)重點(diǎn)不同,最終是殊途同歸的。但是兔兔建議用矩陣的方法來做,這樣很便于理解,計算起來也很方便。

最小二乘法的基本思路是:確定函數(shù)f(x),使得各個點(diǎn)x1,x2..xn處的函數(shù)值偏差f(x1)-y1、f(x2)-y2...f(xn)-yn的平方和或絕對值和最小。如果是一元線性擬合(回歸),我們可以設(shè)方程為f(x)=ax+b。

這時我們求得函數(shù)值偏差平方和為線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)。為了求它的最小值,利用高數(shù)的方法,就可以使M分別對a和b的偏導(dǎo)為0,最終求解得方程組:

線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)

把方程組解出來得a,b就得出擬合結(jié)果了。這個式子也就是我們在數(shù)理統(tǒng)計中一元回歸方程中常用的式子之一,不過比較麻煩。當(dāng)自變量(解釋變量)的個數(shù)是多個時,我們設(shè)方程為線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一),或者是多項式擬合,設(shè)函數(shù)為線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)。這樣逐個求偏導(dǎo)就麻煩很多。

這個時候矩陣的方法就使得擬合結(jié)果十分簡潔。而且可以發(fā)現(xiàn),如果用矩陣進(jìn)行一元線性擬合,展開后和上面那個結(jié)果是一致的。

例如對于多元線性回歸(二元時也可以看作是平面擬合),我們設(shè)每組數(shù)據(jù)有p個指標(biāo),一共有n組數(shù)據(jù),在多元統(tǒng)計中,我們稱:

為樣本數(shù)據(jù)矩陣(觀測陣)。如果我們設(shè)方程為線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一),把每一組數(shù)據(jù)帶入,求偏導(dǎo)等于0 時各個a的值。這個推導(dǎo)過程比較麻煩。不過,如果我們對于這個式子,定義X、Y、a為:

線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)

這樣等式就是。之后就是

這樣,我們就很容易得到a了,雖然不是嚴(yán)格的證明,但是推算和應(yīng)用卻十分的簡便!嚴(yán)格的矩陣求導(dǎo)證明方法兔兔寫在下面了,感興趣的同學(xué)可以看一下。(關(guān)于矩陣求導(dǎo)可以看兔兔的另一篇《矩陣求導(dǎo)(本質(zhì)、原理與推導(dǎo))詳解》)

線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)

?

那么,一元多項式擬合也是如此。如果設(shè)方程為線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)。定義X,Y,a為:

線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)

這樣等式就是Xa=Y,解法與推導(dǎo)與以上過程一樣,結(jié)果為:。

對于多元非線性回歸(擬合),也可以設(shè)多元多項式形式,擬合出多元多項式函數(shù)。

算法實現(xiàn):

(1)二元線性回歸:

對表格的數(shù)據(jù)做二元線性回歸。

指標(biāo)x1 7 1 11 7 11 3 8 9 2
指標(biāo)x2 26 29 56 31 52 55 71 31 54
y 93 91 190 108 177 172 231 111 167

代碼實現(xiàn):

import numpy as np
x1=[7,1,11,7,11,3,8,9,2]
x2=[26,29,56,31,52,55,71,31,54]
y=[93,91,190,108,177,172,231,111,167]
X=np.mat([[1 for i in range(len(x1))],x1,x2]).T #把樣本轉(zhuǎn)成X
Y=np.mat(y).T #把y轉(zhuǎn)成Y
a=np.linalg.inv(X.T*X)*X.T*Y #求a的公式
a0=a[0,0];a1=a[1,0];a2=a[2,0]
ax=plt.axes(projection='3d')
xx=np.arange(2,12,0.1)
yy=np.arange(20,75,0.5)
XX,YY=np.meshgrid(xx,yy)
Z=a0+a1*XX+a2*YY #平面方程
ax.scatter(x1,x2,y,color="red") #畫散點(diǎn)
ax.plot_surface(XX,YY,Z,cmap="winter") #畫擬合平面
plt.show()

散點(diǎn)圖如下:

線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)

?擬合平面圖:

線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)

?我們發(fā)現(xiàn),大部分點(diǎn)都落在平面附近。

(2)一元多項式回歸

可以對表格的數(shù)據(jù)做三次多項式擬合。

x 1 2 4 5 6 7 10 11 13
y 18 20 0 -10 -12 0 180 308 702
import numpy as np
x=[1,2,4,5,6,7,10,11,13]
y=[18,20,0,-10,-12,0,180,308,702]
def to_X(x,n):
    '''把數(shù)據(jù)X轉(zhuǎn)成矩陣X,n是擬合多項式的次數(shù)'''
    l=[]
    for i in x:
        s=[]
        for j in range(n+1):
            s.append(i**j)
        l.append(s)
    return np.mat(l)
Y=np.mat(y).T
X=to_X(x=x,n=3) #做三次多項式擬合
a=np.linalg.inv(X.T*X)*X.T*Y
xx=np.arange(0,14,0.1)
yy=a[0,0]+a[1,0]*xx+a[2,0]*xx**2+a[3,0]*xx**3
plt.scatter(x,y,color="red") #畫散點(diǎn)圖
plt.plot(xx,yy) #擬合曲線
plt.show()

散點(diǎn)圖與擬合曲線圖如下所示:

線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)

?我們發(fā)現(xiàn),用三次多項式擬合,效果比較好。至于其它的多項式同學(xué)們也可以嘗試以下,但需要注意的是:有時不一定多項式次數(shù)越多,擬合效果越好

(3)二元多項式擬合(曲面擬合)

對于曲面擬合情況,我們可以和曲線擬合,分為n次多項式擬合。如果假設(shè)是二次曲面,就是線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)。三次曲面:線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)

計算方法仍是把數(shù)據(jù)轉(zhuǎn)換成矩陣X,代入公式。我們對下面數(shù)據(jù)做二次曲面擬合。

x1 1 -2 6 3 4 -4 -2 3 10
x2 2 9 -4 3 6 -3 2 2 -4
y 9 49 4 80 101 50 0 25 6
import numpy as np
x1=[1,-2,6,3,4,-4,-2,3,10]
x2=[2,9,-4,3,6,-3,2,2,-4]
y=[9,49,4,80,101,50,0,25,6]
def to_X(x1,x2):
    n=len(x1)
    X=[[1 for i in range(n)],
       [i**2 for i in x1],
       [j**2 for j in x2],
       [i*j for i,j in zip(x1,x2)]]
    return np.mat(X).T
X=to_X(x1,x2)
Y=np.mat(y).T
a=np.linalg.inv(X.T*X)*X.T*Y
a0=a[0,0];a1=a[1,0];a2=a[2,0];a3=a[3,0]
ax=plt.axes(projection='3d') #畫散點(diǎn)圖
ax.scatter(x1,x2,y,color='red')
xt=np.arange(-5,10)
yt=np.arange(-5,10)
Xt,Yt=np.meshgrid(xt,yt)
Z=a0+a1*Xt**2+a2*Yt**2+a3*Xt*Yt
ax.plot_surface(Xt,Yt,Z) #畫擬合曲面
plt.show()

運(yùn)行結(jié)果如下圖所示。

線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)

?二:梯度下降法

關(guān)于梯度下降法,兔兔在《梯度下降法(Gradient descant)算法詳解》一文已經(jīng)講過。在這里,我們先設(shè)函數(shù)f(x),然后求損失函數(shù)取最小值時的a的值(這里用二分之一是為了方便,求導(dǎo)后乘以2后化為1)。如果用矩陣表示,可以是。為了使損失函數(shù)最小,可以用梯度下降的方法并求得a值。關(guān)于矩陣的導(dǎo)數(shù)兔兔在上面的矩陣求導(dǎo)過程中已經(jīng)寫過,這里就不再重復(fù)了。

算法實現(xiàn)

x 1 3 5 7 9
y 3 5 7 8 12
import numpy as np
x=[1,3,5,7,9]
y=[3,5,7,8,12]
X=np.mat([[1 for i in range(5)],x]).T
Y=np.mat(y).T
def Grand_descend(x,y,circle=100,alpha=0.001):
    '''梯度下降'''
    a=np.random.normal(size=(2,1)) #初始化a
    for i in range(circle): #迭代次數(shù)
        a-= alpha*(X.T*X*a-X.T*Y) #批量梯度下降
    return a
a=Grand_descend(x=X,y=Y)
xt=np.arange(0,10)
yt=a[0,0]+a[1,0]*xt
plt.scatter(x,y,color='red')
plt.plot(xt,yt,color='green')
plt.show()

結(jié)果如下:

線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)

?這里學(xué)習(xí)率需要小一些,否則容易出現(xiàn)梯度爆炸。迭代次數(shù)也需要適當(dāng)。對于前面最小二乘法的三個例子,同樣可以用梯度下降這種方法來進(jìn)行擬合計算。

三:總結(jié)

關(guān)于回歸(擬合)問題,本文先介紹了最小二乘法與梯度下降法,二者在公式推導(dǎo)上有很多相似的地方,目的都是在確定函數(shù)形式后,求損失函數(shù)的最小值時的參數(shù)。關(guān)于線性擬合問題,相對容易一些,而對于非線性的問題,往往還要因具體情況而分析,選特定的方法,兔兔之后會單獨(dú)講解。關(guān)于高斯牛頓與列-馬算法,二者也有許多相似之處,兔兔將會在第二部分進(jìn)行講解。文章來源地址http://www.zghlxwxcb.cn/news/detail-412718.html

到了這里,關(guān)于線性回歸(線性擬合)與非線性回歸(非線性擬合)原理、推導(dǎo)與算法實現(xiàn)(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 時序預(yù)測 | MATLAB實現(xiàn)NARX非線性自回歸外生模型房價預(yù)測

    時序預(yù)測 | MATLAB實現(xiàn)NARX非線性自回歸外生模型房價預(yù)測

    效果一覽 基本介紹 時序預(yù)測 | MATLAB實現(xiàn)NARX非線性自回歸外生模型房價預(yù)測 研究內(nèi)容 NARX(Nonlinear AutoRegressive with eXogenous inputs)是一種非線性自回歸外生模型,可以用于時間序列預(yù)測,其中外生變量可以幫助提高預(yù)測的準(zhǔn)確性。在房價預(yù)測中,NARX模型可以使用歷史房價數(shù)據(jù)

    2024年02月16日
    瀏覽(21)
  • Matlab多元非線性函數(shù)擬合

    Matlab多元非線性函數(shù)擬合

    看了多篇文章,覺得沒有一篇比較全,且可以參照的多元非線性函數(shù)擬合,看了多篇文章后總結(jié)以下內(nèi)容,主要以示例給出,希望能幫助到大家快速上手。 beta = nlinfit(X, Y, modelfun, beta0) X為你的自變量,Y是因變量,modelfun是你用inline定義的函數(shù)名字,beta0是模型參數(shù)的初始值。

    2024年02月07日
    瀏覽(16)
  • 三種用python進(jìn)行線性/非線性擬合的方法

    三種用python進(jìn)行線性/非線性擬合的方法

    使用回歸分析繪制擬合曲線是一種常見的方法,簡單線性回歸就是其中的一種。簡單線性回歸可以通過 最小二乘法 來計算回歸系數(shù)。以下是一個使用簡單線性回歸來擬合數(shù)據(jù)的代碼示例: 在該代碼中,np.polyfit函數(shù)可以用來計算簡單線性回歸的回歸系數(shù)。plot函數(shù)用來繪制擬

    2024年02月11日
    瀏覽(21)
  • Open3D 非線性最小二乘擬合二維多項式曲線

    ??多項式曲線表示為: p ( x ) = p 1 x n + p 2 x

    2024年02月07日
    瀏覽(19)
  • R語言lasso懲罰稀疏加法(相加)模型SPAM擬合非線性數(shù)據(jù)和可視化

    R語言lasso懲罰稀疏加法(相加)模型SPAM擬合非線性數(shù)據(jù)和可視化

    本文將關(guān)注R語言中的LASSO(Least Absolute Shrinkage and Selection Operator)懲罰稀疏加法模型(Sparse Additive Model,簡稱SPAM)。SPAM是一種用于擬合非線性數(shù)據(jù)的強(qiáng)大工具,它可以通過估計非線性函數(shù)的加法組件來捕捉輸入變量與響應(yīng)變量之間的復(fù)雜關(guān)系 ( 點(diǎn)擊文末“閱讀原文”獲取完

    2024年02月11日
    瀏覽(29)
  • 每天五分鐘機(jī)器學(xué)習(xí):多項式非線性回歸模型

    每天五分鐘機(jī)器學(xué)習(xí):多項式非線性回歸模型

    在前面的課程中,我們學(xué)習(xí)了線性回歸模型和非線性回歸模型的區(qū)別和聯(lián)系。多項式非線性回歸模型是一種用于擬合非線性數(shù)據(jù)的回歸模型。與線性回歸模型不同,多項式非線性回歸模型可以通過增加多項式的次數(shù)來適應(yīng)更復(fù)雜的數(shù)據(jù)模式。在本文中,我們將介紹多項式非線

    2024年02月16日
    瀏覽(27)
  • pytorch的卷積層池化層和非線性變化 和機(jī)器學(xué)習(xí)線性回歸

    pytorch的卷積層池化層和非線性變化 和機(jī)器學(xué)習(xí)線性回歸

    卷積層: ? 兩個輸出的情況 就會有兩個通道 可以改變通道數(shù)的 最簡單的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu): nn.Mudule就是繼承父類 super執(zhí)行的是 先執(zhí)行父類函數(shù)里面的 forward執(zhí)行的就是前向網(wǎng)絡(luò),就是往前推進(jìn)的,當(dāng)然也有反向轉(zhuǎn)播,那就是用來就gradient dicent了,求導(dǎo)計算了。 卷積后的結(jié)果展

    2024年02月07日
    瀏覽(24)
  • Matlab數(shù)據(jù)處理:用離散數(shù)據(jù)根據(jù)自定義多變量非線性方程擬合解析方程求取參數(shù)

    Matlab數(shù)據(jù)處理:用離散數(shù)據(jù)根據(jù)自定義多變量非線性方程擬合解析方程求取參數(shù)

    問題:已知xlsx表格[X,Y,Z]的離散取值,希望用 ?來擬合,用matlab求得[C1,C2,C3,C5,C6]的值 解答: 運(yùn)行結(jié)果: ?備注: 1.rsquare=0.8668認(rèn)為接近1,擬合效果不錯 2.fill函數(shù)的startpoint如何設(shè)置[C1,...C6]得到一個收斂點(diǎn)?(我找了沒找到什么設(shè)置startpoint好方法,摸索用如下方法找到了一個

    2024年02月11日
    瀏覽(23)
  • 數(shù)學(xué)建模:線性與非線性優(yōu)化算法

    ?? 文章首發(fā)于我的個人博客:歡迎大佬們來逛逛 優(yōu)化算法 是指在滿足一定條件下,在眾多方案中或者參數(shù)中最優(yōu)方案,或者參數(shù)值,以使得某個或者多個功能指標(biāo)達(dá)到最優(yōu),或使得系統(tǒng)的某些性能指標(biāo)達(dá)到最大值或者最小值 優(yōu)化的兩個關(guān)鍵點(diǎn): 1.明確優(yōu)化的目標(biāo)函數(shù) 2.明確優(yōu)化

    2024年02月07日
    瀏覽(23)
  • 算法 數(shù)據(jù)結(jié)構(gòu)分類 數(shù)據(jù)結(jié)構(gòu)類型介紹 數(shù)據(jù)結(jié)構(gòu)線性非線性結(jié)構(gòu) 算法合集 (一)

    ?數(shù)據(jù)結(jié)構(gòu)分為: ?????????????????????????? a.線性結(jié)構(gòu) ?????????????????????????? b.非線性結(jié)構(gòu) ?a.線性結(jié)構(gòu):? ? ? ? ? ? ?? ? ? ? ? 數(shù)據(jù)與結(jié)構(gòu)存在一對一的線性關(guān)系; a . 線性結(jié)構(gòu) 存儲 分為: ? ? ?? ? ?? ? ? ? ? ? ? ? ? ? ? ? 順序存儲

    2024年02月10日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包