回归模型——线性回归

线性回归是回归模型中最简单的一种。

        最近在做一个预测指数的项目,整理输入数据之后,用线性回归模型试了一下,总体上效果一般般。

一、 回归模型

输入:

 

其中N为特征的维数。

每一维特征对应一个basis function,记为

权值:

假设预测目标是输入特征向量的基函数的线性组合,则

 

假设预测值y与实际值h之间的噪声 服从高斯分布:

此时,maximum likelihood等价于least square error,

 

    误差平方和为:

       

    为了防止出现过拟合,加上正则项:

       

目标函数:

       {E}

       解得,

             

                      

二、 算法实现

以下是用matlab实现的线性回归模型代码:

%load data
    input = load('xxxx');
    
    
  
    [len dim] = size(input);
    
    %取一部分做为训练集
    s1 = floor(len*0.8);
    input1 = input(1:s1, :);
    input2 = input(s1+1:len, :);
    
    %计算健康指数
    k = 0.2;
    H = zeros(len, 1);
    H(:, 1) = (1 - k) * (1 - data(:, 3)) + k * data(:, bbb+1);
    H1 = H(1:s1, :);
    H2 = H(s1+1:len, :);
    
    
    
    
    %计算每个特征的均值和方差
    args = zeros(dim, 2);
    for i = 1 : dim
        factor = input1(:, i);
        args(i, 1) = mean(factor);
        args(i, 2) = var(factor);
    end
    
    %得到PHI矩阵
    PHI = zeros(s1, dim);
    for i = 1:s1
        for j = 1:dim
            PHI(i, j) = Phi(input1(i, j), args(j, 1), args(j, 2));
        end
    end
    
    %计算最后的权值
    lamda = 15;
    I = eye(dim);
    W = (inv(lamda .* I + PHI' * PHI)) * PHI' * H1;
    
    PDICT = zeros(len-s1, 2);
    PDICT(:, 1) = H2(:, 1);
    for i = 1:len-s1
        PDICT(i, 2) = Predict(input2(i, :), W, args);
    end
    
    E = zeros(len-s1, 1);
    E(:, 1) = (PDICT(:, 1) - PDICT(:, 2));
    E(:, 1) = E(:, 1) .* E(:, 1);
    
    Erms = sqrt(sum(E)/(len-s1));


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值