这两个成本函数是否等价于八度?

Are these two cost functions equivalent in octave?

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.

"One" 被(成功地)用于线性回归的单变量成本函数。 "One" 似乎也适用于计算多元线性回归问题的成本。

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

它们是相同的方法,还是 "One" 可能只是偶然地在多变量转换集上起作用。

我觉得第二个公式不正确。

演示:

>> 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