zoukankan      html  css  js  c++  java
  • 阅读笔记:A Few useful things to Know About machine Learning

    这是Machine Learning领域的经典论文,文中提到了ML相关的12个keys,并自称这些keys是“black art”,我觉得有点像ML的“最佳实践”。

    网上有此文的中文翻译,写得很详细,附上两个,并感谢这两位同学的工作:

    https://blog.csdn.net/u011467621/article/details/48243135

    https://blog.csdn.net/danameng/article/details/21563093

    想看完整翻译的同学可以参考上面两篇文章,我在这里简要记录一下我读后的一些思考。

    12个keys,逐条来看。

    1、ML = Representation + Evaluation + Optimition

    Representation是一个有点困扰我的词,看了Table 1中,Representation的举例是KNN、SVM、Naive Beyes,我觉得换成Model来表达更合适,但是后来仔细一想,使用Representation还有更有深意。Representation翻译过来是“表达、表述”,所以我们可以理解为,ML的模型是一种“表达方式”,也就是说,每一个模型都在以自己的方式来“表达”数据,比如,DT用树形结构表达数据,KNN用空间距离表达数据,Naive Beyes用概率表达数据,这似乎加深了我对Model本质的理解。

    Evaluation是评价、评估的意思,是损失函数和模型评估函数的合体,从本质上讲,这两类东西其实是同质的,都是用来评估模型的,只不过评估的角度不同,往极端了说,如果你认为一个函数既可以作为损失函数也可以用于模型评估,那你完全可以只用一个函数。

    另外,文中的Table 1值得收藏,也贴在这里。

    2、泛化能力是ML的核心

    泛化能力是 偏差(bias) + 方差(variance) + 噪声(noise) 的总和,这个在周志华老师的书中有详细的论述。

    用打靶图来解释bias和variance挺直观的,附上原图:

    3、只有数据是不够滴

    在做ML时,选择模型、选择损失函数、参数寻优等环节都隐含了很多假设,在这些假设的前提下,才能训练出有用的模型。

    反过来说,每一个假设都是对建模的一个约束,应该尝试不同的假设,才能找到最佳的那一个。

    4、过拟合有很多种

    过拟合(overfit)在ML中很常见,原因可能是训练数据太少、模型太复杂或其他。解决办法是交叉验证、正则化等。

    这一点其实是和第2点紧密联系的,可以放到一起来理解。泛化误差里包括noise项,但是这并意味着noise是导致过拟合的原因,即使没有noise,过拟合一样会发生。

    5、高维未见得有益

    直觉上讲,特征越多,对数据的描述角度越多,ML的效果应该越好,事实并非如此。

    维数多可能导致数据量相对不足,或者某些不重要的特征反而对模型效果有害,类似于引入了噪声项。

    这也提醒我们,特征不是越多越好,要利用真正“有用”的特征。那么,怎么知道一个特征是否有用,可以利用诸如Lasso、feature_importance 等方法或参数来评估和筛选。

    6、理论仅仅是理论

    实践和理论是有差距的,理论提出的很多“理想情况”或说“极限情况”在实践中往往达不到。至于到底有哪些理论,既然实践不大有用,我也没细看,哈哈。

    7、特征是关键

    还是那句老话:特征决定机器学习的上限,模型只是在逼近这个上限。

    从实践角度看,计算特征光靠数理知识肯定不行,对数据来源的理解是关键,也就是我们常说的,要理解业务,此外还需要一些直觉和创造力。

    另外,有一个问题值得注意,单个特征没用,不代表组合起来没用,一个典型例子是异或(XOR),feature A 、feature B 和 A XOR B是没有相关性的。这也提醒我们,在构造特征时,可以考虑加入特征的组合变换,说不定会收获奇效。

    8、收集更多数据比调优算法更实用

    如果找到了有用的特征,但是模型的泛化误差还是不好,应该收集更多数据还是对算法做调优?

    实践告诉我们,收集更多数据更有效。

    所以,在处理实际问题时,往往会预先选好几个Model,比如 RandomForest、GBDT,模型内部的参数也确定为几个经验值,然后用构造出的特征做训练和测试,看AUC、TPR、FPR等指标,效果不好时,优先调整feature并争取获得更多的数据,模型的选型和参数调优是最不重要的。

    9、用多个模型来学习

    前面提到过,每个Model有隐含的假设条件和适用范围,ML在处理实际问题时,未必能确定用哪种模型更好,所以最好的办法是多个模型一起用,然后利用ensemble方法把多个模型聚合起来,这样往往会得到比较好的学习效果。

    10、简单未必精确

    这是对奥卡姆剃刀原理的一次矫正,我们不能因为简单的模型不容易过拟合或者简单的模型刚好效果好,就放弃看似复杂的模型。

    在实际应用中,效果比较好的模型往往是多个简单模型ensemble后形成的复杂模型,这也能说明,单纯追求简单是错的,泛化能力强是我们追求的终极目标。

    11、可表示不等于可学习

    这一点大约是对ML局限性的阐述,ML并非万能钥匙,有时ML就是无法取得很好的效果。

    12、相关性不等于因果关系

    ML一般只能发现特征之间的相关关系,相关关系是因果关系的基础,但是不等于因果关系,而且ML使用的是观测数据,不是实验数据,我们无法自行验证因果关系是否成立。

    所以,我们要从业务角度理解相关关系,并对此保持警惕,因为这样的关系很可能是不稳定的甚至稍纵即逝的假象。

    原文链接:https://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf

  • 相关阅读:
    Hive
    Hadoop简介与分布式安装
    Hadoop分布式文件系统HDFS
    HDFS的操作SHELL和API
    HDFS高级功能
    Yarn
    Hadoop的I/O操作
    Hadoop的RPC工作原理
    Mapreduce入门和优化方案
    MapReduce的工作机制
  • 原文地址:https://www.cnblogs.com/xxiaolige/p/9346157.html
Copyright © 2011-2022 走看看