MATLAB 程式設計進階篇 曲線擬合與迴歸分析

Slides:



Advertisements
Similar presentations
Chap 3 微分的應用. 第三章 3.1 區間上的極值 3.2 Rolle 定理和均值定理 3.3 函數的遞增遞減以及一階導數的判定 3.4 凹面性和二階導數判定 3.5 無限遠處的極限 3.6 曲線繪圖概要 3.7 最佳化的問題 3.8 牛頓法 3.9 微分.
Advertisements

工職數學 第四冊 第一章 導 數 1 - 1 函數的極限與連續 1 - 2 導數及其基本性質 1 - 3 微分公式 1 - 4 高階導函數.
不定積分 不定積分的概念 不定積分的定義 16 不定積分的概念 16.1 不定積分的概念 以下是一些常用的積分公式。
大綱 1. 三角函數的導函數. 2. 反三角函數的導函數. 3. 對數函數的導函數. 4. 指數函數的導函數.
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 程式計時 張智星 清大資工系.
MATLAB 程式設計 時間量測 清大資工系 多媒體資訊檢索實驗室.
Introduction to C Programming
樞紐分析與資料庫 蕭世斌 Nov 20, 2010.
地方教育發展基金執行實務 王麗真、江明君、魏珮如 1.
圓的一般式 內容說明: 由圓的標準式展出圓的一般式.
第 3 章 方程與圖像.
中二數學 第五章 : 二元一次方程 二元一次方程的圖像.
1.1 利用平方差及完全平方的恆等式 分解因式 A 利用平方差的恆等式 B 利用完全平方的恆等式 目錄.
第四章 數列與級數 4-1 等差數列與級數 4-2 等比數列與級數 4-3 無窮等比級數 下一頁 總目錄.
5.1 自然對數函數:微分 5.2 自然對數函數:積分 5.3 反函數 5.4 指數函數:微分與積分 5.5 一般底數的指數函數和應用 5.6 反三角函數:微分 5.7 反三角函數:積分 5.8 雙曲函數.
Project 2 JMVC code tracing
2-3 基本數位邏輯處理※.
第二章 Linux基本指令與工具操作 LINUX 按圖施工手冊.
4B冊 認識公倍數和最小公倍數 公倍數和最小公倍數的關係.
邏輯迴歸 Logistic Regression
SQL Stored Procedure SQL 預存程序.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
第十八單元 平面上之參數方程式.
Topic Introduction—RMI
建立一 function s (type) 可以用來繪製cyclic-harmonic curves
分支宣告與程式設計 黃聰明 國立臺灣師範大學數學系
第二次電腦實習課 說明者:吳東陽 2003/10/07.
MATLAB 程式設計入門篇 動畫製作.
第一章 直角坐標系 1-3 函數圖形.
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 線性代數 張智星 清大資工系.
MATLAB 程式設計入門篇 二維平面繪圖 (part2)
學習單元:N6 數的性質 學習單位:N6-3 用短除法求H.C.F. 和 L.C.M. 學習重點 : 1. 複習因數分解法求
本章學習目標 學習極座標繪圖與對數繪圖 學習雙y軸繪圖 學習向量場繪圖 學習統計繪圖 在Matlab的環境裡製作動畫
數學 近似值 有效數值.
Introduction to C Programming
Definition of Trace Function
小學四年級數學科 8.最大公因數.
張智星 清大資工系 多媒體檢索實驗室 Tree Net Construction 張智星 清大資工系.
工程數學 Chapter 10 Fourier Series , Integrals , and Transforms 楊學成 老師.
MATLAB 程式設計入門篇 三維立體繪圖 (part1)
三維繪圖 Helix t = 0:pi/50:10*pi; % linspace(0,10*pi,500); figure plot3(sin(t),cos(t),t) grid on axis square Remark: zlabel, view, surf.
CH05. 選擇敘述.
MATLAB 程式設計:進階篇 多項式的處理與分析
本章學習目標 學習三維繪圖的基本技巧 學習peaks() 函數的用法 學習二維與三維等高線圖的繪製 學習三維圖形的編修
圖解配方法 張美玲老師製作.
微積分 第二次上機 Matlab 教學 2007/10/30 陳逸嬿.
張智星 (Roger Jang) 台大資工系 多媒體檢索實驗室
MiRanda Java Interface v1.0的使用方法
反矩陣與行列式 東海大學物理系‧數值分析.
原子/分子系統架構 Quantum Chemistry Dynamics Monte Carlo.
MATLAB 程式設計進階篇 多項式的處理與分析
例題 1. 多項式的排列 1-2 多項式及其加減法 將多項式 按下列方式排列: (1) 降冪排列:______________________ (2) 升冪排列:______________________ 排列 降冪:次數由高至低 升冪;次數由低至高.
1-1 二元一次式運算.
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
1757: Secret Chamber at Mount Rushmore
資料表示方法 資料儲存單位.
Linear Regression Analysis 5E Montgomery, Peck & Vining
第一章 直角坐標系 1-3 函數及其圖形.
非負矩陣分解法介紹 報告者:李建德.
補充 數值方法 數值方法.
4-1 變數與函數 第4章 一次函數及其圖形.
Test for R Data Processing & Graphics
一 可靠度問題.
單元三:敘述統計 內容: * 統計量的計算 * 直方圖的繪製.
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
11621 : Small Factors ★★☆☆☆ 題組:Problem Set Archive with Online Judge
17.1 相關係數 判定係數:迴歸平方和除以總平方和 相關係數 判定係數:迴歸平方和除以總平方和.
ABC ( )已知 ,則下列哪些是x6-7x5-8x4 的因 式?(複選) (A) x+1 (B) 2x+2 (C) x3(x+1)
第三章 比與比例式 3-1 比例式 3-2 連比例 3-3 正比與反比.
Presentation transcript:

MATLAB 程式設計進階篇 曲線擬合與迴歸分析 張智星 (Roger Jang) jang@mirlab.org http://mirlab.org/jang 清大資工系 多媒體檢索實驗室

資料擬和簡介 資料擬合(Data Fitting) 迴歸分析(Regression Analysis) 給定一組資料(含輸入及輸出),建立一個數學模型,來逼近此資料的輸入輸出特性 如果此資料包含一維輸入及輸出,則此數學模型可以表示成一條曲線,在此情況下又稱為曲線擬合(Curve Fitting) 迴歸分析(Regression Analysis) 使用統計的方法來進行資料擬和,並分析每一個變數的統計特性,此過程稱為迴歸分析

曲線擬合簡介 曲線擬合(Curve Fitting) 迴歸分析之分類 欲建立的數學模型是「單輸入、單輸出」(Single-input Single-output,簡稱SISO),其特性可用一條曲線來表示 迴歸分析之分類 若模型是線性模型,則此類問題稱為線性迴歸(Linear Regression) 若模型是非線性模型,則稱為非線性迴歸(Nonlinear Regression)。

曲線擬合:美國人口範例 觀察資料是美國自 1790 至 1990 年(以 10 年為一單位)的總人口,此資料可由載入檔案 census.mat 得到: 範例10-1: censusPlot01.m load census.mat % 載入人口資料 plot(cdate, pop, 'o'); % cdate 代表年度,pop 代表人口總數 xlabel('年度'); ylabel('美國人口總數');

曲線擬合之模型選取 模型選取 目標 由上圖資料分佈,可猜測這適合的曲線可能是二次拋物線 其中y為輸出,x為輸入, 則為此模型的參數。由於參數相對於y呈線性關係,所以此模型為稱線性模型 目標 找出最好的參數值,使得模型輸出與實際資料越接近越好,此過程即稱為線性迴歸

曲線擬合之目標函數 曲線擬和的平方誤差 假設觀察資料可寫成 ,i= 1~21。當輸入為 時,實際輸出為 。 模型的預測值為 平方誤差: 總平方誤差 是參數 的函數,這也是我們要最小化的目標函數,可表示如下:

目標函數之求解 求得參數 、 、 的最佳值 求出 對 、 、 的導式,令其為零,即可解出 、 、 的最佳值。 總平方誤差 為 的二次式 求得參數 、 、 的最佳值 求出 對 、 、 的導式,令其為零,即可解出 、 、 的最佳值。 總平方誤差 為 的二次式 導式 、 及 為 的一次式 令上述導式為零之後,我們可以得到一組三元一次線性聯立方程式,就可以解出參數 、 、 的最佳值。

矩陣表示法 假設 21 個觀察點均通過此拋物線,將這 21 個點帶入拋物線方程式,得到下列21個等式: 亦可寫成 其中 、 為已知, 為未知向量。

