使用奥卡姆剃刀
An explanation of the data should be made as simple as possible, but no simpler.
—Albert Einstein? (1879-1955)
entia non sunt multiplicanda praeter necessitatem (entities must not be multiplied beyond necessity)
—William of Occam (1287-1347)
奥卡姆剃刀(Occam’s rezor):剃掉不必要的解释。对机器学习,适合数据的最简单模型也是最合理的模型。
- 简单的假设$h$:小的$\Omega(h)$,假设的参数少;
- 简单的模型$\mathcal H$:小的$\Omega(\mathcal H)$,包含较少的假设,成长函数增长很慢。
当$\Omega(\mathcal H)$小时,$\Omega(h)$也小。当假设集大小为$2^\ell$时,每个假设最多有$\ell$个参数1。在实际应用中,通过正则化或从简单模型开始尝试,都可以得到简单的假设。
对于简单模型,$m_\mathcal H(N)$小,难以将数据拟合好(拟合好的概率为$m_{\mathcal H}(N)\over 2^N$2)。对简单的模型,如果数据被分开,那么数据是规律的;对于复杂的模型,如果数据能分开,就不能判断数据是否有规律(复杂模型能把任何数据分开)。
在实际应用中,从简单的线性模型开始尝试,经常考量数据是否被模型过度表示(data over-modeled)。
避免抽样偏差
如果数据通过有偏抽样得到[1],学习到的结果也是有偏的。
若从$P_1(\mathbf x,y)$的数据中学习,却在$P_2\neq P_1$的数据中测试,VC理论不适用。相当于学了数学却要参加英语考试。VC理论的前提是训练和测试数据都iid来自同一分布。
通过信用卡用户的信用记录,判断是否给新顾客信用卡。——由于没有未开通信用卡用户的信息,这两者分布可能很不一样……
在实际应用中,尽可能的了解测试环境,使训练环境和测试环境尽量一致。
绝不偷看数据
If you torture the data long enough, it will confess.
使用数据的任何过程都相当于间接偷看了数据。为了让VC维可靠,选择$\Phi$时不应当偷看数据。
对使用同样数据集$\mathcal D$的论文,后来作者针对以前论文改进,阅读以前论文也就相当于偷看资料。若把这些论文看成一篇长长的论文,付出的模型复杂度为$d_{VC}(\cup_m\mathcal H_m)$,泛化能力差。
偷看数据很难避免,合理处理偷看数据:
“be blind”是指尽量避免用数据做决定,不要在看了数据之后再决定采用什么样的特征等操作。也就是避免human learning的复杂度进入。
其它三原则
参考资料
- [1]达莱尔·哈夫, 统计陷阱. 上海: 上海财经大学出版社, 2002.