2014-01-20 18 views
1

我知道我可以找到多項式迴歸的係數做(X'X)^-1 * X'y(其中X'是轉置,詳見Wikipedia)。多項式迴歸 - 兩種算法之間的結果準確性

這是一種查找係數的方法;現在,(至少據我所知)至少有一種方法,即通過使用梯度下降最小化成本函數。前一種方法似乎是最容易實現的(我在C++中實現了它,我在Matlab中實現了後者)。

我想知道的是這些方法之一的優點。

對於特定的數據集,只有很少的幾點,我發現我無法使用(X'X)^-1 * X'y找到令人滿意的解決方案,但漸變下降效果很好,我可以得到一個合理的估計函數。

那麼,梯度下降時的矩陣分辨率有什麼問題?如何測試迴歸結果,讓用戶隱藏所有細節?

+0

兩種方法都應產生相同的結果。如果不是,你要麼有一個(幾乎)奇異矩陣X,要麼在某個地方犯了一個錯誤。也許你嘗試了太少分?與您想要確定的係數數量相比,點數必須大於或等於。 – pentadecagon

+3

這個問題似乎是題外話,因爲它屬於math.stackexchange.com – codeling

+1

不,它不屬於數學stackexchange。這是一個關於機器學習算法的問題。衆所周知,機器學習是讓計算機在沒有明確編程的情況下采取行動的科學。因此,這是一個stackoverflow問題。 – CTZStef

回答

2

這兩種方法都是等價的。由於較低的存儲量和避免矩陣反演計算,迭代法的計算效率更高。該方法超過了封閉形式(矩陣方程)方法especially when X is huge and sparse

確保X的行號大於X的列號以避免未確定的問題。還要檢查條件號X'X,看看問題是不適宜的。如果是這種情況,您可以在封閉格式((X'X + lambda * I)^(-1) * X'y)中添加一個小的正則化因子,其中lambda是一個小值,I是單位矩陣。

+0

y的長度根據定義等於X中的行數。我認爲你的意思是X中的特徵數量(例如列數)應該小於行數。 – CTZStef

+0

是的,我糾正了。感謝您指出。 – lennon310

+0

我想知道是否數學證明兩種算法都能產生相同的結果。我猜這不是,因爲梯度下降可能會收斂到當地最低... – CTZStef