三个锦囊妙计
1 Occam’s Razor
“如无需要,勿增实体entities must not be multiplied beyond necessity”
就是说要用越简单的原因来做解释越好,而不必要的内容都要剃掉。
在machine learning中,就是The simplest model that fits the data is also the most plausible.
|
|
对于同一个数据集,有两个分类器,如上图,你会选哪个呢?
显然,都会选左边的。左边的比较简单点,而且看起来就效果是一样好的。
在machine learning中简单的假设h是指:
(1)看起来比较简单
(2)特征数不会很多
简单的H(所有假设h的集合)指:
(1)集合中h数量不是很多
(2)成长函数增长很慢
如果给的是简单的H,可以找出简单的h。
所以,一开始的目标就要明确简单的模型或简单的假设。
如上图,如果我们用一个很简单的模型就把数据分很开了,那就说明了数据分布有明显的界限,就证明了数据点归类清晰。如果用简单模型不能把数据分很开,就说明数据很复杂,很乱。
如果我们用一个很复杂的模型,效果就是比较好的。我们也不清楚这样的结果是因为数据本身很规律还是模型的效果好。
所以,用一个简单模型可以判定数据分布是否有序。
综上,开始应该选用一个简单的模型,在所知道的模型里linear first;其次,要思考所选的模型是否已经是所知道的模型里,最简单的了。否则,就是data over-modeled。
2 Sampling Bias
“If the data is sampled in a biased way, learning will produce a similarly biased outcome.”
举了个杜鲁门胜选总统前,用电话进行民意预测的例子。觉得很形象
Machine learning这里强调的是测试数据和训练数据的分布尽可能是一样的。
如果资料有时间性,比如要预测一个人明天的体重,则(1)训练的时候就要注意这段时间的体重,几个月前的体重权重就小。又或者(2)validation的时候,就要选这段时间的体重。
就是说,尽量让训练和验证的环境要尽可能和测试环境接近,这样测试的结果就会在意料中,否则会出现坏结果。
3 Visual Data Snooping
“If a data set has affected any step in the learning process, its ability to assess the outcome has been compromised.”强调不要人为用主观想法先于机器学习做判断。
在十二讲说过,特征转换的时候,可能人为的思考维度。直觉上,我们认为维度高,复杂的模型做的比较好,但是十三讲分析过后,发现复杂模型不一定真的效果好。
人为事先对数据的进行一定了解就相当于偷看了数据。
除了真的偷看了数据,人为做出关于模型的判断,还有下面的情况,也是属于偷看了数据的例子。
(1)Data Snooping by Mere Shifting-Scaling
在Andrew的week2有说Feature scaling。特征值缩放,把所有特征的值都归一化到[-1,1]区间。有snooping(偷看)就是把训练数据和测试数据的特征都Feature scaling。no snooping就是只有训练数据有Feature scaling。把测试数据也Feature scaling就相当于偷看了,因为这样提前获取了测试数据的一些统计性质,比如均值,方差。
(2)Data Snooping by Data Reusing
在做研究的时候,人们的论文经常用benchmark data 。第一篇使用benchmark data的论文,说模型H1的效果好。接着,其他相关领域的研究者看到了这篇论文,改进了H1的算法,出了个H2模型,发了第二篇论文。后面的人又接着改进……这样的话,最后出的Hm模型的dvc是所有推导m个模型的dvc的和即dvc(∪mHm),所以泛化能力很差。下图所示,dvc很大,Eout和Ein差越多
If you torture the data long enough, it will confess。对同一个数据集的研究越多,数据集被了解的越彻底,就相当于人为对数据过多了解,这样的模型就比较是有针对性的,它对于处理新数据就会表现比较不好。
所以,要防止偷看数据。
-可以完全不看测试数据
-做决定的时候把专业知识放进去,而不是看了数据再用专业知识做决定
还有个小窍门
总结这十六讲的内容:
三的威力
(1)三个领域
(2)三个理论保证
(3)三个模型
(4)三个工具
(5)三个锦囊妙计
(6)更多内容