NTUML 16. 三条锦囊妙计

奥卡姆剃刀

Entia non sunt multiplicanda praeter necessitatem

----William of Occam (1287-1347)

该拉丁格言的意译为“如无必要,勿增实体”。用在机器学习的领域,意味着对数据最简单的拟合往往也是最好的。不过这里有两个问题:1. 说一个模型“简单”是什么意思,2. 我们怎么知道越简单就越好

简单的模型

之前其实提到过什么是“简单的假设”。如果一个假设\(h\)简单,通常它的复杂度\(\Omega(h)\)不高,需要定义的参数少。另外,也提到过什么是“简单的假设集”。如果一个假设集简单,它包含的有效假设不多,成长函数增长比较慢。这两个定义并不冲突:假设一个假设集\(\mathcal{H}\)只有\(2^\ell\)个假设,那么属于它的每个假设\(h\)只需要\(\ell\)个比特就能描述。因此,这两者之间的关系为, \[ {\rm small\ }\Omega(h) \Leftarrow {\rm small\ }\Omega(\mathcal{H}) \] 因此,或者使用简单的模型,或者使用正则化得到简单的假设,这样就会对数据集有简单的解释

简单就好

除去数学证明,还可以通过一些富有哲学意味的推演来说明简单的就是好的。假设使用了一个简单的模型\(\mathcal{H}\),那么它的成长函数\(m_\mathcal{H}(N)\)就会比较小,成长比较慢。这样,如果给模型随便给出\(N\)条数据(数据标签随机产生),那么这个模型很不太可能完美拟合数据(概率大概是\(\frac{m_\mathcal{H}(N)}{2^N}\))。反过来,如果模型对数据的拟合非常好,则说明这个拟合的结果是有显著性的,数据应该有迹可循。而这个推论对复杂的模型是不能成立的,即对于复杂数据,即是其可以对数据表现良好,也不敢说这个结果是有显著性的


因此,在实操时,首先就应该使用线性模型,而且要时时思考有没有过度使用模型的现象

取样偏差

先来看个故事。1948年美国总统候选,民主党的候选人是杜鲁门,共和党则是杜威。投票结束后,某报纸进行了一次电话民调,抽样估计谁会赢。抽样结束以后,写下了《杜威击败杜鲁门》的报道

然而,实际上,获胜的是杜鲁门!造成这个反转的原因,不是因为编辑弄错,也不是运气不好,而是因为电话很贵,所以抽样到的都是有钱人,当年正好有钱人是杜威的票仓,因此这样做很容易得出杜威获胜的结论。这告诉我们

如果数据抽样是有偏的,学习得到的结果也是有偏的

回想当初推导VC上界时,少数几条限制条件之一就是训练集和测试集数据应该来自同一个分布。假设训练集数据来自\(P_1({\bf x}, y)\)而测试集数据来自于\(P_2 \not= P_1\),VC理论就不成立了。就像问已知一个学生刻苦学习了数学,问他在英语考试中会取得什么样的成绩一样——谁知道呢

另一个例子来源于林轩田老师本人的经历:在做Netflix的电影推荐系统时,主办方称如果准确率能提升10%就有100万奖金可以拿,而林老师提的第一个模型在验证集上就提升了13%的准确率。这里有什么问题?问题在于他构建验证集是使用传统的随机取样法,而实际比赛要求的是根据某个人前几次的观影记录来推测其对后几部电影的评分,即测试集和验证集的分布还是不同的。这个隐蔽的错误再次证明,要了解测试环境,进而让训练环境与测试环境尽量接近。对于刚才的例子,训练时就可以给时间轴上靠后的数据权重更大,并使用后面的数据做验证集

之前介绍的信用卡批准这一案例实际上也有同样的问题:我们拿到的信用卡使用数据其实都是来自于银行已经核发了信用卡的顾客,即顾客群体已经被做了一部分筛查。如果这些数据不进行调整就用来训练模型,可能会造成问题,因为它面向的顾客群体与之前相比多了一些会被原系统毙掉的顾客,而模型对这些顾客的表现很可能与预期不符合

数据窥探

前面曾经说过,如果肉眼偷看了数据,尽管设计出来的模型看似VC维很低,但是实际上如果考虑到人脑“附加的模型复杂度”,VC维仍然会很高。因此,在做多项式变换\(\boldsymbol{\Phi}\)时,不应该提前窥探数据

然而数据窥探的概念其实远比前面所说的过程要宽泛。严格来讲,需要记住

无论数据集影响了学习过程中的哪一步,学习得到的模型效果都要被打个问号

假设拿到了某种货币8年的汇率情况,希望对汇率的走势进行预测(假设是用过去20天的汇率情况预测第21天的汇率情况)。一种自然的对数据集的划分是把前6年的数据作为训练集,后2年的数据作为测试集。可以看出来,这是一个回归问题

处理该问题时,为了避免原始数据取值范围太大对模型造成影响,通常要对数据做一个缩放(scale)。正常的情况下,应该是将训练数据和测试数据分别作缩放操作。但是如果将这两组数据放在一起缩放,缩放缩放完以后再划分,会是什么结果?

数据窥探对模型造成的影响
数据窥探对模型造成的影响

可以看出,尽管后两年的数据没有直接参与训练,但是仍然对模型效果产生了影响。因为在缩放的时候,训练数据已经隐含地知道了测试数据的一些统计信息(例如最大值、最小值、均值、标准差等等)

学术研究中也有类似数据窥探的现象。一般研究时,都会有一个标准数据集\(\mathcal{D}\)。假设研究机构A提出了一个模型\(\mathcal{H}_1\)\(\mathcal{D}\)上表现良好,那么就会发表文章。后人如果做出了改进,提出的\(\mathcal{H}_2\)\(\mathcal{H}_1\)更好,也会发表文章。假设某个人做出了\(m\)个模型,实际上该模型的一般化能力需要被怀疑一下,因为此时该模型的VC维已经是\(d_{\rm VC}(\bigcup_m\mathcal{H}_m)\)。因此越晚发表的论文其实受数据窥探的影响越严重

"如果在一个犯人身上拷问越久,ta就越容易招供"

然而,完全避免数据窥探是非常难的,只能尽力做好以下几点

  • 不到必须的时候,不使用测试集。或者小心地使用验证集
  • 不在看过数据以后再决定用什么特征
  • 时刻保持一颗怀疑之心

三生三事

本课到此为止(也就是机器学习基石课)讲的东西基本都跟“三”有关,最后来一起梳理一下

  • 三项跟机器学习有关的概念:数据挖掘、人工智能和统计学
  • 三条理论保证:Hoeffding, Multi-Bin Hoeffding, VC
  • 三种线性模型:PLA/pocket(使用0/1误差)、线性回归(使用平方误差)和Logistic回归(使用交叉熵误差)
  • 三种重要的工具:特征变换、正则化、验证
  • 三条锦囊妙计:奥卡姆剃刀、抽样偏差、数据窥测
  • 三条未来的发展方向(机器学习技法课的内容):更强力的变换方法、更丰富的正则化方法、更少标签时的处理方式
坚持原创技术分享,您的支持将鼓励我继续创作!