Coursera机器学习:渐变下降矢量化

问题描述:

我在理解如何矢量化Coursera上的机器学习课程中的函数时遇到了问题。Coursera机器学习:渐变下降矢量化

在过程中,安德鲁·吴解释说,假设可以被矢量对θ乘以X的转置:

H(x) = theta' * X 

我的第一个问题是,当我实现这个练习。为什么纸上的矢量化是theta乘以x的转置,而在octave上它是X的theta?

theta'*X % leads to errors while multiplying 

我的第二个问题跟在第一个问题后面。

当我想向量化这笔梯度下降函数:

sum((h(x)-y)*x)) 

我真的不明白你是如何得到这个曾经矢量:

X'*(h(x)-y) 

任何人都可以解释一下吗?

+1

要回答这个问题,知道矩阵的大小(X,theta,x,y ...)很重要。顺便说一句,你不应该使用'''作为转置,使用'。'' – Andy

+0

谢谢你的回答。目前我的X值是一个47x3的矩阵,填充了1和值可在这里:https://github.com/yhyap/machine-learning-coursera/blob/master/mlclass-ex1/ex1data2.txt。第三列是y(47x1矩阵)。 Theta是[0; 0; 0]。在这个特定的情况下,你知道我们为什么可以用这种方式进行验证吗? – etiennefr

+0

[机器学习 - 使用批梯度下降的线性回归]的可能重复(https://*.com/questions/32274474/machine-learning-linear-regression-using-batch-gradient-descent) – rayryeng

这是一个味道的问题。通常的惯例是有矩阵向量乘法,即你喜欢什么。您可以通过调换所有东西从一种模式切换到另一种模式。也就是说,如果你的乘法X*theta工作,那么换位公式为theta.' * X.'

在每个XX*theta包含一个采样点的数据(内核函数值)。

theta.'*X约定中,包含采样点数据的列是X

所以它总是依赖于上下文,什么是定义为行,什么是列向量以及它们如何放置在较大的对象或操作中。