2017-10-14 138 views
1

我在理解如何矢量化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://stackoverflow.com/questions/32274474/machine-learning-linear-regression-using-batch-gradient-descent) – rayryeng

回答

1

這是一個味道的問題。通常的慣例是有矩陣向量乘法,即你喜歡什麼。您可以通過調換所有東西從一種模式切換到另一種模式。也就是說,如果你的乘法X*theta工作,那麼換位公式爲theta.' * X.'

在每個XX*theta包含一個採樣點的數據(內核函數值)。

theta.'*X約定中,包含採樣點數據的列是X

所以它總是依賴於上下文,什麼是定義爲行,什麼是列向量以及它們如何放置在較大的對象或操作中。