Может кто-нибудь сказать мне, почему сигма (h0 (x (i))) равна векторизации X * theta?
Это не так. Ни в одной точке этого кода sigma(h(x_i))
не вычисляется отдельно. Переменная H
не равна этому значению, но это вектор (столбец), который хранит значения
`h(x_i)=dot_product(x_i,theta)`
для всех примеров.
Формула, которую вы даете в Latex, просто говорит что он хочет, чтобы мы суммировали ((h(x_i)-y_i))^2
по всем примерам. Чего вы хотите избежать, так это последовательно вычислять h(x_i)
для всех этих примеров, потому что это займет много времени. Из определения h(x)
вы знаете, что
#I've written a more general case, and the case `n==1` will correspond to your Latex formula)
h(x_i)=[1 x_i1 ... x_in]*[theta_0 theta_1 ... theta_n]'
Матрица X
имеет размер m*n
, где m
- количество примеров. Таким образом, каждая строка вектора
H=X*theta #H is a vector of size m*1
будет соответствовать одному h(x_i)
.
Зная это, вы можете видеть, что
S=(H-y).^2 #S is a vector of size m*1
- такой вектор что каждый элемент является одним из (h(x_i)-y_i)^2
. Итак, вам просто нужно сложить их все с sum(S)
, чтобы получить значение sigma
из вашей формулы латекса.