日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数学建模学习笔记(四)——拟合算法

發布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数学建模学习笔记(四)——拟合算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 擬合算法簡介
    • 一個線性規劃的例子
    • 最小二乘法
    • 求解最小二乘法
    • 擬合檢驗
    • 總結

擬合算法簡介

  • 與插值算法不同,擬合算法的目的是得到一條確定的曲線;而插值是根據已有的數據來獲得一系列新的“靠譜”的數據。
  • 插值要求曲線必須全部經過樣本數據點,而擬合所得的結果曲線不一定要經過每一個樣本數據點,只要能夠通過誤差檢驗即可
  • 一個線性規劃的例子


    顯然,由圖中的數據可以得到,可以設置該擬合曲線為 y=kx+by = kx + by=kx+b,要估計 kkkbbb 的值,可以使用高中所學知識——最小二乘法。

    最小二乘法

    設樣本點數據為 (xi,yi)(x_i, y_i)(xi?,yi?)i=1,2,?,ni = 1, 2, \cdots, ni=1,2,?,n,那么最小二乘法有如下兩種定義:

  • 第一種定義:yi^=kxi+b\hat{y_i} = kx_i + byi?^?=kxi?+b
    其中:ki^,bi^=argk,bmin(∑i=1n∣yi?yi^∣)\hat{k_i}, \hat{b_i} = arg_{k, b} min(\sum_{i=1}^{n}|y_i-\hat{y_i}|)ki?^?,bi?^?=argk,b?min(i=1n?yi??yi?^?)表示表達式的參數為kkkbbb,而 k^\hat{k}k^b^\hatb^ 能夠使得表達式取得最小值。
  • 第二種定義:yi^=kxi+b\hat{y_i} = kx_i + byi?^?=kxi?+b
    其中:k^,b^=argk,bmin(∑i=1n(yi?yi^)2)\hat{k}, \hat = arg_{k, b}min(\sum_{i = 1}^{n}(y_i - \hat{y_i})^2)k^,b^=argk,b?min(i=1n?(yi??yi?^?)2)表達的意義與第一種定義相同,只是表達式不同而已。
  • 在平常的應用中,我們常常使用第二種定義。原因是第一種定義中含有絕對值,函數圖像有拐點,不易求導。由此可以引申出以下結論:
    ?\bullet? 不用奇數次原因
    使用奇數次會有負數出現,那么誤差就會奇偶相抵
    ?\bullet? 不用偶數次原因
    像4次這樣的次數太高,結果易受極端數據(比如當自變量很大時)的影響。

    求解最小二乘法

    L=∑i=1n(yi?kxi?b)2L = \sum_{i = 1}^{n}(y_i - kx_i - b)^2L=i=1n?(yi??kxi??b)2,現在要尋找能夠使 LLL 最小的 kkkbbb 的值:{?L?k=?2∑i=1nxi(yi?kxi?b)=0?L?b=?2∑i=1n(yi?kxi?b)=0\left\{ \begin{aligned} & \frac{\partial L}{\partial k} = -2\sum_{i = 1}^{n}x_i(y_i - kx_i - b) = 0 \\ & \frac{\partial L}{\partial b} = -2\sum_{i = 1}^{n}(y_i - kx_i - b) = 0 \end{aligned} \right.??????????????k?L?=?2i=1n?xi?(yi??kxi??b)=0?b?L?=?2i=1n?(yi??kxi??b)=0? ?{∑i=1nxiyi=k∑i=1nxi2+b∑i=1nxi∑i=1nyi=k∑i=1nxi+bn\Rightarrow \left\{ \begin{aligned} & \sum_{i = 1}^{n}x_iy_i = k\sum_{i = 1}^{n}x_i^2 + b\sum_{i = 1}^{n}x_i \\ & \sum_{i = 1}^{n}y_i = k\sum_{i = 1}^{n}x_i + bn \end{aligned} \right.??????????????i=1n?xi?yi?=ki=1n?xi2?+bi=1n?xi?i=1n?yi?=ki=1n?xi?+bn? ?{n∑i=1nxiyi=kn∑i=1nxi2+bn∑i=1nxI∑i=1nyi∑i=1nxi=k∑i=1nxi∑i=1nxi+bn∑i=1nxi\Rightarrow \left\{ \begin{aligned} & n\sum_{i = 1}^{n}x_iy_i = kn\sum_{i = 1}^{n}x_i^2 + bn\sum_{i = 1}^{n}x_I \\ & \sum_{i = 1}^{n}y_i\sum_{i = 1}^{n}x_i = k\sum_{i = 1}^{n}x_i\sum_{i = 1}^{n}x_i + bn\sum_{i = 1}^{n}x_i \end{aligned} \right.??????????????ni=1n?xi?yi?=kni=1n?xi2?+bni=1n?xI?i=1n?yi?i=1n?xi?=ki=1n?xi?i=1n?xi?+bni=1n?xi??
    因此:n∑i=1nxiyi?∑i=1nyi∑i=1nxi=kn∑i=1nxi2?k∑i=1nxi∑i=1nxin\sum_{i = 1}^{n}x_iy_i - \sum_{i = 1}^{n}y_i\sum_{i = 1}^{n}x_i = kn\sum_{i = 1}^{n}x_i^2 - k\sum_{i = 1}^{n}x_i\sum_{i = 1}^{n}x_ini=1n?xi?yi??i=1n?yi?i=1n?xi?=kni=1n?xi2??ki=1n?xi?i=1n?xi? ?k^=n∑i=1nxiyi?∑i=1nyi∑i=1nxin∑i=1nxi2?∑i=1nxi∑i=1nxi\Rightarrow \hat{k} = \frac{n\sum_{i = 1}^{n}x_iy_i - \sum_{i = 1}^{n}y_i\sum_{i = 1}^{n}x_i}{n\sum_{i = 1}^{n}x_i^2 - \sum_{i = 1}^{n}x_i\sum_{i = 1}^{n}x_i}?k^=ni=1n?xi2??i=1n?xi?i=1n?xi?ni=1n?xi?yi??i=1n?yi?i=1n?xi?? ?b^=∑i=1nxi2∑i=1nyi?∑i=1nxi∑i=1nxiyin∑i=1xxi2?∑i=1nxi∑i=1nxi\Rightarrow \hat = \frac{\sum_{i = 1}^{n}x_i^2\sum_{i = 1}^{n}y_i - \sum_{i = 1}^{n}x_i\sum_{i = 1}^{n}x_iy_i}{n\sum_{i = 1}^{x}x_i^2 - \sum_{i = 1}^{n}x_i\sum_{i = 1}^{n}x_i}?b^=ni=1x?xi2??i=1n?xi?i=1n?xi?i=1n?xi2?i=1n?yi??i=1n?xi?i=1n?xi?yi??

    擬合檢驗

    在函數時線性函數(注意:這里的線性函數是指參數是線性的,而不是自變量是線性的,例如:y=ax2+by=ax^2 + by=ax2+b同樣也是線性函數)時,可以使用擬合優度(可決系數)R2R^2R2 來判斷擬合好壞

  • 擬合優度的定義
    ?\bullet? 總體平方和 SST=∑i=1n(yi?yˉ)2SST = \sum_{i = 1}^{n}(y_i - \bar{y})^2SST=i=1n?(yi??yˉ?)2
    ?\bullet? 誤差平方和 SSE=∑i=1n(yi?yi^)2SSE = \sum_{i = 1}^{n}(y_i - \hat{y_i})^2SSE=i=1n?(yi??yi?^?)2
    ?\bullet? 回歸平方和 SSR=∑i=1n(yi^?yˉ)2SSR = \sum_{i = 1}^{n}(\hat{y_i} - \bar{y})^2SSR=i=1n?(yi?^??yˉ?)2其中,SST=SSE+SSRSST = SSE + SSRSST=SSE+SSR
    此時可以定義擬合優度 R2=SSRSST=SST?SSESSR=1?SSESSTR^2 = \frac{SSR}{SST} = \frac{SST - SSE}{SSR} = 1 - \frac{SSE}{SST}R2=SSTSSR?=SSRSST?SSE?=1?SSTSSE?R2R^2R2 越接近于0,說明誤差越小,擬合度越好 。
    下面證明 SST=SSE+SSRSST = SSE + SSRSST=SSE+SSR∑i=1n(yi?yˉ)2=∑i=1n(yi?yi^+yi^?yˉ)2=∑i=1n(yi?yi^)2+∑i=1n(yi^?yˉ)2+2∑i=1n(yi?yi^)(yi^?yˉ)\sum_{i = 1}^{n}(y_i - \bar{y})^2 = \sum_{i = 1}^{n}(y_i - \hat{y_i} + \hat{y_i} - \bar{y})^2 \\= \sum_{i = 1}^{n}(y_i - \hat{y_i})^2 + \sum_{i = 1}^{n}(\hat{y_i} - \bar{y})^2 + 2\sum_{i = 1}^{n}(y_i - \hat{y_i})(\hat{y_i} - \bar{y})i=1n?(yi??yˉ?)2=i=1n?(yi??yi?^?+yi?^??yˉ?)2=i=1n?(yi??yi?^?)2+i=1n?(yi?^??yˉ?)2+2i=1n?(yi??yi?^?)(yi?^??yˉ?)因此,只需證明:∑i=1n(yi?yi^)(yi^?yˉ)=0\sum_{i = 1}^{n}(y_i - \hat{y_i})(\hat{y_i} - \bar{y}) = 0i=1n?(yi??yi?^?)(yi?^??yˉ?)=0由一階導數條件:{?L?k=?2∑i=1nxi(yi?kxi?b)=0?L?b=?2∑i=1n(yi?kxi?b)=0\left\{ \begin{aligned} & \frac{\partial L}{\partial k} = -2\sum_{i = 1}^{n}x_i(y_i - kx_i - b) = 0 \\ & \frac{\partial L}{\partial b} = -2\sum_{i = 1}^{n}(y_i - kx_i - b) = 0\end{aligned} \right.??????????????k?L?=?2i=1n?xi?(yi??kxi??b)=0?b?L?=?2i=1n?(yi??kxi??b)=0? ?{∑i=1nxi(yi?yi^)=0∑i=1n(yi?yi^)=0\Rightarrow \left\{ \begin{aligned} & \sum_{i = 1}^{n}x_i(y_i - \hat{y_i}) = 0 \\ & \sum_{i = 1}^{n}(y_i - \hat{y_i}) = 0 \end{aligned} \right.??????????????i=1n?xi?(yi??yi?^?)=0i=1n?(yi??yi?^?)=0?因此,∑i=1n(yi?yi^)(yi^?yˉ)=∑i=1nyi^(yi?yi^)?yˉ∑i=1n(yi?yi^)=∑i=1n(kxi+b)(yi?yi^)=0\begin{aligned} & \sum_{i = 1}^{n}(y_i - \hat{y_i})(\hat{y_i} - \bar{y}) \\ = & \sum_{i = 1}^{n}\hat{y_i}(y_i - \hat{y_i}) - \bar{y}\sum_{i = 1}^{n}(y_i - \hat{y_i}) \\ = & \sum_{i = 1}^{n}(kx_i + b)(y_i - \hat{y_i}) = 0 \end{aligned}==?i=1n?(yi??yi?^?)(yi?^??yˉ?)i=1n?yi?^?(yi??yi?^?)?yˉ?i=1n?(yi??yi?^?)i=1n?(kxi?+b)(yi??yi?^?)=0?(參數)線性函數可以使用 R2R^2R2 來判斷擬合的好壞,其他非線性的函數直接看 SSESSESSE 的大小即可。
  • 總結

    像擬合這類型的問題,最簡便的方法時使用 MatlabMatlabMatlab 中的擬合工具箱來擬合。里面有許多內置的擬合函數類型,且能計算 R2R^2R2 或者 SSESSESSE,通過輸入參數,確定擬合類型即可獲得擬合函數。

    總結

    以上是生活随笔為你收集整理的数学建模学习笔记(四)——拟合算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。