我正在 GNU 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
一次。作为 Octave 的新手,它似乎在 Windows 上的一个非常喜怒无常的环境中运行,我不知道如何自己进行基准测试。由于这比任何事情都更令人好奇,请随时告诉我这甚至无关紧要。
最佳答案
这将检查挂钟时间:
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
关于math - Octave:哪种方法更有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12826405/