这两个成本函数是否等效于八度音程?

时间:2017-12-19 20:00:16

标签: machine-learning octave gradient-descent non-linear-regression

one = sum((X*theta) - y) .^2)/(2*m);
two = ((X'*theta - y)*(X*theta - y) ) / 2*m;

% where X' == X transpose, so I can do matrix multiplication.

“一”用于(成功)用于线性回归的单变量成本函数。 “一个”似乎也可用于计算多元线性回归问题的成本。

“Two”是在非常流行的机器学习课程中建议用于多变量方法的公式:)

它们是相同的方法,还是“一个”只是在多变量转换集合上偶然发挥作用。

1 个答案:

答案 0 :(得分:2)

第二个公式看起来不正确。

演示:

>> theta = [2;3];
>> X = [1 2; 3 4; 5 6; 7 8];
>> y = [7;8;9;10];
>> m = length(y);
>> ((X'*theta - y)*(X*theta - y) ) / 2*m
error: operator *: nonconformant arguments (op1 is 2x4, op2 is 2x1)
如果我们修复了缺少括号的问题,那么

第一个公式似乎是正确的:

>> sum(((X*theta) - y) .^2)/(2*m)
ans =  155.75

替代矢量化公式:

>> (X * theta - y)' * (X * theta - y) / (2*m)
ans =  155.75