这是Machine Learning领域的经典论文,文中提到了ML相关的12个keys,并自称这些keys是“black art”,我以为有点像ML的“最佳实践”。算法
网上有此文的中文翻译,写得很详细,附上两个,并感谢这两位同窗的工做:dom
https://blog.csdn.net/u011467621/article/details/48243135机器学习
https://blog.csdn.net/danameng/article/details/21563093函数
想看完整翻译的同窗能够参考上面两篇文章,我在这里简要记录一下我读后的一些思考。学习
12个keys,逐条来看。测试
Representation是一个有点困扰个人词,看了Table 1中,Representation的举例是KNN、SVM、Naive Beyes,我以为换成Model来表达更合适,可是后来仔细一想,使用Representation还有更有深意。Representation翻译过来是“表达、表述”,因此咱们能够理解为,ML的模型是一种“表达方式”,也就是说,每个模型都在以本身的方式来“表达”数据,好比,DT用树形结构表达数据,KNN用空间距离表达数据,Naive Beyes用几率表达数据,这彷佛加深了我对Model本质的理解。lua
Evaluation是评价、评估的意思,是损失函数和模型评估函数的合体,从本质上讲,这两类东西实际上是同质的,都是用来评估模型的,只不过评估的角度不一样,往极端了说,若是你认为一个函数既能够做为损失函数也能够用于模型评估,那你彻底能够只用一个函数。spa
另外,文中的Table 1值得收藏,也贴在这里。.net
泛化能力是 误差(bias) + 方差(variance) + 噪声(noise) 的总和,这个在周志华老师的书中有详细的论述。翻译
用打靶图来解释bias和variance挺直观的,附上原图:
在作ML时,选择模型、选择损失函数、参数寻优等环节都隐含了不少假设,在这些假设的前提下,才能训练出有用的模型。
反过来讲,每个假设都是对建模的一个约束,应该尝试不一样的假设,才能找到最佳的那一个。
过拟合(overfit)在ML中很常见,缘由多是训练数据太少、模型太复杂或其余。解决办法是交叉验证、正则化等。
这一点实际上是和第2点紧密联系的,能够放到一块儿来理解。泛化偏差里包括noise项,可是这并意味着noise是致使过拟合的缘由,即便没有noise,过拟合同样会发生。
直觉上讲,特征越多,对数据的描述角度越多,ML的效果应该越好,事实并不是如此。
维数多可能致使数据量相对不足,或者某些不重要的特征反而对模型效果有害,相似于引入了噪声项。
这也提醒咱们,特征不是越多越好,要利用真正“有用”的特征。那么,怎么知道一个特征是否有用,能够利用诸如Lasso、feature_importance 等方法或参数来评估和筛选。
实践和理论是有差距的,理论提出的不少“理想状况”或说“极限状况”在实践中每每达不到。至于到底有哪些理论,既然实践不大有用,我也没细看,哈哈。
仍是那句老话:特征决定机器学习的上限,模型只是在逼近这个上限。
从实践角度看,计算特征光靠数理知识确定不行,对数据来源的理解是关键,也就是咱们常说的,要理解业务,此外还须要一些直觉和创造力。
另外,有一个问题值得注意,单个特征没用,不表明组合起来没用,一个典型例子是异或(XOR),feature A 、feature B 和 A XOR B是没有相关性的。这也提醒咱们,在构造特征时,能够考虑加入特征的组合变换,说不定会收获奇效。
若是找到了有用的特征,可是模型的泛化偏差仍是很差,应该收集更多数据仍是对算法作调优?
实践告诉咱们,收集更多数据更有效。
因此,在处理实际问题时,每每会预先选好几个Model,好比 RandomForest、GBDT,模型内部的参数也肯定为几个经验值,而后用构造出的特征作训练和测试,看AUC、TPR、FPR等指标,效果很差时,优先调整feature并争取得到更多的数据,模型的选型和参数调优是最不重要的。
前面提到过,每一个Model有隐含的假设条件和适用范围,ML在处理实际问题时,未必能肯定用哪一种模型更好,因此最好的办法是多个模型一块儿用,而后利用ensemble方法把多个模型聚合起来,这样每每会获得比较好的学习效果。
这是对奥卡姆剃刀原理的一次矫正,咱们不能由于简单的模型不容易过拟合或者简单的模型恰好效果好,就放弃看似复杂的模型。
在实际应用中,效果比较好的模型每每是多个简单模型ensemble后造成的复杂模型,这也能说明,单纯追求简单是错的,泛化能力强是咱们追求的终极目标。
这一点大约是对ML局限性的阐述,ML并不是万能钥匙,有时ML就是没法取得很好的效果。
ML通常只能发现特征之间的相关关系,相关关系是因果关系的基础,可是不等于因果关系,并且ML使用的是观测数据,不是实验数据,咱们没法自行验证因果关系是否成立。
因此,咱们要从业务角度理解相关关系,并对此保持警戒,由于这样的关系极可能是不稳定的甚至稍纵即逝的假象。
原文连接:https://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf