機器學習之梯度下降演算法Gradient Descent
梯度下降演算法:
機器學習實現關鍵在於對引數的磨合,其中最關鍵的兩個數:代價函式J(θ),代價函式對θ的求導∂J/∂θj。
如果知道這兩個數,就能對引數進行磨合了:其中 α 為每步調整的幅度。
其中代價函式公式J(θ):
代價函式對θ的求導∂J/∂θj:通過不斷減低代價函式而得到準確的引數。
例如:
演算法執行過程:給定初始引數p0,p1,通過演算法一步一步調整P0,P1,使得J變小。
梯度下降演算法適用範圍:監督學習。
監督學習有兩類問題:1.迴歸問題。2.分類問題。
1迴歸問題。
如房價預測。y = x1p1+x2p2+x3p3...;
計算代價函式時h(x) = x1p1+x2p2+x3p3...
2分類問題
如良性惡性腫瘤預測。y = sigmoid( x1p1+x2p2+x3p3....)有關;其中sigmoid(x) = 1/(1+ exp(-x))
cost J : = -log(h(x) ) if y = 1;
-log(1-h(x)) if y =0;
結合起來可得
MATLAB編碼過程:
1.錄入資料:
data = load('data.txt');
X = data(:, 1); y = data(:, 2);
X = [ones(m, 1), data(:,1)]; % Add a column of ones to x
2.計算代價函式cost funtion:
迴歸問題:J = sum((sum(theta' .* X,2) - y).^2)/(2*m);其中(sum(theta' .* X,2)為h(x)
分類問題:J = sum(-y.*log(sigmoid(sum((theta' .* X),2))) - (1-y).*log(1-sigmoid(sum((theta' .* X),2))))/m;
3.執行gradient Descent梯度下降演算法:
預設引數theta,調整幅度alpha,調整次數iterations;
theta =gradientDescent(X, y, theta, alpha, iterations)
for iter = 1:num_iters
old_theta = theta;
theta(1)= theta(1) - alpha* sum((sum(old_theta' .* X,2) - y).*X(:,1))/m;
theta(2) = theta(2) - alpha* sum((sum(old_theta' .* X,2) - y).*X(:,2))/m;
end
}