[英]Gradient descent and normal equation method for solving linear regression gives different solutions
[英]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
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.