MATLAB的最小平方解 觀察 MATLAB 提供一個簡單方便的「左除」(\)指令,來解出最佳的 ,使得總平方誤差為最小。 上述21個方程式,只有 3 個未知數 ,所以通常不存在一組解來滿足這 21 個方程式。 在一般情況下,只能找到一組 ,使得等號兩邊的差異為最小,此差異可寫成 此即為前述的總平方誤差 MATLAB 提供一個簡單方便的「左除」(\)指令,來解出最佳的 ,使得總平方誤差為最小。

曲線擬合運算範例 利用「左除」來算出最佳的參數值,並同時畫出具有最小平方誤差的二次曲線 範例10-2: census01.m load census.mat % 載入人口資料 plot(cdate, pop, 'o'); % cdate 代表年度,pop 代表人口總數 A = [ones(size(cdate)), cdate, cdate.^2]; y = pop; theta = A\y; % 利用「左除」,找出最佳的 theta 值 plot(cdate, pop, 'o', cdate, A*theta, '-'); legend('實際人口數', '預測人口數'); xlabel('年度'); ylabel('美國人口總數');

曲線擬合結果 由上述範例,我們可以找出最佳的 因此具有最小平方誤差的拋物線可以寫成:

提示:左除及右除 左除的概念,可記憶如下:原先的方程式是 A*theta = y,我們可將 A移項至等號右邊,而得到 theta = A\y。必須小心的是:原先 A 在乘式的第一項,所以移到等號右邊後,A 仍然必須是除式的第一項。 若我們要解的方程式是 theta*A = y,則同樣的概念可得到最小平方解 theta = y/A。

以模型預測人口總數 根據上拋物線數學模型,我們可以預測美國在 2000 年的人口總數為: 範例10-3: census02.m load census.mat % 載入人口資料 A = [ones(size(cdate)), cdate, cdate.^2]; theta = A\pop; % 利用「左除」,找出最佳的 theta 值 t=2000; pop2000 = [1, t, t^2]*theta; % 在 2000 年美國人口線數預測值 t=2010; pop2010 = [1, t, t^2]*theta; % 在 2010 年美國人口線數預測值 fprintf('美國人口在2000年的預測值 = %g (百萬人)\n', pop2000); fprintf('美國人口在2010年的預測值 = %g (百萬人)\n', pop2010); >> 美國人口在2000年的預測值 = 274.622 (百萬人) >> 美國人口在2010年的預測值 = 301.824 (百萬人)

多項式擬和 上述例子推廣,得到一個 n 次多項式: 利用多項式的數學模型來進行曲線擬合,通稱為「多項式擬合(Polynomial Fitting)」 由於多項式擬和的應用面很廣,MATLAB 提供 polyfit 指令來找出多項式最佳參數 Polyval 指令來進行多項式的求值

使用polyfit & polyval的範例 範例10-4: census03.m polyfit(cdate, pop, 2)」中的 2 代表用到的模型是 2 次多項式 load census.mat % 載入人口資料 theta = polyfit(cdate, pop, 2); % 進行二次多項式擬合,找出 theta 值 fprintf('2000年的預測值 = %g (百萬人)\n', polyval(theta, 2000)); fprintf('2010年的預測值 = %g (百萬人)\n', polyval(theta, 2010)); >> 在2000年的預測值 = 274.622 (百萬人) >> 在2010年的預測值 = 301.824 (百萬人)

模型複雜度對預測的影響 MATLAB 下輸入「census」,可對 census 資料進行曲線擬合的結果,如下: 上述圖形可以看出,當多項式的次數越來越高時,「外插」常會出現不可信的結果。 這表示選用的模型參數太高,雖然誤差的平方和變小了,但是預測的可靠度也下降了。

線性迴歸的模型選取 線性迴歸的成功與否,與所選取的模型息息相關 如何選取模型,是線性迴歸的一個重大課題! 模型所含的參數越多,平方誤差會越小 若參數個數等於資料點個數,平方誤差會等於零,但這並不表示預測會最準,因為資料點含有雜訊 完全吻合資料的模型亦代表此模型受雜訊的影響最大,預測之準確度也會較差 如何選取模型,是線性迴歸的一個重大課題! Leave-one-out method

多輸入之線性迴歸 「多輸入、單輸出」的線性迴歸數學模型寫成 其中 為輸入,y 為輸出, 、 、…、 為此模型的參數, ,則是已知的函數,稱為基底函數(Basis Functions) 所給的資料點為 ,稱為取樣資料(Sample Data)或訓練資料(Training Data)。

矩陣表示法 將上述資料點帶入模型後可得: 或可表示成矩陣格式:

