美文网首页
Linear Regression

Linear Regression

作者: HengGeZhiZou | 来源:发表于2018-09-09 19:47 被阅读0次

    在线性回归模型中,我们分为单元线性回归和多元线性回归(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的逆矩阵不存在时,也无法进行计算。

    相关文章

      网友评论

          本文标题:Linear Regression

          本文链接:https://www.haomeiwen.com/subject/ivnhgftx.html