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)

代价函数.png
1.单元模型中

在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的逆矩阵不存在时,也无法进行计算。

上一篇下一篇

猜你喜欢

热点阅读