盘点|最实用的机器学习算法优缺点分析,没有比这篇说得更好了

推荐理由

对于机器学习算法的盘点,网上屡见不鲜。但目前,还没人能结合使用场景来把问题说明白,而这一点正是本文的目的所在。

在文章中,作者将结合他的实际经验,细致剖析每种算法在实践中的优势和不足。

本文的目的,是务实、简洁地盘点一番当前机器学习算法。尽管人们已做过不少盘点,但始终未能给出每一种算法的真正优缺点。在这里,我们依据实际使用中的经验,将对此详加讨论。

归类机器学习算法,一向都非常棘手,常见的分类标准是这样的:生成/判别、参数/非参数、监督/非监督,等等。

举例来说,Scikit-Learn 对算法的分类是根据它们的学习机制,由此所产生的类别如下:

广义线性模型

支持向量机

最近邻

决策树

神经网络

……

然而,根据我们的经验,这都不是最实用的算法分类方式。这是因为,在使用机器学习的时候,你不会这么去想:“我今天想训练一个支持向量机出来!”

相反,你一般是想着那个最终的目标,比如预测某个结果,或是将观察结果进行分类。

因而,我们想基于你的任务目标,来对机器学习算法进行分类。

天下没有免费的午餐

在机器学习领域,一个基本的定理就是“没有免费的午餐”。换言之,就是没有算法能完美地解决所有问题,尤其是对监督学习而言(例如预测建模)

举例来说,你不能去说神经网络任何情况下都能比决策树更有优势,反之亦然。它们要受很多因素的影响,比如你的数据集的规模或结构。

其结果是,在用给定的测试集来评估性能并挑选算法时,你应当根据具体的问题来采用不同的算法。

当然,所选的算法必须要适用于你自己的问题,这就要求选择正确的机器学习任务。作为类比,如果你需要打扫房子,你可能会用到吸尘器、扫帚或是拖把,但你绝对不该掏出铲子来挖地。

机器学习的任务

这里,我们将首先讨论当前的「三大」最常见的机器学习任务:

1、回归(Regression

2、分类(Classification

3、聚类(Clustering

以及两大数据降维(Dimensionality Reduction)问题:

4、特征选取(Feature Selection

5、特征提取(Feature Extraction

后续的文章,我们还将讨论密度估计(Density Estimation)和异常检测()的任务。

说明:本文将不讨论具体的细分领域,如自然语言处理。

本文也不会覆盖到每一个具体的算法。毕竟当前的算法数不胜数,而新的算法更是层出不穷。尽管如此,本文仍能针对每项任务给出当下最有代表性的算法。

1.回归

回归是一种用于连续型数值变量预测和建模的监督学习算法,使用案例包括房地产价格、股价走势或学生成绩等的预测。

回归任务的特征是具有数值型目标变量的标注数据集。换言之,每一个用以监督算法的观察样本,都有一个数值型真值。

线性回归

1.1 (正则化)线性回归

线性回归是回归任务最常用的算法。它最简的形式,是用一个连续的超平面来拟合数据集(比如,当你仅有两个变量时就用一条直线)。如果数据集内的变量存在线性关系,拟合程度就相当高。

在实践中,简单线性回归通常会被其正则化形式(LASSO、Ridge 及弹性网络)所取代。正则化是对过多回归系数所采取的一种避免过拟合的惩罚技巧,同时,惩罚的强度需要被平衡好。

  • 优点:线性回归的理解和解释都非常直观,还能通过正则化来避免过拟合。此外,线性模型很容易通过随机梯度下降来更新数据模型。

  • 缺点:线性回归在处理非线性关系时非常糟糕,在识别复杂的模式上也不够灵活,而添加正确的相互作用项或多项式又极为棘手且耗时。

  • 实现

Python - 

scikit-learn.org/stable/modu…

R - 

cran.r-project.org/web/package…

1.2 回归树(集成方法)

回归树,又名决策树,通过将数据集重复分割成不同的分支来最大化每次分离的信息增益,从而让回归树很自然地学到非线性关系。

集成的方法,如随机森林(RF)或梯度提升树(GBM),则能结合许多独立训练树的预测。我们在这里不会详述其中的机制,但在实践中,随机森林一般都有很出色的表现,梯度提升树则较难调参,但往往能有更高的性能上限。

  • 优点:决策树能学习非线性关系,对异常值也具有很强的稳健性。集成学习在实践中表现优异,经常赢得经典的(非深度学习)机器学习竞赛。

  • 缺点:由于无约束,单棵树容易过拟合,这是因为单棵树可保留分支直至记住训练的数据。不够,集成方法可以弱化这一缺点。

  • 实现:随机森林

Python - 

scikit-learn.org/stable/modu…

R - 

cran.r-project.org/web/package…
  • 实现:梯度提升树

Python - 

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值