前向逐步线性回归算法

本文介绍了前向逐步线性回归算法,作为改进线性回归的手段,通过贪心策略逐步减少误差。算法通过迭代比较每个属性值的修改对误差的影响,选择最有利的修改以优化模型。在源代码解析中,展示了数据加载、损失值计算、前向逐步减少误差的过程,并用matplotlib展示属性参数变化。结果表明,部分属性对预测影响较大,而有些属性可忽略,这种方法有助于数据集的精简。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

前一篇博客,我们使用了缩减法中的岭回归来改进线性回归算法。其好处是能够减少过拟合,增大模型方差减小偏差。此博客将使用另一种方法对线性回归算法进行改进,其主要目的是找出对结果影响最大的几个属性值。

背景

和岭回归一样,lasso是也是属于缩减法的一种。但是由于其计算比较复杂,繁琐,我们使用另外一个简单的算法进行替代,这个算法就是前向逐步算法,该算法可以达到和lasso算法几乎一样的结果。

这里前向逐步算法主要使用了贪心算法的思想,即每进行一步都要减少误差,直到最后迭代结束。

前向逐步算法原理分析

该算法使用两层循环,第一层是迭代次数,第二层是属性值。

主要步骤如下:

对数据进行标准化处理
第一层循环迭代次数:
	初始化一个损失值F
	第二层属性值个数:
		对每个属性进行添加(减少)步长
		计算修改之后的属性值乘以数据,即计算当前预测值
		计算预测值和实际值的差平方和B
		如果B小于F:
			则修改成功,保持修改、
		否则:
			不进行修改

其主要步骤就是在每次迭代中,对每个属性值进行修改,然后使用修改后的属性值参数进行预测,通过计算差平方和,来判定修改是否有利于减少误差,再决定是否进行此次修改。

就这样一步一步的去减少误差,总的方向是向着减少误差的方向前进,所以该算法命名为 前向逐步算法

源代码解析

1. 加载数据

#加载数据
def LoadData(filename):
    dataMat = []
    labelMat = []
    with open(filename) as f:
        numFeat = len(f.readline().split('\t'))-1#这里会导致忽略第一个数据
        f.seek(0)#避免第一条数据丢失
        for line in f.readlines():
            lineArr = []
            curLine = line.strip().split('\t')
            for i in range(numFeat)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值