簡體   English   中英

梯度下降和正態方程為多元線性回歸給出不同的 theta 值。為什么?

[英]Gradient Descent and Normal Equation give different theta values for multivariate linear regression.Why?

梯度下降的矢量化實現

for iter = 1:num_iters

 theta = theta - (alpha / m) * X' * (X * theta - y);   
 J_history(iter) = computeCostMulti(X, y, theta);

end

computeCostMulti() 的實現

function J = computeCostMulti(X, y, theta)
 m = length(y);
 J = 0;
 J = 1 / (2 * m) * (X * theta - y)' * (X * theta - y);

正規方程實現

theta = pinv(X' * X) * X' * y;

對於相同的 X 和 y 值,這兩種實現會收斂到不同的 theta 值。 正態方程給出了正確的答案,但梯度下降給出了錯誤的答案。

梯度下降的實現有什么問題嗎?

我想當你使用梯度下降時,你首先使用特征縮放來處理你的輸入。 這不是用正常方程方法完成的(因為不需要特征縮放),這應該導致不同的 theta。 如果您使用模型進行預測,它們應該得出相同的結果。

沒關系。 由於您沒有進行特征縮放以使用正規方程,您會發現預測是相同的

沒有人向你保證固定步長的梯度下降會通過num_iters次迭代收斂到局部最優值。 您需要迭代直到滿足一些明確定義的收斂標准(例如梯度接近於零)。

如果您在梯度下降之前對訓練數據進行了歸一化處理,那么您還應該使用輸入數據進行預測。 具體來說,你的新輸入數據應該是這樣的:

[1, (x-mu)/sigma]

其中:
- 1是偏置項
- mu是訓練數據的平均值
- sigma是訓練數據的標准差

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM