2012-10-10 100 views
3

我正在嘗試GNU Octave中的一些機器學習算法,如平方誤差成本函數。我文中說適當的矢量forumula是:Octave:哪種方法更高效

J = (X * theta - y)' * (X * theta - y) * (1/(2*m) 

其中X是m x n+1矩陣,THETA是n+1 x 1向量,而y是一個m x 1載體。我的問題是第二種方法是否有點快:

J = sum((X * theta - y).^2) * (1/(2*m)) 

,因爲它只計算X * theta -y一次。作爲八度音樂的新手,似乎在Windows的非常氣質的環境中運行,我不知道如何做自己的基準測試。

由於這比任何事情都更好奇,請隨時告訴我,這根本就不重要。

+0

確定的公式產生相同的結果嗎?如果你想優化,爲什麼不寫: 'TMP =(X * theta-y)' 'J = TMP'* TMP *(1 /(2 * m)) –

回答

3

這將檢查時鐘時間:

octave:2> tic; sleep(3); toc 
Elapsed time is 3.00161 seconds. 
octave:3> help tic 

決議並不太大,因此你可能需要在一個循環中運行計算數次。

測量CPU時間,使用cputime

octave:7> cputime() 
ans = 0.21000 
octave:8> sleep(3) 
octave:9> cputime() 
ans = 0.21000 
+0

謝謝,那些將會是有用。 – Indigenuity