Ich versuche Gradientenabfallsaktualisierung zu implementieren unter Verwendung von Code aus:Gradientenabstieg Werte nicht korrekt
Gradient Descent implementation in octave
ich folgenden geänderten Code haben:
X = [1; 1; 1;]
y = [1; 0; 1;]
m = length(y);
X = [ones(m, 1), data(:,1)];
theta = zeros(2, 1);
iterations = 2000;
alpha = 0.001;
for iter = 1:iterations
theta = theta -((1/m) * ((X * theta) - y)' * X)' * alpha;
end
theta
Welche folgende Ausgabe ergibt:
X =
1
1
1
y =
1
0
1
theta =
0.32725
0.32725
Theta ist eine 1x2 Matrix, sollte aber nicht 1x3 sein wie die Ausgabe (y) ist 3x1?
Also sollte ich Theta durch das Trainingsbeispiel multiplizieren können, um eine Vorhersage zu machen, aber kann nicht x mit Theta multiplizieren, wie x ist 1x3 und Theta ist 1x2?
Update:
%X = [1 1; 1 1; 1 1;]
%y = [1 1; 0 1; 1 1;]
X = [1 1 1; 1 1 1; 0 0 0;]
y = [1 1 1; 0 0 0; 1 1 1;]
m = length(y);
X = [ones(m, 1), X];
theta = zeros(4, 1);
theta
iterations = 2000;
alpha = 0.001;
for iter = 1:iterations
theta = theta -((1/m) * ((X * theta) - y)' * X)' * alpha;
end
%to make prediction
m = size(X, 1); % Number of training examples
p = zeros(m, 1);
htheta = sigmoid(X * theta);
p = htheta >= 0.5;
wenn theta Theta 2x1 dann ist die Hypothese, Funktion h (x) = x1 * Theta? Wenn Theta 2x2 war, dann sollte die Hypothese h (x) = x1 * theta1 + theta0 und so weiter sein? – thepen
Theta wird immer '[K + 1] x D 'sein, wobei X' N x K 'und y' N x D 'ist – lejlot