成本函数中的 X*theta 是如何产生的?
How does X*theta in cost function from?
在线性回归中,成本函数为:
Octave中的代码是:
function J = computeCost(X, y, theta)
%COMPUTECOST Compute cost for linear regression
% J = COMPUTECOST(X, y, theta) computes the cost of using theta as the
% parameter for linear regression to fit the data points in X and y
% Initialize some useful values
m = length(y); % number of training examples
% You need to return the following variables correctly
J = 0;
% ====================== YOUR CODE HERE ======================
% Instructions: Compute the cost of a particular choice of theta
% You should set J to the cost.
H = X*theta;
S = (H - y).^2;
J = 1 / (2*m) * sum(S);
% =========================================================================
end
有人能告诉我为什么 sigma(h0(x(i))) 等于矢量化 X*theta 吗?
谢谢
Could someone tell me why sigma(h0(x(i))) is equal to a vectorization X*theta?
事实并非如此。此代码中的任何一点都不会单独计算 sigma(h(x_i))
。变量 H
不等于该值,但它是一个存储值
的(列)向量
`h(x_i)=dot_product(x_i,theta)`
对于所有示例。
您在 Latex 中给出的公式只是说它希望我们对所有示例求和 ((h(x_i)-y_i))^2
。您要避免的是以顺序方式为所有这些示例计算 h(x_i)
,因为这会很耗时。根据 h(x)
的定义,您知道
#I've written a more general case, and the case `n==1` will correspond to your Latex formula)
h(x_i)=[1 x_i1 ... x_in]*[theta_0 theta_1 ... theta_n]'
矩阵 X
的大小为 m*n
,其中 m
是样本数。所以向量的每一行
H=X*theta #H is a vector of size m*1
将对应单个h(x_i)
。
知道了这些,就可以看出
S=(H-y).^2 #S is a vector of size m*1
是一个向量,每个元素都是 (h(x_i)-y_i)^2
之一。因此,您只需将所有这些与 sum(S)
相加即可从 Latex 公式中获取 sigma
的值。
我使用八度表示法和语法来编写矩阵:'comma' 用于分隔列项,'semicolon' 用于分隔行项,'single quote' 用于转置。
问题中 Latex 表达式的第二行仅对一个训练示例有效,x 是 '(f+1) x 1' 矩阵或列向量。具体来说 x =
[x0; x1; x2; x3; .... xf]
x0 始终为“1”。这里 'f' 是特征数。
theta =
[θ0; θ1; θ2; θ3; .... thetaf].
'theta' 是列向量或“(f+1) x 1”矩阵。 theta0 是截距项。
在这种具有一个训练示例的特殊情况下,通过取 theta' 和 x 形成的 '1 x (f+1)' 矩阵可以相乘得到正确的 ' 1x1'假设矩阵或实数。
h = theta' * x
如第二行的Latex表达式是有效的。
但是表达式m = length(y)
表示有多个训练样例。使用 'm' 个训练示例,X 是一个 'm x (f+1)' 矩阵。
为简化起见,假设有两个训练示例,每个示例都具有 'f' 个特征。
X = [ x1; x2].
(请注意括号内的1和2不是指数项,而是训练样例的索引)。
这里,x1 = [ x01, x11,x21,x3 1, .... xf1 ]
和
x2 = [ x02, x1 2, x22, x32, .... xf2].
所以 X 是一个“2 x (f+1)”矩阵。
现在回答问题,theta'是一个'1 x (f+1)'矩阵,X是一个'2 x (f+1)'矩阵。有了这个,有效的表达式是 X * theta
。
Latex 中的表达式 theta' * X
变得无效。
我的示例中的预期假设矩阵“h”应该有两个预测值(两个实数),两个训练示例各有一个。 'h' 是一个 '2 x 1' 矩阵或列向量。
假设可以通过使用表达式X * theta
得到,它是有效的并且在代数上是正确的。将“2 x (f+1)”矩阵与“(f+1) x 1”矩阵相乘得到“2 x 1”假设矩阵。
在线性回归中,成本函数为:
Octave中的代码是:
function J = computeCost(X, y, theta)
%COMPUTECOST Compute cost for linear regression
% J = COMPUTECOST(X, y, theta) computes the cost of using theta as the
% parameter for linear regression to fit the data points in X and y
% Initialize some useful values
m = length(y); % number of training examples
% You need to return the following variables correctly
J = 0;
% ====================== YOUR CODE HERE ======================
% Instructions: Compute the cost of a particular choice of theta
% You should set J to the cost.
H = X*theta;
S = (H - y).^2;
J = 1 / (2*m) * sum(S);
% =========================================================================
end
有人能告诉我为什么 sigma(h0(x(i))) 等于矢量化 X*theta 吗?
谢谢
Could someone tell me why sigma(h0(x(i))) is equal to a vectorization X*theta?
事实并非如此。此代码中的任何一点都不会单独计算 sigma(h(x_i))
。变量 H
不等于该值,但它是一个存储值
`h(x_i)=dot_product(x_i,theta)`
对于所有示例。
您在 Latex 中给出的公式只是说它希望我们对所有示例求和 ((h(x_i)-y_i))^2
。您要避免的是以顺序方式为所有这些示例计算 h(x_i)
,因为这会很耗时。根据 h(x)
的定义,您知道
#I've written a more general case, and the case `n==1` will correspond to your Latex formula)
h(x_i)=[1 x_i1 ... x_in]*[theta_0 theta_1 ... theta_n]'
矩阵 X
的大小为 m*n
,其中 m
是样本数。所以向量的每一行
H=X*theta #H is a vector of size m*1
将对应单个h(x_i)
。
知道了这些,就可以看出
S=(H-y).^2 #S is a vector of size m*1
是一个向量,每个元素都是 (h(x_i)-y_i)^2
之一。因此,您只需将所有这些与 sum(S)
相加即可从 Latex 公式中获取 sigma
的值。
我使用八度表示法和语法来编写矩阵:'comma' 用于分隔列项,'semicolon' 用于分隔行项,'single quote' 用于转置。
问题中 Latex 表达式的第二行仅对一个训练示例有效,x 是 '(f+1) x 1' 矩阵或列向量。具体来说 x =
[x0; x1; x2; x3; .... xf]
x0 始终为“1”。这里 'f' 是特征数。
theta =
[θ0; θ1; θ2; θ3; .... thetaf].
'theta' 是列向量或“(f+1) x 1”矩阵。 theta0 是截距项。
在这种具有一个训练示例的特殊情况下,通过取 theta' 和 x 形成的 '1 x (f+1)' 矩阵可以相乘得到正确的 ' 1x1'假设矩阵或实数。
h = theta' * x
如第二行的Latex表达式是有效的。
但是表达式m = length(y)
表示有多个训练样例。使用 'm' 个训练示例,X 是一个 'm x (f+1)' 矩阵。
为简化起见,假设有两个训练示例,每个示例都具有 'f' 个特征。
X = [ x1; x2].
(请注意括号内的1和2不是指数项,而是训练样例的索引)。
这里,x1 = [ x01, x11,x21,x3 1, .... xf1 ] 和 x2 = [ x02, x1 2, x22, x32, .... xf2].
所以 X 是一个“2 x (f+1)”矩阵。
现在回答问题,theta'是一个'1 x (f+1)'矩阵,X是一个'2 x (f+1)'矩阵。有了这个,有效的表达式是 X * theta
。
Latex 中的表达式 theta' * X
变得无效。
我的示例中的预期假设矩阵“h”应该有两个预测值(两个实数),两个训练示例各有一个。 'h' 是一个 '2 x 1' 矩阵或列向量。
假设可以通过使用表达式X * theta
得到,它是有效的并且在代数上是正确的。将“2 x (f+1)”矩阵与“(f+1) x 1”矩阵相乘得到“2 x 1”假设矩阵。