线性回归——局部加权回归

有时候样本的波动很明显,可以采用局部加权回归,如下图,红色的线为局部加权回归的结果,

蓝色的线为普通的多项式回归的结果。蓝色的线有一些欠拟合了。

多项式回归——多一些 高次项的回归

局部加权回归的方法如下,首先看线性或多项式回归的损失函数 

很明显,局部加权回归在每一次预测新样本时都会重新确定参数,以达到更好的预测效果。当数据规模比较大的时候计算量很大,学习效率很低。并且局部加权回归也不是一定就是避免underfitting,因为那些波动的样本可能是异常值或者数据噪声。

 

多项式曲线拟合 - 知乎
https://zhuanlan.zhihu.com/p/53056358

### 关于头歌平台中的局部加权线性回归实现 #### 局部加权线性回归简介 局部加权线性回归是一种改进版的线性回归算法,它通过引入权重来解决标准线性回归可能存在的欠拟合问题[^2]。这种方法的核心在于其“局部”特性和“加权”的机制,在预测某个特定点时,会赋予靠近该点的数据更高的权重。 #### 头歌平台概述 头歌(TOOGOO)是一个专注于在线编程教育和实践的平台,提供了丰富的实验资源和项目案例。对于机器学习相关内容,尤其是像局部加权线性回归这样的算法,通常可以通过其实验环境完成模型构建、训练以及可视化操作。 #### 实现方法详解 以下是基于头歌平台实现局部加权线性回归的一般流程: 1. **导入必要的库** 需要先加载Python中常用的科学计算库,例如`numpy`用于数值运算,`pandas`处理数据集,而`matplotlib`则负责绘图展示。 ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt ``` 2. **定义核心函数** 定义一个执行局部加权线性回归的主要函数 `lwlr` ,此函数接收输入特征X、目标变量y及带宽参数k作为输入,并返回对应的预测值。 ```python def lwlr(testPoint, X, y, k=1.0): m = X.shape[0] weights = np.eye(m) for i in range(m): # 计算每个样本相对于测试点的距离并转化为权重 diff = testPoint - X[i] weights[i, i] = np.exp(diff.dot(diff.T)/(-2*k**2)) xTx = X.T @ (weights * X) # 加权后的矩阵乘法 if np.linalg.det(xTx) == 0.0: # 判断是否为奇异矩阵 raise NameError('This matrix is singular') ws = np.linalg.inv(xTx) @ (X.T @ (weights * y)) # 解方程求解系数向量ws return testPoint @ ws # 返回预测值 ``` 3. **准备数据集** 使用真实世界或者模拟生成的数据集来进行验证。可以利用Pandas读取CSV文件或将随机数列组合成DataFrame形式。 ```python data = {'feature': [i/10 for i in range(10)], 'label':[np.sin(i)+np.random.normal(scale=0.15) for i in range(10)]} df = pd.DataFrame(data=data) X = np.array(df['feature']).reshape((-1,1)) y = np.array(df['label']) ``` 4. **调用与结果分析** 对整个数据集合应用上述定义好的`lwlr` 函数逐一获取各点处估计值得到最终曲线图像表示效果如何。 ```python predictions = [] for point in X: pred = lwlr(point.reshape((1,-1)), X, y, k=0.1)[0][0] predictions.append(pred) plt.scatter(X,y,label='Original Data') # 绘制原始散点图 sorted_indices = np.argsort(X.flatten()) # 排序索引以便平滑显示趋势线 plt.plot(X[sorted_indices], np.array(predictions)[sorted_indices],'r-', label=f'Predicted Curve(k={0.1})') plt.legend() plt.show() ``` 以上就是在头歌平台上实现局部加权线性回归的一个基本框架[^3]。 #### 注意事项 - 参数调整:其中的关键超参——核宽度\(k\)的选择直接影响着模型的表现力;过大可能导致过度简化忽略细节变化规律,过小又容易陷入噪声干扰造成波动剧烈不稳现象发生。 - 数据预处理:实际工程场景下往往还需要考虑缺失值填补、异常检测剔除等工作环节以提高建模质量水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

往事如yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值