平方誤差和的最小化 由於 (即資料點個數遠大於可變參數個數),欲使上式成立,須加上一誤差向量 e: 平方誤差則可寫成 求 的最佳值 求 的最佳值 直接取 對 的偏微分,並令其等於零,即可得到一組 n 元一次的線性聯立方程式 用矩陣運算來表示, 的最佳值可表示成 也可以使用 MATLAB 的「左除」來算出 的最佳值,即 。

提示 理論上,最佳的 值為 ,但是 容易造成電腦內部計算的誤差,MATLAB 實際在計算「左除」時,會依照矩陣 A 的特性而選用最佳的方法,因此可以得到較穩定且正確的數值解。 欲知如何推導最佳的 值,可參考筆者另一著作:Neuro–Fuzzy and Soft Computing,Prentice Hall,1997。

曲面擬合範例(1/6) 在 MATLAB 下輸入 peaks,可以畫出一個凹凸有致的曲面,如下: 此函數的方程式如下:

曲面擬合範例(2/6) 在下列說明中,假設: 上述函數可寫成: 數學模型的基底函數已知 訓練資料包含正規分佈的雜訊 其中我們假設 、 和 是未知參數,n 則是平均為零、變異為 1 的正規分佈雜訊。

曲面擬合範例(3/6) 若要取得 100 筆訓練資料 範例10-5: peaks01.m randn 指令的使用即在加入正規分佈雜訊。上圖為我們收集到的訓練資料,由於雜訊很大,所以和原先未帶雜訊的圖形差異很大。 pointNum = 10; [xx, yy, zz] = peaks(pointNum); zz = zz + randn(size(zz)); % 加入雜訊 surf(xx, yy, zz); axis tight

曲面擬合範例(4/6) 現在我們要用已知的基底函數,來找出最佳的 、 和 範例10-6: peaks02.m 現在我們要用已知的基底函數,來找出最佳的 、 和 範例10-6: peaks02.m 由此找出的 值和最佳值 相當接近。 pointNum = 10; [xx, yy, zz] = peaks(pointNum); zz = zz + randn(size(zz))/10; % 加入雜訊 x = xx(:); % 轉為行向量 y = yy(:); % 轉為行向量 z = zz(:); % 轉為行向量 A = [(1-x).^2.*exp(-(x.^2)-(y+1).^2), (x/5-x.^3-y.^5).*exp(-x.^2-y.^2), exp(-(x+1).^2-y.^2)]; theta = A\z % 最佳的 theta 值 theta = 3.0088 -10.0148 -0.2924

曲面擬合範例(5/6) 根據上求得之參數,可以輸入較密的點,得到迴歸後的曲面 範例10-7: peaks03.m pointNum = 10; [xx, yy, zz] = peaks(pointNum); zz = zz + randn(size(zz))/10; % 加入雜訊 x = xx(:); y = yy(:); z = zz(:); % 轉為行向量 A = [(1-x).^2.*exp(-(x.^2)-(y+1).^2), (x/5-x.^3-y.^5).*exp(-x.^2-y.^2), exp(-(x+1).^2-y.^2)]; theta = A\z; % 最佳的 theta 值 % 畫出預測的曲面 pointNum = 31; [xx, yy] = meshgrid(linspace(-3, 3, pointNum), linspace(-3, 3, pointNum));

曲面擬合範例(6/6) 只要基底函數正確,而且雜訊是正規分佈,那麼當資料點越來越多,上述的最小平方法就可以逼近參數的真正數值。 x = xx(:); y = yy(:); % 轉為行向量 A = [(1-x).^2.*exp(-(x.^2)-(y+1).^2), (x/5-x.^3-y.^5).*exp(-x.^2-y.^2), exp(-(x+1).^2-y.^2)]; zz = reshape(A*theta, pointNum, pointNum); surf(xx, yy, zz); axis tight 在上圖中,我們猜對了基底函數,因此得到非常好的曲面擬合。 只要基底函數正確,而且雜訊是正規分佈,那麼當資料點越來越多,上述的最小平方法就可以逼近參數的真正數值。

非線性迴歸 非線性迴歸(Nonlinear Regression)是一個比較困難的問題,原因如下: 須引用各種非線性最佳化的方法。 無法一次找到最佳解。 無法保證能夠找到最佳解。 須引用各種非線性最佳化的方法。 各種相關數學性質並不明顯。 以數學來描述,假設所用的數學模型是 其中 是輸入向量, 是可變非線性函數,y 是輸出變數。 總平方誤差為

