选自EliteDataScience
机器之心编译
参与:蒋思源、晏奇
在本教程中,作者对现代机器学习算法进行一次简要的实战梳理。虽然类似的总结有很多,但是它们都没有真正解释清楚每个算法在实践中的好坏,而这正是本篇梳理希望完成的。因此本文力图基于实践中的经验,讨论每个算法的优缺点。而机器之心也在文末给出了这些算法的具体实现细节。
对机器学习算法进行分类不是一件容易的事情,总的来看,有如下几种方式:生成与判别、参数与非参数、监督与非监督等等。
然而,就实践经验来看,这些都不是实战过程中最有效的分类算法的方式。因为对于应用机器学习而言,开发者一般会在脑海中有一个最终目标,比如预测一个结果或是对你的观察进行分类。
因此,我们想介绍另一种对算法进行分类的路数,其基于机器学习任务来分类。
没有免费午餐定理
在机器学习中,有个定理被称为「没有免费的午餐」。简而言之,就是说没有一个算法可以完美解决所有问题,而且这对于监督学习(即对预测的建模)而言尤其如此。
举个例子,你不能说神经网络就一定任何时候都比决策树优秀,反过来也是。这其中存在很多影响因素,比如你数据集的规模和结构。
所以,当你使用一个固定的数据测试集来评估性能,挑选最适合算法时,你应该针对你的问题尝试多种不同的算法。
当然,你所使用的算法必须要适合于你试图解决的问题,这也就有了如何选择正确的机器学习任务这一问题。做个类比,如果你需要打扫你的房子,你可能会用吸尘器、扫帚或者是拖把,但是你绝不会掏出一把铲子然后开始挖地。
机器学习任务
在本次梳理中,我们将涵盖目前「三大」最常见机器学习任务:
- 回归方法
- 分类方法
- 聚类方法
说明:
- 本文的梳理不会涵盖具体领域的问题,比如自然语言处理。
- 本文也不会对每个算法都进行梳理。因为现有太多算法,而且新的算法也层出不穷。然而,这份清单将向读者展现对每个任务而言目前具有代表性的算法概览。