机器学习-线性回归-过拟合问题

本文主要探讨线性回归的拟合情况,包括欠拟合和过拟合的表现及原因,欠拟合可通过多项式扩展解决,但可能导致过拟合。介绍了线性回归应对过拟合的正则化方案,有L1 - normal和L2 - normal两个正则化项,并比较了二者特点,还提及结合二者的Elasitc Net算法。

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

一、线性回归的拟合情况

       欠拟合:模型在训练过程中,模型在训练集和测试集中的表现差,即模型的泛化能力弱。

       过拟合:模型在训练过程中,模型在训练集上变现非常好但在测试集上表现差,即模型的泛化能力太强。

   

        从左上往右下,依次第一幅图是原始样本分布,第二幅图明显过度迎合数据,已经过拟合了,第三幅图明显偏移数据过多是欠拟合,最后一幅图训练比较少维度不过高且很好的拟合了数据属于拟合性较好的情况。

       线性回归欠拟合一般是因为数据特征不够或数据太少。

       在线性回归中,出现欠拟合往往使用多项式扩展,将数据由低维映射到高维。

       比如:有个样本为[2, 3]

                  二项式扩展为:[2, 3, 4, 9, 6]

                  三项式扩展为:[2, 3, 4, 9, 6, 8, 27, 12, 18]

       但是随着维度的增高,数据的增大,会出现维度过多,进而导致过拟合。

        

       当维度是一阶时无法很好的拟合数据,当维度是五阶时,模型能很好地拟合数据,但是当维度扩展到九阶时,维度过深,运算复杂度大大增加,且容易迎合异常数据导致过拟合。

二、线性回归应对过拟合的原理

       正则化

       正则化是线性回归应对过拟合问题的方案,其有两个正则化项L1-normal和L2-normal

       正则化项其实是在线性回归损失函数的基础上加入了的惩罚项。

      原始的损失函数:

          \large J(\theta )=\frac{1}{2}(h_\theta (x^{(i)})-y^{(i)})^2

       L1-normal

          \large \large \large J(\theta )=\frac{1}{2}(h_\theta (x^{(i)})-y^{(i)})^2+\lambda \left | \sum_{i=0 }^{n }\theta _{j} \right |      \large \lambda >0

      L2-normal:

         \large \large \large J(\theta )=\frac{1}{2}(h_\theta (x^{(i)})-y^{(i)})^2+\lambda\sum_{i=0 }^{n }\theta _{j} ^2          \large \lambda >0

      L1-normal又称LASSO回归,L2-normal又称Ridge回归。

      

      左边的图为L1-normal,右边的图为L2-normal。(可将\large \beta看作\large \theta)

      等高线部分表示损失函数,中心点表示实际的最优的结果,蓝色区域代表\large \beta _1+\beta _2的取值范围。我们希望参数值\large \beta足够小同时保证\large \beta值距离中心点最近,也就是其和等高线相切的那个点。

      在L2-normal,对于各个维度的参数是缩放在一个圆里面的,几乎不可能有导致维度参数\large \beta为0的情况,因此不会产生稀疏解;而L1-normal对于各个维度的参数是缩放在一个菱形里的,很有可能在某些情况下产生维度参数\large \beta为0的情况,导致产生了稀疏解。

三、L1-normal和L2-normal的比较

      L1-normal(LASSO)的惩罚项是一个绝对值参数,有较高的求解速度

      L2-normal(Ridge)在进行完数据清洗,清除完冗余特征后,有较高的准确率、鲁棒性和稳定性

      如果要将L1-normal和L2-normal结合起来使用就是Elasitc Net算法(弹性网络算法)

      \large J(\theta )=\frac{1}{2}(h_\theta (x^{(i)})-y^{(i)})^2+\lambda \left [ p\lambda \theta_j ^{2}+(1-p)\left | \theta _{j} \right | \right ] \left\{\begin{aligned} \lambda >0 \\ p\epsilon [0, 1] \\ \end{aligned} \right.

### 线性回归基础知识与入门教程 线性回归是一种用于建模特征(自变量)和响应变量(因变量)之间线性关系的方法[^4]。它广泛应用于数据分析和机器学习领域,能够帮助我们理解和预测连续型目标变量。 #### 1. 基本概念 简单线性回归涉及单个输入变量 \(x\) 和输出变量 \(y\) 的关系,通常表示为: \[ y = w_1x + b \] 其中 \(w_1\) 是权重(斜率),\(b\) 是偏置项(截距)。对于多个输入变量的情况,则扩展为多元线性回归形式: \[ y = w_1x_1 + w_2x_2 + \dots + w_nx_n + b \] 如果存在非线性关系,可以通过引入高次幂或其他变换来拟合更复杂的模式,例如二次项或三次项的关系[^1]。 #### 2. 使用 Python 实现线性回归 `scikit-learn` 提供了一个强大的工具 `LinearRegression()` 来快速构建线性回归模型。以下是基本用法示例: ```python from sklearn.linear_model import LinearRegression import numpy as np # 创建样本数据 X = np.array([[1], [2], [3], [4], [5]]) y = np.array([2, 4, 6, 8, 10]) # 初始化并训练模型 model = LinearRegression() model.fit(X, y) # 输出回归系数和截距 print(f"回归系数: {model.coef_[0]}") # 回归系数对应于 w1 print(f"截距: {model.intercept_}") # 截距对应于 b ``` 通过上述代码,我们可以轻松获取模型的参数,并进一步利用这些参数进行预测操作。 #### 3. 学习资源推荐 为了深入掌握线性回归的知识体系,建议参考 Andrew Ng 教授在斯坦福大学开设的《Machine Learning》课程[^2]。该课程不仅涵盖了理论基础,还包括实际案例的应用方法,非常适合初学者逐步提升自己的技能水平。 此外,《Python从零到壹》系列文章也提供了详尽的内容梳理,特别是关于回归分析的部分,包含了大量实例说明以及代码演示。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值