【问题标题】:Are these two cost functions equivalent in octave?这两个成本函数在倍频程中是否等效?
【发布时间】:2018-06-02 07:46:33
【问题描述】:
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”是否只是在多变量转换集上发挥作用。

【问题讨论】:

  • 取决于Xthetay的尺寸。
  • 是的,很好,想法是任何类型的矩阵乘法都是可能的,在这种情况下,所有矩阵中的所有值都是实数。

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


【解决方案1】:

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

演示:

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

【讨论】:

  • 是的,很好 - 谢谢。事实证明,在像 Octave 中构建这样的方程时,展开这样的方程只会让事情变得清晰。
猜你喜欢
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多