2012-01-22 66 views
2

我有一個非常簡單的問題。我有擬合數據中的多項式,matlab

x = [1 2 3 4 5]; 
y = [5.5 43.1 128 290.7 498.4]; 
p = polyfit(x,y,3); 
x2 = 1:.1:5; 
y2 = polyval(p,x2); 
plot(x,y,'o',x2,y2) 
grid on 

我怎麼能證明與polyfit(X,Y,4),我得到非顯著的參數,所以我應該只polyfit(X,Y,3); 問候,

回答

1

雖然WebMonster的使用學習和測試集的建議是一般非常有價值的,對於數據集,你只要不使用。

一般而言一個n階多項式由n+1參數確定。所以你至少需要n+1數據點才能適合你的數據。爲了找到係數(即參數),我們只是表示所有xyf(x) = y,它們是n+1方程中的n+1未知數,並且只要所有的x-值都是唯一的,就可以精確地求解。當你有更多的數據點(方程)比未知時,可以計算出一個最好的解決方案(通常是最小二乘)解決方案。這是將模型與數據點之間的距離最小化的解決方案。

而這也給了什麼與您的數據集發生的一些直覺。您有5個點,所以四階多項式可以在您提供的點上完美地擬合數據。這意味着測量中出現的任何噪聲都將成爲您模型的一部分,即如果您的數據不包含任何干擾(噪聲),則您獲得的模型僅爲無偏差。

然而,從這個小數據量,你不能斷定你要麼使用第三或第四階模型。爲此,您需要更多信息。您要麼需要更多的數據點,要麼需要現場信息。例如。如果您知道數據是由可由三階多項式描述的系統生成的,那麼(很可能)您應該使用該數據。使用這個小證據的四階模型顯然是荒謬的(因爲你後來認爲你的測量是完美的),選擇三階模型同樣愚蠢,「僅僅因爲四階模型不會做」。

我計算的最小二乘成本函數爲您的數據(這是由polyfit最小化成本函數),即

for n = 1:4 
    p = polyfit(x,y,n); 
    ym = polyval(p,x); 
    e = y - ym; 
    V(n) = sum(e.^2)/2 
end 

的成本函數V(n)是你的模型多麼嚴重的執行措施每一個訂單n,成本越高,你的配合越差。我計算了V= [6269, 28.885, 28.621, 6.083e-25]。由此可以清楚地看到,線性(一階)模型的擬合非常差,而四階模型具有(接近)完美擬合(成本實際上等於零)。但是二階和三階模型的性能非常相似。引入第三個參數僅降低成本0.264

您可以瞭解您的所有數據點與模型的偏差:d = sqrt(2*V)。對於第二個訂單,這是7.601,而對於第三個訂單,這只是7.566,因此您正在查看的差異小於0.04(以您的y軸爲單位)來判斷您的模型。

如果您選擇三階模型,這意味着您認爲這種差異顯着。只要看看你最後的測量結果,這相當於0.007%的相對不確定性。長話短說:我非常懷疑三階模型明顯優於二階模型。就我個人而言,我會從這些數據中選擇二階模型。

我很快檢查了這些模型與AICMDL準則的調整成本函數,這些模型表明二階模型也優於三階模型。這些成本函數包括增加模型複雜性的懲罰(即Occam's Razor),以防止過度擬合。

請注意,所有這些與模型在現實生活中的表現無關。你真的需要更多的數據才能得出合理的結論。當您包含更多測量時,您可能需要第四個或更高階模型。

2

當您使用更多的參數時,應該會導致過度擬合:樣本點中的誤差最小,但適合其他點(您的擬合模型的泛化能力)會降低。這在機器學習中被稱爲bias-variance權衡。

我會選擇一個數據點的隨機子集(訓練集),使用3階和4階多項式進行擬合,而不是獲取錯過點(驗證集)的MSE。如果3階測試集的誤差較小,則4階多項式會導致過擬合。

這不是一個數學上嚴格的方法,但可能會提供一個良好的經驗性的理由。