Я пробую некоторые алгоритмы машинного обучения в GNU Octave, такие как функция стоимости ошибки в квадрате. В тексте, который у меня есть, говорится, что правильная векторизованная формула:
J = (X * theta - y)' * (X * theta - y) * (1/(2*m)
где X — матрица m x n+1
, тета — вектор n+1 x 1
, а y — вектор m x 1
. Мой вопрос в том, является ли этот второй способ немного быстрее:
J = sum((X * theta - y).^2) * (1/(2*m))
так как он вычисляет X * theta -y
только один раз. Будучи новичком в октаве, которая, кажется, работает в очень темпераментной среде на Windows, я не знаю, как самостоятельно проводить бенчмаркинг.
Поскольку это скорее любопытство, чем что-либо еще, не стесняйтесь сказать мне, что это даже не имеет значения.
TMP = (X * theta - y)
J = TMP' * TMP * (1/(2*m))
- person Deer Hunter   schedule 11.10.2012