有关机器学习的-12-个经验教训

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CoderPai/article/details/80317052

作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai


这篇文章讲述了机器学习研究人员和从业人员总结的 12 个关键经验教训,包括如何避免陷阱,重点问题以及常见问题的答案。

机器学习可以通过一些例子,然后从中归纳出规律来解决重要问题。在手动编程(硬编码)不使用的情况下,这种方法通常是非常有效的,而且非常经济。随着更多的数据可以使用,我们可以解决更多雄心勃勃的问题。因此,机器学习被广泛的应用到计算机等领域。然而,开发一个成功的机器学习应用程序需要大量难以从教科书上面找到的“黑色艺术”。

我最近读了华盛顿大学 Pedro Domingos 写的一篇非常好的论文 A Few Useful Things to Know about Machine Learning 。这篇文章总结了机器学习研究人员和从业人员学到的 12 个关键经验教训,包括如何避免陷阱,重点问题已经常见问题的答案。我想在本文中将这些经验分享出来,因为当我们在解决一个机器学习问题时,这 12 条经验是非常有用的。

1. 学习 = 表示 + 评估 + 优化

所有机器学习的算法通常都是由 3 个组件组成的:

表示:分类器必须用计算机可以处理的一些变成语言来表示。同理,我们也需要为我们的机器学习模型选择一个合适的表示集合,这个集合称为学习者的假设控件。如果分类器不在这个假设空间内,则无法学习。一个相关的问题是如何来表示输入,也就是说我们用到了哪些特征。

评估:我们还需要一个评估函数,来区分一个分类器是属于好的分类器还是坏的分类器。算法内部使用的评估函数可能不同于我们所说的分类器优化的外部评估函数,优化问题我们将在下面一节讨论。

优化:最后,我们需要一个方法在各种分类器中搜索得分最高的分类器。优化技术的选择对于算法的学习效率是至关重要的,并且还有助于确定评估函数具有多余一个最佳值时产生的分类器。如果你是一个新的学习者,你可以使用现成的优化器,这是非常常用的一个策略。

2. 泛化

机器学习的基本目标是推广到训练集之外的数据上面。这是因为,无论我们有多少的数据,我们都不太可能在测试的时候再看到完全一样的数据。在训练集上面取得好的成绩非常容易,机器学习初学者最常犯的一个错误是在训练集上面取得了很好的成绩,就觉得在别的数据集上面也能取得很好的成绩。这种情况下,如果选择的分类器在新的数据集上面进行测试,通常会去得非常不理想的成绩。因此,如果你想外包你的机器学习项目,那么你最好保留一点数据给自己,可以在最后测试对方提供给你的模型。

3. 数据不够

我们追求泛化还有另外一个原因是,我们的数据量不够。

这似乎是一个令人沮丧的消息,那么我们还能希望学到什么呢?幸运的是,我想要在显示世界中学习的函数并不是从所有数学上可能的数学函数集合中同意得出来的!事实上,非常普通的假设 —— 比如平滑性,相似性的例子 —— 通常我们都能做的很好,这就是机器学习如此陈宫的很大一部分原因。就像演绎一样,归纳就是知识杠杆:它将少量的输入知识转化为大量的输出知识。归纳法是一种比演绎更加强大的杠杆,需要更少的输入知识来产生有用的结果。而且,就像任何杠杆一样,我们投入的越多,我们就越能得到产出。

这样说起来,我们不应该对机器学习模型太过于惊讶。机器学习不是魔术,它无法从无到有。他所作的就是从一个小数据上面学习到一个模型,然后去撬动更多的数据。像所有的工程一样,机器学习也有很多工作要做:我们必须从头开始构建所有的东西。其实,这个更像是农业,我们让大自然来完成大部分的工作。农民只需要将种子和化肥进行播种就行了。学习者就是将知识和数据结合起来,来开发我们的机器学习项目。

4. 过度拟合的多面孔

阅读更多

扫码向博主提问

coderpai

问题是最好的解答
去开通我的Chat快问
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页