非線性迴歸:誤差值的最小化 用一般最佳化(Optimization)的方法,來找出 的最小值,例如 假設所用的數學模型為 梯度下降法(Gradient Descent) Simplex下坡式搜尋(Simplex Downhill search):此方法即為fminsearch指令所採用的方法 假設所用的數學模型為 其中 、 為線性參數,但λ1、λ2 為非線性參數 總平方誤差可表示: 欲找出使 為最小的 、 、λ1及λ2,需將 E 寫成一函式,並由其它最佳化的方法來求出此函式的最小值。

使用fminsearch的範例(1/3) 我們使用errorMeasure1.m來計算誤差值 其中 theta 是參數向量,包含了 、 、λ1 及 λ2,data 則是觀察到的資料點,傳回的值 則是總平方誤差。 function squaredError = errorMeasure1(theta, data) x = data(:,1); y = data(:,2); y2 = theta(1)*exp(theta(3)*x)+theta(2)*exp(theta(4)*x); squaredError = sum((y-y2).^2);

使用fminsearch的範例(2/3) 欲求出 的最小值,我們可使用 fminsearch 指令 範例10-9: nonlinearFit01.m load data.txt theta0 = [0 0 0 0]; tic theta = fminsearch(@errorMeasure1, theta0, [], data); fprintf('計算時間 = %g\n', toc); x = data(:, 1); y = data(:, 2); y2 = theta(1)*exp(theta(3)*x)+theta(2)*exp(theta(4)*x); plot(x, y, 'ro', x, y2, 'b-'); legend('Sample data', 'Regression curve'); fprintf('誤差平方和 = %d\n', sum((y-y2).^2));

使用fminsearch的範例(3/3) 上圖的曲線為 fminsearch 指令產生的迴歸曲線。 計算時間 = 0.03 誤差平方和 = 5.337871e-001 上圖的曲線為 fminsearch 指令產生的迴歸曲線。 fminsearch 指令是一個使用 Simplex 下坡式搜尋法(Downhill Simplex Search)的最佳化方法,用來找出 errorMeasure1 的極小值,並傳回 theta 的最佳值。

上述範例的改良 改良方向 上例數學模型為 混成法的優點 上述方法把所有參數全部視為非線性參數。混成法將線性與非線性參數分開,各用不同的方法來處理。 上例數學模型為 、 線性參數:最小平方法,即「左除」或「\」 λ1、λ2 非線性參數: Simplex 下坡式搜尋(即 fminsearch) 混成法的優點 最小平方法能夠在非線性參數固定的情況下,一次找到最好的線性參數的值,因為搜尋空間的維度由4降為2,最佳化會更有效率

混成法範例(1/3) 使用上述混成(Hybrid)的方法,函式 errorMeasure1 須改寫成 errorMeasure2 範例10-10: errorMeasure2.m lambda 是非線性參數向量, data 仍是觀察到的資料點,a 是利用最小平方法算出的最佳線性參數向量,傳回的 squareError 仍是總平方誤差 function squaredError = errorMeasure2(lambda, data) x = data(:,1); y = data(:,2); A = [exp(lambda(1)*x) exp(lambda(2)*x)]; a = A\y; y2 = a(1)*exp(lambda(1)*x)+a(2)*exp(lambda(2)*x); squaredError = sum((y-y2).^2);

混成法範例(2/3) 欲用此混成法求出誤差平方和的最小值 範例10-11: nonlinearFit02.m load data.txt lambda0 = [0 0]; tic lambda = fminsearch(@errorMeasure2, lambda0, [], data); fprintf('計算時間 = %g\n', toc); x = data(:, 1); y = data(:, 2); A = [exp(lambda(1)*x) exp(lambda(2)*x)]; a = A\y; y2 = A*a; plot(x, y, 'ro', x, y2, 'b-'); legend('Sample data', 'Regression curve'); fprintf('誤差平方和 = %d\n', sum((y-y2).^2));

混成法範例(3/3) 此種混成法可以產生較低的誤差平方和,同時所需的計算時間也比較短。 計算時間 = 0.02 誤差平方和 = 1.477226e-001 此種混成法可以產生較低的誤差平方和,同時所需的計算時間也比較短。

變形法 我們亦可利用變形法(Transformation),將一數學模型轉換成只包含線性參數的模型。 假設一模型為: 取自然對數,可得: ln(a) 及 b 成為線性參數,我們即可用「最小平方法」找出其最佳值 範例10-12: transformFit01.m load data2.txt x = data2(:, 1); % 已知資料點的 x 座標 y = data2(:, 2); % 已知資料點的 y 座標 A = [ones(size(x)) x];

