信息检索与数据挖掘 | (十)线性回归与逻辑回归
发布时间:2024年01月24日
📚线性回归算法流程
📚Bias and variance
- error原因——bias(模型偏差)和variance(数据方差):
- 数学原理:
- 随机变量x的均值为
μ
\mu
μ,方差为
σ
2
\sigma^2
σ2
- 随机采样N个点,其均值不等于
μ
\mu
μ,但是期望等于
μ
\mu
μ,是无偏的 ,均值的方差是
σ
2
/
N
\sigma^2/N
σ2/N
- N个点的方差记为
s
2
s^2
s2,方差的期望为
(
N
?
1
)
/
N
?
σ
2
(N-1)/N·\sigma^2
(N?1)/N?σ2,不等于
σ
2
\sigma^2
σ2
- 用bias表示整体距离实际值的距离,用variance表示点的分散程度
每次采样一个训练集,训练一个模型,采样100次
模型会更拟合数据点,各个模型直接的差别很大,所以简单的模型受采样数据的影响更小
-
模型分析:
- 我们对每个模型f*取均值,看是否接近真实的模型f,如果差得远,则bias大,接近则bias小
- 大bias小variance可能是欠拟合,而小bias大variance可能是过拟合。
- 如果数据无法很好的拟合训练集,则会有大bias,欠拟合;如果可以很好拟合训练集,但是在测试集上表现不好,会有大的variance,过拟合。
-
解决方法:
- 对于大bias欠拟合来说,可以重新选择模型,增加输入特征,或者是使用更复杂的模型,或者进行交叉验证
- 对于大variance过拟合来说,可以增加数据集的数量,或者是引入正则项
- 在bias和variance之间存在trade-off,可以选择模型使得total-error最小即可。
📚过拟合&欠拟合
- 欠拟合:
- 定义:模型无法捕捉数据中的规律和复杂性,表现为训练误差和测试误差都较高。
- 原因:模型的复杂度不够,无法很好地拟合数据。
- 解决方法:提高模型复杂度、增加特征数量、增加模型的学习能力等。
- 过拟合:
- 定义:模型过度拟合了训练数据的噪声和细节,表现为在训练集上表现良好,在测试集上表现较差。
- 原因:模型复杂度过高,导致模型过度适应训练数据的特征和噪声。
- 解决方法:降低模型复杂度、增加数据量、采用正则化方法(如L1、L2正则化)等。
- 改进方法:
- 交叉验证:通过交叉验证来选择合适的模型复杂度,同时避免过拟合和欠拟合。
- 特征选择:选取对模型预测有用的特征,在避免过多无用特征的情况下,消除噪声的影响。
- 正则化:通过L1或L2正则化,限制模型参数的大小,防止模型过拟合。
- 增加数据量:增加数据量可以帮助模型更好地捕捉数据的规律,减少模型的过拟合情况。
- 集成学习:使用集成学习方法,如bagging、boosting等,可以在一定程度上减小模型的过拟合风险。
- 关于交叉验证
- 交叉验证是一种评估模型性能和泛化能力的统计学方法。它通过反复地将数据集划分为训练集和验证集,在训练集上训练,在验证集上测试,来评估模型的性能。
- 常见的交叉验证方法包括
k折交叉验证
、留一交叉验证
等。在k折交叉验证中,数据集被随机分成k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性。然后,进行k次模型训练和测试,每次选择一个子集作为验证集,其余的k-1个子集作为训练集,取结果最好的作为最终模型。 - 交叉验证的目的是:
- 评估模型的性能:通过交叉验证,可以更准确地评估模型的性能,而不会受到单次划分数据带来的偶然性影响。
- 泛化能力:交叉验证可以更好地评估模型的泛化能力,即模型对未见过的数据的适应能力。
- 另外,对于数据较少的情况下,交叉验证可以最大限度地利用有限的数据,减小因训练集和测试集的划分不同导致评估性能的差异。在模型选择以及调参时也非常有用,可以帮助选择最优模型并提高模型的性能。
📚逻辑回归算法流程
-
分类即输入一个样本,判断其类别,损失函数为:
-
使用sigmoid函数,将概率划分到[0,1]之间:
-
使用交叉熵损失函数的方法找到最优的w和b,便于求导取-log,乘积变为求和:
-
然后将f函数全部代回对w求导找最优解,求导后的结果为:
-
求导之后可知f=1,y=1时,f=0,y=0时cross Entropy最小,从而wx->正无穷,y=1,wx->负无穷,y=0
-
使用逻辑回归进行多分类的话,sigmoid函数变为:
-
所有的y求和为1,y表示第i类的概率,是softmax操作,softmax就是把一些输入映射为0-1之间的实数,并且归一化保证和为1。
-
逻辑回归只能对线性可分的数据有闭式解,对于线性不可分的数据分类能力很差,可以进行特征转化,从原特征映射到新的特征空间,然后在新的特征空间进行分类。
??补充博客
文章来源:https://blog.csdn.net/m0_63398413/article/details/135757428
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!