首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

7 种机器学习算法的 7 个要点

本文最初发表于 Towards Data Science 博客,经原作者 Soner Yildirim 授权,InfoQ 中文站翻译并分享。

由于有了各种库和框架,我们只需一行代码就可以实现机器学习算法。有些库和框架更进一步,可以让你在短时间内实现和比较多种算法。

但在使用方便的同时,也带来了一些缺点。我们可能会忽略这些算法背后的关键概念或思想,而这些概念或思想对于这些算法的理解是必不可少的。

在本文中,我将提到关于 7 种机器学习算法的 7 个要点。我想指出的是,这些并不是对算法的完整解释,所以,如果你对它们有基本了解的话,那就更好不过了。

闲话少叙,言归正题。

1. 支持向量机

要点:C 参数

支持向量机(Support Vector Machine,SVM)创建一个决策边界,用于区分两个或多个类。

Soft-Margin SVM 试图解决一类优化问题,其目标如下:

  • 增加决策边界到类(或支持向量)的距离。
  • 最大化训练集中正确分类的点的数量。

这两个目标之间显然存在一个权衡。决策边界可能必须非常接近一个特定的类,才能正确标注所有的数据点。然而,在这种情况下,由于决策边界对噪声和自变量的微小变化过于敏感,新观测值的正确率可能会有所降低。

另一方面,决策边间可能会被尽可能地放置在每个类上,但代价是一些错误分类的异常。这种权衡由C 参数控制。

C 参数对每一个错误分类的数据点增加了一个惩罚。如果 C 较小,则对错误分类点的惩罚较低,所以选择一个余量较大的决策边界,以牺牲较多的错误分类次数为代价。

如果 C 较大,支持向量机会尽量减少错误分类样本的数量,从而导致决策边界具有较小的边际。对于所有错误分类的例子,惩罚是不一样的。它与到决策边界的距离成正比。

2. 决策树

要点:信息增益

在选择要分割的特征时,决策时算法会试图实现:

  • 更多的预测性。
  • 更少的杂质。
  • 更低的熵。

熵是对不确定性或随机性的度量。一个变量的随机性越大,熵就越高。具有均匀分布的变量就具有最高的熵。例如,掷一个公平的骰子,有 6 种可能的结果,概率相等,所以它具有均匀分布和高熵。

选择导致更多纯节点的拆分。所有这些都表明“信息增益”(Information gain),基本上就是拆分前后的熵之差。

$信息增益=(拆分之前的熵)-(拆分之后的加权熵)$

3. 随机森林

要点:自助法与特征随机性

随机森林是许多决策树的集合。随机森林的成功在很大程度上取决于使用不相关的决策树。如果我们使用相同或非常相似的树,那么整体结果与单个决策树的结果差别并不大。随机森林通过自助法(bootstrapping)和特征随机性(feature randomness)得到不相关的决策树。

特征随机性是通过随机深林中的每个决策树随机选择特征来实现的。随机森林中每棵树使用的特征数量可以通过max_features参数进行控制。

4. 梯度提升决策树

要点:学习率和子模型数

梯度提升决策树(Gradient Boosted Decision Tree,GBDT)是一个决策树的集合,结合提升(boosting)方法,即将决策树按顺序连接起来。

学习率(Learning rate)和子模型数(n_estimators)是用于梯度提升决策树的两个关键超参数。

学习率简单来说就是模型学习的速度。学习率慢的好处是模型会变得过更加稳健和泛化。然而,学习率慢是有代价的。它需要更多的时间来训练模型,这就给我们带来了另一个重要的超参数。

n_estimators参数是模型中使用的树的数量。如果学习率低,我们需要更多的树来训练模型。然而,我们在选择数目的数量时需要非常小心。使用过多的树会产生过拟合的高风险。

5. 朴素贝叶斯分类器

要点:朴素的好处是什么?

朴素贝叶斯(Naive Bayes)是一种用于分类的监督式机器学习分类算法,因此其任务是在给定特征值的情况下找到观测值所述的类别。朴素贝叶斯分类器计算给定一组特征值(即$p(y_i|x_1,x_2,…,x_n)$的类的概率。

朴素贝叶斯假设特征彼此独立,并且特征之间不存在相关性。然而,在现实生活中却并非如此。这种特征不相关的朴素假设,这就是这种算法被称为“朴素”的原因。

假设所有特征都是独立的,因此与复杂的算法相比,它的速度非常快。在某些情况下,比起更高的正确率,速度更受青睐。

朴素贝叶斯适用于文本分类、电子邮件垃圾邮件检测等高维数据的处理。

6. K-最近邻算法

要点:何时使用?何时不使用?

K-最近邻算法(K-nearest neighbors,KNN)是一种监督式机器学习算法,可用于解决分类问题,也可用于解决回归问题。KNN 的主要原理是数据点的值由其周围的数据点确定。

随着数据点数量的增加,KNN 算法将会变得非常慢,这是因为模型需要存储所有的数据点来计算它们之间的距离。这个原因也使得算法的内存效率不高。

另一个缺点就是 KNN 对异常值很敏感,因为异常值对最近点有影响(即使它的距离很远)。

积极的一面是:

  • 简单易懂。
  • 不做任何假设,所以它可以在非线性任务中实现。
  • 在多个类别的分类上效果很好。
  • 适用于分类任何和回归任务。

7. K-均值聚类

要点:何时使用?何时不使用?

K-均值聚类(K-Means Clustering)的目的是将数据分成 K 个聚类,使得同一个聚类中的数据点相似,而不同聚类中的数据点相距更远。

K-均值聚类算法无法猜测数据中存在多少个聚类。聚类的数量必须预先确定,这可能是一项具有挑战性的任务。

随着样本数量的增加,K-均值聚类算法将会变慢。因为在每一步中,它都要访问所有的数据点并计算距离。

K-均值聚类只能绘制线性边界。如果数据中存在分组的非线性结构,那么这种情况下,K-均值聚类就不是一个好选择。

积极的一面是:

  • 易于理解。
  • 相对较快。
  • 可针对大型数据集进行扩展。
  • 能够巧妙地选择初始质心的位置,从而加快收敛速度。
  • 保证收敛性。

我们已经介绍了关于每种算法的一些关键概念。给出的要点和注释绝对不是算法的全部解释。然而,我给出的这些内容肯定很重要,要在实施这些算法时,了解这些内容才能有所作为。

作者介绍:

Soner Yildirim,数据科学爱好者,撰写关于数据科学、人工智能、机器学习、深度学习、统计学、数学等文章。

原文链接:

https://towardsdatascience.com/7-key-points-on-7-machine-learning-algorithms-945ebda7a79

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/KN0Up6OlNkUCD3NsXJUY
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券