【机器学习算法】之线性回归分析

本文详细介绍了线性回归的基本概念及其在数学表达式中的简化形式,包括如何通过矩阵运算求解模型参数。进一步阐述了线性回归的局限性及如何通过局部加权线性回归进行改进,以应对复杂数据模型的需求。同时,提供了一个简洁的Python程序实现案例,展示了如何在实际场景中应用这些技术。

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

一.算法介绍

1.模型:y=xw
线性回归建立的模型非常简单,就是简单的线性组合。
2. 策略
使用平方损失函数:
这里写图片描述
3.算法
直接改写成矩阵相乘形式,即可得到闭式解。
这里写图片描述
上述是最基本的线性回归的用法,但是在实际应用中,从最基本的线性回归中还可以引申出多种形式。

局部加权线性回归:
参见博客 http://blog.youkuaiyun.com/silence1214/article/details/7764137
局部加权线性回归主要是用于解决线性回归模型太简单这个问题,往往实际需要拟合的模型不仅仅是线性模型这么简单。但是这种算法容易产生过拟合,而且计算复杂度较高。每次需要预测一个值的时候都需要遍历整个数据集来训练得到一个模型,这点比较像KNN。局部加权线性回归在损失函数里面加了一个权重矩阵,如下:

岭回归:
同样是修改损失函数,改成了如下形式:
这里写图片描述
以前上课的时候还以为这样做的目的是为了防止过拟合。但是想了一下,线性回归这么简单的模型,哪里会存在过拟合啊!实际上之所以引入 是为了预防异常数据点的情况。 平方损失函数对异常数据点还是很敏感的,当X不是列满秩时,或者某些列之间的线性相关性比较大时, 的行列式接近于0,这时候求解得到的模型就很不稳定了。此时 惩罚项就会起作用。
在实际应用中,数据的形式是多种多样的,数据的预处理还是很重要的。

二.python程序实现

def standRegres(xArr,yArr):
    xMat = mat(xArr); yMat = mat(yArr).T
    xTx = xMat.T*xMat
    if linalg.det(xTx) == 0.0:
        print "This matrix is singular, cannot do inverse"
        return
    ws = xTx.I * (xMat.T*yMat)
    return ws

代码实现也很简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值