Linear Regression
2018-09-09 本文已影响0人
HengGeZhiZou
在线性回归模型中,我们分为单元线性回归和多元线性回归(Multivariate Linear Regression)。
在进行线性回归计算之前,我们第一步首先完成特征缩放(Feature Scaling)。
一.特征缩放(Feature Scaling)
1.普通缩放
对特征值进行缩放,使特征值在-2~2之间。
2.均值归一化(Mean Normalization)
我们将特征值设为X,mu=特征值的平均值,s=特征值的取值范围。
(X-mu)/s;
二.计算代价函数(cost function)
代价函数.png1.单元模型中
在octave中计算过程:
function J = computeCost(X, y, theta)
m = length(y);
predictions=X * theta;
sqlerror=(predictions-y).^2;
J =1/(2*m)*sum(sqlerror);
end
2.多元模型中
function J = computeCost(X, y, theta)
m = length(y);
predictions=X * theta;
sqlerror=(predictions-y).^2;
J =1/(2*m)*sum(sqlerror);
end
三.梯度下降(gradient Descent)
1.单元模型中
设置learning rate为alpha,迭代次数num_iters,进行计算。不断得到最
theta的值。
m = length(y);
J_history = zeros(num_iters, 1);
for iter = 1:num_iters
J_history(iter) = computeCost(X, y, theta);
predictions=X*theta-y;
theta(1)=theta(1)-alpha*(1/m)*sum(predictions);
theta(2)=theta(2)-alpha*(1/m)*sum(predictions.*X(:,2));
5,多元模型中
m = length(y); % number of training examples
J_history = zeros(num_iters, 1);
for iter = 1:num_iters
J_history(iter) = computeCostMulti(X, y, theta);
pre=X*theta-y;
%theta(1)=theta(1)-alpha*(1/m)*sum(pre.*X(:,1));
%theta(2)=theta(2)-alpha*(1/m)*sum(pre.*X(:,2));
%theta(3)=theta(3)-alpha*(1/m)*sum(pre.*X(:,3));
%theta=theta-alpha*(1/m)*(X'*pre);
theta = theta - alpha / m * X' * (X * theta - y);
其中利用下面的语句可以简化计算的过程:
theta = theta - alpha / m * X' * (X * theta - y);
四.正规方程(normal equation)
同样我们可以利用正规方程来对多元特征进行计算。
theta = pinv(X' * X)*X' * y
其中X'代表X的转置,使用正规方程求解不需要迭代,但是计算的量比较大,并且当X的逆矩阵不存在时,也无法进行计算。