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

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

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中,我们会假设在特征空间中,一个小的局部区域中的大部分样本都属于同一类。在朴素贝叶斯分类器中,我们会假设每个特征的条件概率是相互独立的。归纳偏置在贝叶斯学习中也经常被称为先验。

相关文章
|
3月前
|
机器学习/深度学习 Python
机器学习中模型选择和优化的关键技术——交叉验证与网格搜索
本文深入探讨了机器学习中模型选择和优化的关键技术——交叉验证与网格搜索。介绍了K折交叉验证、留一交叉验证等方法,以及网格搜索的原理和步骤,展示了如何结合两者在Python中实现模型参数的优化,并强调了使用时需注意的计算成本、过拟合风险等问题。
128 6
|
4月前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
256 1
|
5月前
|
机器学习/深度学习 Python
验证集的划分方法:确保机器学习模型泛化能力的关键
本文详细介绍了机器学习中验证集的作用及其划分方法。验证集主要用于评估模型性能和调整超参数,不同于仅用于最终评估的测试集。文中描述了几种常见的划分方法,包括简单划分、交叉验证、时间序列数据划分及分层抽样划分,并提供了Python示例代码。此外,还强调了在划分数据集时应注意随机性、数据分布和多次实验的重要性。合理划分验证集有助于更准确地评估模型性能并进行有效调优。
|
5月前
|
机器学习/深度学习 Python
训练集、测试集与验证集:机器学习模型评估的基石
在机器学习中,数据集通常被划分为训练集、验证集和测试集,以评估模型性能并调整参数。训练集用于拟合模型,验证集用于调整超参数和防止过拟合,测试集则用于评估最终模型性能。本文详细介绍了这三个集合的作用,并通过代码示例展示了如何进行数据集的划分。合理的划分有助于提升模型的泛化能力。
|
6月前
|
机器学习/深度学习 索引
|
8月前
|
机器学习/深度学习 数据处理 计算机视觉
机器学习- Sklearn (交叉验证和Pipeline)
机器学习- Sklearn (交叉验证和Pipeline)
|
9月前
|
机器学习/深度学习 算法 自动驾驶
机器学习是一门涉及多个领域的交叉学科
【5月更文挑战第4天】机器学习是一门涉及多个领域的交叉学科
98 6
|
9月前
|
机器学习/深度学习 数据采集 前端开发
【Python机器学习专栏】模型泛化能力与交叉验证
【4月更文挑战第30天】本文探讨了机器学习中模型泛化能力的重要性,它是衡量模型对未知数据预测能力的关键。过拟合和欠拟合影响泛化能力,而交叉验证是评估和提升泛化能力的有效工具。通过K折交叉验证等方法,可以发现并优化模型,如调整参数、选择合适模型、数据预处理、特征选择和集成学习。Python中可利用scikit-learn的cross_val_score函数进行交叉验证。
562 0
|
9月前
|
机器学习/深度学习 Python
【Python 机器学习专栏】模型选择中的交叉验证与网格搜索
【4月更文挑战第30天】交叉验证和网格搜索是机器学习中优化模型的关键技术。交叉验证通过划分数据集进行多次评估,如K折和留一法,确保模型性能的稳定性。网格搜索遍历预定义参数组合,寻找最佳参数设置。两者结合能全面评估模型并避免过拟合。Python中可使用`sklearn`库实现这一过程,但需注意计算成本、过拟合风险及数据适应性。理解并熟练应用这些方法能提升模型性能和泛化能力。
290 0
|
9月前
|
机器学习/深度学习 测试技术 数据处理
【视频】R语言机器学习高维数据应用:Lasso回归和交叉验证预测房屋市场租金价格
【视频】R语言机器学习高维数据应用:Lasso回归和交叉验证预测房屋市场租金价格