机器学习中的交叉验证与相关理论

简介: 机器学习中的交叉验证与相关理论

1.交叉验证


简单交叉验证:随机的将样本数据分为两部分(例如:70%的训练集,30%的测试集),然后用训练集来训练模型,在测试集上验证模型及参数。接着,再把样本随机打乱,重新选择训练集和测试集,继续训练数据和检验模型。最后选择损失函数评价最优的模型和参数。


K折交叉验证(Cross Validation):是一种比较好的可能衡量机器学习模型的统计分析方法,可以有效避免划分训练集和测试集时的随机性对评价结果造成的影响。K折交叉验证会把样本数据随机的分成K份,每次随机的选择K-1份作为训练集,剩下的1份做测试集。当一轮训练完成后,重新随机选择K-1份来训练数据。若干轮(小于K)之后,选择损失函数评价最优的模型和参数。这K个模型在各自验证集上的错误率的平均值作为分类器的评价结果,K一般大于3。


留一交叉验证:是第二种情况的特例,此时K等于样本数N,这样对于N个样本,每次选择N-1个样本来训练数据,留一个样本来验证模型预测的好坏。此方法主要用于样本量非常少的情况。例如对于普通适中问题(N小于50时),一般采用留一交叉验证。


自助法(bootstrapping):这是一种比较特殊的交叉验证方式,也是用于样本量少的时候。比如现在有N个样本(N较小),每次在这N个样本中随机采集一个样本,放入训练集,采样完后把样本放回。这样重复采集N次,我们得到N个样本组成的训练集。当然,这N个样本中很有可能有重复的样本数据。同时,用没有被采样到的样本做测试集,接着进行交叉验证。由于我们的训练集中可能有重复数据,这会改变数据的分布,因而训练结果会有估计偏差。因此,此种方法不是很常用,除非数据量真的很少,比如小于20个。


2.没有免费午餐定理


由Wolpert和Macerday在最优化理论中提出的。对于基于迭代的最优化算法,不存在某种算法对所有问题(有限的搜索空间中)都有效。如果一个算法对某些问题有效那么它一定在另外一些问题上比纯随机搜索算法更差。也就是说,不能脱离具体问题来谈论算法的优劣性,任何算法都有局限性,必须具体问题具体分析。没有免费午餐定理对于机器学习算法同样适用。不存在一种机器学习算法适合于任何领域或任务。


3.丑小鸭定理


1969年由渡边慧提出的,"丑小鸭和白天鹅之间的区别一样大"。因为世界上不存在相似性的客观标准,一切相似性的标准都是主观的。如果以体型大小的角度来看,丑小鸭和白天鹅的区别大于两只白天鹅的区别;但是如果以基因的角度来看,丑小鸭与它父母的差别要小于其他白天鹅之间的差别。


4.奥卡姆剃刀原理


由14世纪逻辑学家William of Occam提出的一个解决问题的原则:“如无必要,务增实体”。奥卡姆剃刀的思想和机器学习上正则化思想十分相似:简单模型的泛化性能更好。如果有两个性能相近的模型,我们应该选择更简单的模型。因此,在机器学习的学习准则上,我们经常会引入正则化来限制模型能力,避免过拟合。

5.归纳偏置


机器学习中,很多学习算法经常会对学习的问题做一些假设,这些假设就称为归纳偏置(Inductive Bias)Mitchell 1997。比如在KNN中,我们会假设在特征空间中,一个小的局部区域中的大部分样本都属于同一类。在朴素贝叶斯分类器中,我们会假设每个特征的条件概率是相互独立的。归纳偏置在贝叶斯学习中也经常被称为先验。

相关文章
|
4月前
|
机器学习/深度学习 数据可视化 计算机视觉
【视频】机器学习交叉验证CV原理及R语言主成分PCA回归分析犯罪率|数据共享
【视频】机器学习交叉验证CV原理及R语言主成分PCA回归分析犯罪率|数据共享
|
1月前
|
机器学习/深度学习 索引
|
3月前
|
机器学习/深度学习 数据处理 计算机视觉
机器学习- Sklearn (交叉验证和Pipeline)
机器学习- Sklearn (交叉验证和Pipeline)
|
4月前
|
机器学习/深度学习 数据采集 前端开发
【Python机器学习专栏】模型泛化能力与交叉验证
【4月更文挑战第30天】本文探讨了机器学习中模型泛化能力的重要性,它是衡量模型对未知数据预测能力的关键。过拟合和欠拟合影响泛化能力,而交叉验证是评估和提升泛化能力的有效工具。通过K折交叉验证等方法,可以发现并优化模型,如调整参数、选择合适模型、数据预处理、特征选择和集成学习。Python中可利用scikit-learn的cross_val_score函数进行交叉验证。
384 0
|
4月前
|
机器学习/深度学习 Python
【Python 机器学习专栏】模型选择中的交叉验证与网格搜索
【4月更文挑战第30天】交叉验证和网格搜索是机器学习中优化模型的关键技术。交叉验证通过划分数据集进行多次评估,如K折和留一法,确保模型性能的稳定性。网格搜索遍历预定义参数组合,寻找最佳参数设置。两者结合能全面评估模型并避免过拟合。Python中可使用`sklearn`库实现这一过程,但需注意计算成本、过拟合风险及数据适应性。理解并熟练应用这些方法能提升模型性能和泛化能力。
220 0
|
4月前
|
机器学习/深度学习 测试技术 数据处理
【视频】R语言机器学习高维数据应用:Lasso回归和交叉验证预测房屋市场租金价格
【视频】R语言机器学习高维数据应用:Lasso回归和交叉验证预测房屋市场租金价格
|
4月前
|
机器学习/深度学习 算法
机器学习-特征选择:如何使用交叉验证精准选择最优特征?
机器学习-特征选择:如何使用交叉验证精准选择最优特征?
246 0
|
12月前
|
机器学习/深度学习 算法 API
机器学习交叉验证和网格搜索案例分析
机器学习交叉验证和网格搜索案例分析
113 0
|
机器学习/深度学习 算法 数据可视化
机器学习技术:如何使用交叉验证和ROC曲线提高疾病预测的准确性和效率?
ROC曲线则是一种可视化评估分类算法表现的图形呈现方法,用于绘制二分类模型的真阳性率和假阳性率之间的关系曲线。这种方法常用于比较不同分类器和优化分类器的性能。 接下来的部分将详细介绍如何使用这两种方法,并提供实际案例和技术实践以及最佳实践建议。
217 0
|
机器学习/深度学习 算法 数据处理
【机器学习】(18)使用sklearn实现交叉验证
【机器学习】(18)使用sklearn实现交叉验证
358 0
【机器学习】(18)使用sklearn实现交叉验证