變形法範例(1/2) theta = A\log(y); subplot(2,1,1) plot(x, log(y), 'o', x, A*theta); xlabel('x'); ylabel('ln(y)'); title('ln(y) vs. x'); legend('Actual value', 'Predicted value'); a = exp(theta(1)) % 辨識得到之參數 b = theta(2) % 辨識得到之參數 y2 = a*exp(b*x); subplot(2,1,2); plot(x, y, 'o', x, y2); xlabel('x'); ylabel('y'); title('y vs. x'); fprintf('誤差平方和 = %d\n', sum((y-y2).^2)); a = 4.3282 b =-1.8235 誤差平方和 = 8.744185e-001

變形法範例(2/2) 第一個小圖是ln(y)對x的作圖, 第二個小則是 y對 x的作圖。 經由變形法之後,此最小平方法所得到的最小總平方誤差是 而不是原模型的總平方誤差: 通常E’為最小值時,E不一定是最小值,但亦離最小值不遠矣!

變形法之改進範例(1/2) 若要求取原始E的最小值,可再用 fminsearch ,並以變形法得到的 a 及 b 為搜尋的起點 範例10-13: transformFit02.m load data2.txt x = data2(:, 1); % 已知資料點的 x 座標 y = data2(:, 2); % 已知資料點的 y 座標 A = [ones(size(x)) x]; theta = A\log(y); a = exp(theta(1)) % 辨識得到之參數 b = theta(2) % 辨識得到之參數 theta0 = [a, b]; % fminsearch 的啟始參數 theta = fminsearch(@errorMeasure3, theta0, [], data2); x = data2(:, 1); y = data2(:, 2); y2 = theta(1)*exp(theta(2)*x);

變形法之改進範例(2/2) plot(x, y, 'o', x, y2); xlabel('x'); ylabel('y'); legend('Actual value', 'Predicted value'); title('y vs. x'); fprintf('誤差平方和 = %d\n', sum((y-y2).^2)); 誤差平方和 = 1.680455e-001 由上述範例可以看出,我們可以先使用變形法,先找出大略的參數值,再用 fminsearch 來對誤差平方和進行最小化,因此得到的誤差平方和,比只用變形法還要小。

可使用變形法的數學模型(1/3) 以下是一些變形法可用的非線性模型,以及相關的轉換方法: 編號 非線性模型 轉換後的線性模型 參數轉換公式 2 3

可使用變形法的數學模型(2/3) 4 5 6 7

可使用變形法的數學模型(3/3) 8 9 10

「曲線擬合工具箱」的使用(1/4) 曲線擬合包含下列幾個步驟: 觀察資料,並剔除明顯不合理的資料(這些資料在統計學上稱為 Outliers)。 根據資料,選定數學模型及相關參數。 根據線性或非線性迴歸的各種方法,以及一組給定的訓練資料(Training Data),算出參數的最佳值。 觀察模型的誤差,以及模型對於其它測試資料(Test Data)的效能,以決定此模型的適用性。若適用,則停止此演算法。反之,若不適用,則根據模型的對於訓練及測試資料的誤差程度,重新修正模型,並回到步驟 3。

「曲線擬合工具箱」的使用(2/4) 以上步驟,需要經驗,且必須反覆進行,可能耗費大量時間,有鑑於此,MathWorks 公司在 MATLAB 6.x 後,推出了「曲線擬合工具箱」(Curve Fitting Toolbox),讓使用者能以 GUI (圖形使用者介面)的方式,來進行曲線擬合,並能快速地檢視擬合的結果和成效。

「曲線擬合工具箱」的使用(3/4) 說明「曲線擬合工具箱」的使用 首先,先載入 enso.mat,裡面包含兩個變數: month:每個資料點發生的相對月份 pressure:在復活島(Easter Island)和澳洲的達爾文(Darwin)兩地的大氣壓力差值,取其整個月的平均值。此差值會導引整個南半球的貿易風(Trade Winds)流向 根據這兩個變數,就可以呼叫「曲線擬合工具箱」來進行曲線的分析與擬合 範例10-14: cftool01.m load enso.mat % 載入 month 和 pressure 變數 cftool(month, pressure); % 呼叫「曲線擬合工具箱」

「曲線擬合工具箱」的使用(4/4) 此時此工具箱會將資料點畫出來,並將相關的操作介面顯示如上圖。