机器学习预备知识

1. 维度灾难

维度灾难是指随着数据维度变大(即特征变多),需要的数据就越多,才能使算法起作用。

原因

单位超球体体积 v n = ( 2 π / n ) v n − 1 v_n=(2\pi/n)v_{n-1} vn=(2π/n)vn1 ,n位球体维度

维度n 体积
1 2.00
2 3.14
3 4.19
4 4.93
9 3.29
10 2.55
+ ∞ \infty 0

可见,随着维度变大,单位球体体积趋近0,也就是说距离对数据的影响越来越小,这就使得维度高时,只有大量的数据,才能帮助算法更好地生效

2. 训练、测试、验证集

在这里插入图片描述
一个形象的比喻:

训练集:学生的课本,学生根据课本中的内容来掌握知识;

验证集:作业,通过作业可以知道学生的学习情况、进步快慢;

测试集:考试,考题都是平时没见过的,考察学生举一反三的能力。

训练集和测试集大家不陌生,主要是验证集用来做什么要了解下。

验证集

我们让模型在训练集上进行训练,然后在测试集上来近似模型的泛化能力。我们如果想要挑选不同的模型的话,可以让两个模型分别在训练集上训练,然后将两个训练好的模型分别在测试集上进行测试,由于我们把测试集上的误差近似近似为泛化误差,所以我们自然可以选择在测试集上误差小的模型作为最终我们要选择的泛化能力强的模型。

但是我们要做的不仅是不同的模型与模型之间的对比,很多时候我们需要对模型本身进行选择,假如我们有两个模型,线性模型和神经网络模型,我们知道神经网络的泛化能力要比线性模型要强,我们选择了神经网络模型,但是神经网络中还有很多的需要人工进行选择的参数,比如神经网络的层数和每层神经网络的神经元个数以及正则化的一些参数等等,我们将这些参数称为超参数。这些参数不同选择对模型最终的效果也很重要,我们在开发模型的时候总是需要调节这些超参数。

现在我们需要调节这些超参数来使得模型泛化能力最强。我们使用测试集来作为泛化误差估计,而我们最终的目的就是选择泛化能力强的模型,那么我们可以直接通过模型在测试集上的误差来调节这些参数不就可以了。可能模型在测试集上的误差为0,但是你拿着这样的模型去部署到真实场景中去使用的话,效果可能会非常差。

这一现象叫做信息泄露。我们使用测试集作为泛化误差的近似,所以不到最后是不能将测试集的信息泄露出去的,就好比考试一样,我们平时做的题相当于训练集,测试集相当于最终的考试,我们通过最终的考试来检验我们最终的学习能力,将测试集信息泄露出去,相当于学生提前知道了考试题目,那最后再考这些提前知道的考试题目,当然代表不了什么,你在最后的考试中得再高的分数,也不能代表你学习能力强。而如果通过测试集来调节模型,相当于不仅知道了考试的题目,学生还都学会怎么做这些题了(因为我们肯定会人为的让模型在测试集上的误差最小,因为这是你调整超参数的目的),那再拿这些题考试的话,人人都有可能考满分,但是并没有起到检测学生学习能力的作用。原来我们通过测试集来近似泛化误差,也就是通过考试来检验学生的学习能力,但是由于信息泄露,此时的测试集即考试无任何意义,现实中可能学生的能力很差。所以,我们在学习的时候,老师会准备一些小测试来帮助我们查缺补漏,这些小测试也就是要说的验证集。我们通过验证集来作为调整模型的依据,这样不至于将测试集中的信息泄露。

所以:验证集通常用于调整超参数,根据几组模型验证集上的表现决定哪组超参数拥有最好的性能。
同时验证集在训练过程中还可以用来监控模型是否发生过拟合,一般来说验证集表现稳定后,若继续训练,训练集表现还会继续上升,但是验证集会出现不升反降的情况,这样一般就发生了过拟合。所以验证集也用来判断何时停止训练

training :validation : test:数据比例:

  • 数据超大:98:1:1(吴恩达)
  • 数据充足时:50:25:25
  • 数据不足时(万级别以下):60:20:20
  • 数据极少时:留出法,交叉验证法

作用总结

  • train set – 训练模型、确定模型参数
  • validation set – 模型选择、超参数优化
  • test set – 测试模型泛化性能

3. 留出法、交叉验证法、自助法

3.1 留出法 hand-out

留出法直接将数据集划分为两个互斥的部分,其中一部分作为训练集,另一部分用作测试集。

通常训练集和测试集的比例为70%:30%。同时,训练集测试集的划分有两个注意事项:

  1. 尽可能保持数据分布的一致性。避免因数据划分过程引入的额外偏差而对最终结果产生影响。在分类任务中,保留类别比例的采样方法称为“分层采样”(stratified
    sampling)。
  2. 采用若干次随机划分避免单次使用留出法的不稳定性。

3.2 交叉验证法 leave-some-out cross-validation

D = D 1 ∪ D 2 ∪ ⋯ ∪ D k D i ∩ D j = ∅ \begin{aligned} & D=D_1\cup D_2\cup\cdots \cup D_k \\ & D_i\cap D_j = \emptyset \\ \end{aligned} D=D1D

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值