Как функционирует X * тета в стоимости? - PullRequest
1 голос
/ 14 января 2020

В линейной регрессии есть функция стоимости как:

https://i.stack.imgur.com/TPOVM.png

Код в октаве:

function J = computeCost(X, y, theta)
%COMPUTECOST Compute cost for linear regression
%   J = COMPUTECOST(X, y, theta) computes the cost of using theta as the
%   parameter for linear regression to fit the data points in X and y

% Initialize some useful values
m = length(y); % number of training examples

% You need to return the following variables correctly 
J = 0;

% ====================== YOUR CODE HERE ======================
% Instructions: Compute the cost of a particular choice of theta
%               You should set J to the cost.

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

% =========================================================================

end

Может кто-нибудь сказать мне, почему сигма (h0 (x (i))) равна векторизации X * theta?

Спасибо

1 Ответ

1 голос
/ 14 января 2020

Может кто-нибудь сказать мне, почему сигма (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 из вашей формулы латекса.

...