“Amongcompeting hypotheses, the one with the fewest assumptions should be selected.”
—–Williamof Ockham
在可以考虑的所有设想中,我们应该选择假设最少的那个。简单的总是更好的,这一哲学思想被后人称为“奥卡姆剃刀”。
一个借款人是否会坏账?
一个用户是否会购买某个商品?
一部新手机的销量如何?
一个病人是否患有某种慢性疾病?
这问题都可以归结为“预测”问题。
简单地说,“预测”就是根据已知的输入和输出进行学习,并依照给定的新输入给出我们自己的判断。
依照问题的输出是否是有限集合,我们可以进一步把“预测”问题划分为分类问题和回归问题。
“预测”问题中一个很令人头疼的现象就是过拟合现象。
我们先来阐述过拟合是什么,然后简单介绍几种解决方案。
解决分类和回归问题的模型算法有几十上百种,一类模型其自由度或者参数的数量是固定的,我们称之为简单模型,例如线性回归模型的参数只与输入数据的维度有关。
还有一类模型其自由度的个数可以人为增加,我们称之为复杂模型,例如决策树何以有任意多层,Boosting算法可以迭代任意多步,神经网络模型可以由任意多个神经元和隐藏层等等。
通常来说,简单模型对于一个问题如果效果不理想(例如准确率太低),则可操作空间主要在于建立更好的特征,模型本身的改造没有太多提升空间。
复杂模型则可以通过不断调节其参数个数,使其在训练集上的效果不断改进。
但是,这样的效果改进在测试数据上常常得不到提现,反而我们经常会观测到,当模型复杂度不断提升时,测试数据集上的效果可能先升后降。
以决策树为例,假设我们要对1000个借款人是否会坏账进行分类。
假如我们对决策树的深度不加以限制,那么我们可以为每一个借款人设置一个判别准则,从而使得我们的模型在这1000个人的数据集上的正确率是100%。
例如,如果一个人30岁,身高170体重150斤且名字是三个字,则他贷款会坏账。直观上看,这样的判别准则在测试数据集上并没有什么用处,因为可能永远也不会再有人满足这样的判别标准了。
那么,一个重要而且实际的问题就是,如果一个数据问题比较复杂,简单模型无法奏效,复杂模型在训练集上效果很好却在测试集上表现平平,我们应该如何应对呢?
通常的解决方案就是特征选择(FeatureSelection)、降维(Dimension Reduction)和正则化(Regularization)。
在处理数据的过程中,降维与特征选择常常是耦合在一起的。
真实世界中的数据蕴含着大量冗余维度,他们常常是无用的,甚至是噪声。
复杂模型的预测机制有可能过分依赖这些冗余维度,从而使得预测结果不可信。
举个简单的例子,一个人在宇宙中的位置可以由三个坐标维度x,y,z来表示。这样三个数字对于定位宇宙中的一个坐标点是必不可少的。
但是,因为人在地球表面,所以其实只需要经度和维度两个坐标就足够了。经纬度两个坐标不但在表征人的位置时更加方便、而且由于数据量小了,在计算和存储时也会节省更多资源。
更重要的是,如果我们需要判断一个人是否在中国,经纬度坐标的指示性准确、简洁,非常有利于机器学习算法捕捉,而宇宙三维坐标与这个人是否在中国的关联性反而弱很多。
正则化简单地说就是人为在模型中加入一些惩罚项或者约束,使得模型复杂度的升高得到限制,从而避免由于模型过度复杂而引起的过拟合。
当然,模型复杂度不够本身就会导致预测准确度下降,因而正则化的选取必须恰到好处。
决策树模型的剪枝(Pruning)技术,Gradient Boosting算法中经常用到的earlystoppinig方法、shrinkage方法、限制弱分类树深度的方法都属于正则化的范畴。深度学习(Deep Learning)中的卷积神经网(ConvolutionalNeural Network)络技术也可以被认为是一种正则化方法,因为卷积本身就限定了层与层之间的映射关系在一个非常小的函数空间内。
本文由 普林科技(微信公众号:普林科技) 投稿 数据分析网 发表,并经数据分析网编辑。版权归作者所有,转载此文请与作者联系。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。