您所在的位置: 主页 > P逸生活 >初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

  • 浏览量470
  • 点赞量945
发布于:2020-06-19

初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

文:大数据文摘 bigdatadigest

如果你是一个初学/中等程度的数据科学家/分析师,并且想要将机器学习的算法运用到解决你关心的问题的上,那幺这篇文章正是为你写的!

初学者面对各种机器学习算法,一个典型的问题是:我应该使用哪种算法?问题的答案取决于许多因素,包括:

即使是经验丰富的数据科学家也无法在尝试不同的算法之前,就断定哪种算法会是最好的。在此我们并非倡导一蹴而就的方法,但是我们希望根据一些明确的因素,提供一些关于优先尝试哪些算法的指导。

机器学习算法小抄表

初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

这张机器学习算法小抄表帮助你从各种机器学习算法中完成选择,以找到适合你的具体问题的算法。本文将详细介绍如何使用这份小抄表。

由于该小抄表是专为入门级数据科学家和分析师设计的,所以在讨论算法时,我们将作出一些简化的假设。

这里推荐的算法来自于一些数据科学家、机器学习专家和开发人员的编译反馈和经验指导。有几个问题我们还没有达成统一——对于这些问题,我们试图突出共同点并调和差异。随着我们的库不断增长以包含一套更完整的方法,其他算法也会被陆续添加进来。

如何使用小抄表

将图表上的路径和算法标籤解读为「如果需要< 路径标籤> 则使用< 算法>」。例如:

§ 如果需要< 约减维度>,则使用< 主成分分析>。

§ 如果需要< 快速的数字预测>,则使用< 决策树> 或< 逻辑回归>。

§ 如果需要< 分层结果>,则使用< 层次聚类>。

有时候会有多个分支适用,而有时候一个也没有。重要的是,你要记住,这些路径旨在作为经验法则建议,因此有些建议并不准确。与我共同讨论的几位数据科学家说,找到最好算法的唯一方法就是尝试所有的算法。

机器学习算法的类型

本节提供广为流行的机器学习类型的概述。如果你已经熟悉这些算法,并希望继续讨论特定算法,则可以跳过本节并转到下面的「何时使用特定算法」。

1. 监督学习(Supervised learning)

监督的学习算法基于一组样本进行预测。例如,它可以使用历史售价来估计未来售价。在监督学习里,输入变量包含带标籤的训练数据和你感兴趣的某个输出变量。通过某种算法分析训练数据,就是一个学习将输入映射到输出的函数的过程。这个推断函数对训练数据进行泛化,即可预测未知情况下的结果,将新的未知输入映射到输出。

    分类:当数据用于预测分类变量时,监督学习也称为分类。如将标籤或指示符,像狗/猫分配给一张图片就是这种情况。当只有两个标籤时称为二分类。当有两类以上时,称为多分类。回归:当预测连续值时,就是一个回归问题。预测:这是根据过去和现在的数据对未来进行预测的过程。最常用来分析趋势。一个常见的例子是根据今年和前几年的销售情况估计下一年的销售额。

    2. 半监督学习(Semi-supervised learning)

    有监督学习的挑战是标注数据的过程可能既昂贵又耗时。如果标籤有限,我们可以使用未标记的样本来增强有监督学习。因为在这种情况下机器没有被完全监督,所以我们说是它是半监督的。在半监督学习里,我们同时使用未标记数据与少量标籤数据,从而提高学习準确性。

    3. 无监督学习(Unsupervised learning)

    执行无监督学习时,机器得到的是完全未标记的数据。这一算法常用于发现基础数据的内在模式,如聚类结构,低维流形或稀疏树/图。

      聚类:对一组数据样本做分组,使相似的样本归入一个组(或一个集群)中(根据某些标準)。这通常用于将整个数据集分成几组,以便在每个组中进行分析,帮助用户找到它们的内在模式。维度约减:减少需要考虑的变量数量。在许多应用中,原始数据具有非常高的维度特徵,并且一些特徵是冗余的或与任务无关的。降低维度有助于找到真实的,潜在的关係。

      4. 增强学习(Reinforcement learning)

      增强学习基于环境的反馈,达到分析和优化代理 (agent) 行为的目的。机器尝试不同的场景来发现哪些行为产生最大的回报,而不是被动接受行动指令。试错和延迟奖励将强化学习与其他技术区分开来。

      选择算法时的注意事项

      选择算法时,请务必考虑这些方面:準确度,训练时间和易用性。许多用户将準确度放在第一位,而初学者则倾向专注于他们最了解的算法上。

      拿到数据集时,首先要考虑的是如何获得结果,先不管这些结果怎幺样。初学者倾向于选择易于实现的算法,并可以快速获得结果。只要能够把这个当作整个过程的第一步,这样做没什幺不好。一旦获得一些结果并熟悉数据后,你可以花更多时间,使用更複杂的算法来加强对数据的理解,从而进一步改进结果。

      即使在这个阶段,拿到最高精度的方法可能还不是最好的算法,因为算法通常需要精心调整和广泛的训练才能获得最佳的性能。

      何时使用特定的算法

      更仔细地查看各个算法可以帮助了解它们的功能和使用方法。下文提供了更多的细节,并给出了什幺时候使用特定算法的提示,可以与小抄表对照着看。

      线性回归(Linear regression)和逻辑回归(Logistic regression)

      初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

      初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

      线性回归是用于建模连续因变量 y 与一个或多个预测变量 X 之间的关係的方法。

      y 和 X 之间的关係可以线性建模为 y =βTX+ε,给定训练集 {xi,yi} Ni = 1 ,(译注:此处公式请查看原文,copy 到 word 时变形了,下文各数学符号和公式同)参数向量 β 可以学习得到。

      如果因变量不是连续的而是分类的,则可以使用对数变换将线性回归转换为逻辑回归。逻辑回归是一种简单、快速而强大的分类算法。这里我们讨论二分类的情况,其中因变量 y 只取二进制值 {yi∈(-1,1)} Ni = 1(它可以容易地扩展到多类分类问题)。

       

      在逻辑回归中,我们使用不同的假设类来尝试预测给定示例属于「1」类的概率,而不是它属于「-1」类的概率。具体来说,我们将尝试学习以下形式的函数:p(yi = 1 | xi)=σ(βTxi)和 p(yi = -1 | xi)= 1-σ(βTxi)。这里 σ(x)= 1/(1 + exp(-x))是 S 形函数。给定训练样例 {xi,yi} Ni = 1,参数向量 β 可以通过求给定数据集的 β 的对数最大似然值来得到。

      初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

      线性支持向量机(Linear SVM)和内核支持向量机(Kernel SVM)

      内核技巧用于将非线性可分离函数映射到更高维度的线性可分离函数中。支持向量机(SVM)找到由超平面的法向量 w 和偏差 b 表示的分类器。这个超平面(边界)将不同的类用尽可能大的边距分隔开来。问题就转化为约束优化问题:

      初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

      当各类之间线性不可分离时,可以使用内核技巧将非线性可分离空间映射到更高维度的线性可分离空间。

      当大多数因变量是数字时,逻辑回归和 SVM 应该是分类的第一个尝试。这些模型易于实现,其参数易调,性能也相当不错。所以这些模型适合初学者。

      树(Trees)和树的组合(Ensemble trees)

      初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

      决策树,随机森林和梯度提升决策树都是基于决策树的算法。决策树有许多变体,但它们都做同样的事情——将特徵空间细分为具有相同标籤的区域。决策树易于理解和实施。然而,当非常深入地穷尽分支时,可能会过拟合。随机森林和梯度提升决策树是使用树算法同时实现良好準确性、克服过拟合问题的两种流行方式。

      神经网络(Neural networks)和深度学习(Deep learning)

      初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

      20 世纪 80 年代中期,由于并行和分布式处理能力,神经网络蓬勃发展。但是,由于广泛用于优化神经网络参数的反向传播训练算法对之无效,这一领域的研究受阻。而支持向量机(SVM)等简单模型,可以通过简单训练即可解决凸优化问题,逐渐取代神经网络在机器学习中的位置。

      近年来,新的、改进的训练技术,如无监督的预训练和分层贪婪训练,复甦了人们对神经网络的兴趣。越来越强大的计算能力,如图形处理单元(GPU)和大规模并行处理(MPP),也激发了神经网络的複兴。神经网络的複兴研究导致了具有数千层的模型的发明。

      初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

      换句话说,浅层神经网络已经演变成深度学习神经网络。深层神经网络对于有监督学习已经非常成功。当用于语音和图像识别时,深度学习堪比人类,甚至比人类做得更好。应用于无监督的学习任务,如特徵提取,只需少量的人为干预,深度学习即可从原始图像或语音中提取出特徵。

      神经网络由三部分组成:输入层,隐层和输出层。训练样本定义了输入和输出层。当输出层是分类变量时,神经网络可以用来解决分类问题。当输出层是连续变量时,神经网络可以用来做回归。当输出层与输入层相同时,神经网络可以用来提取内在特徵。隐层的数量定义了模型的複杂性和建模能力。

      K-means / K-modes, 高斯混合模型聚类(GMM clustering)

      初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

      K-means / k-modes、GMM 聚类旨在将 n 个观察值分为 k 个群集。K-means 定义硬分配:样本将与且仅与一个集群相关联。而 GMM 为每个样本定义一个软分配,每个样本具有与每个簇相关联的概率。当给定簇 k 的数量时,两种算法都简单且够快。

      初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

      初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

      当没有给出簇 k 的数量时,可以通过密度扩散连接样本来使用 DBSCAN(基于密度的空间聚类)。

      层级聚类(Hierarchical clustering)

      初学者碰上「机器学习」的第一道关卡:我应该使用哪种算法?

      层级聚类可以使用树结构(树形图)来可视化层级划分。它不需要输入聚类的数量,并且可以使用不同的 K 来以不同的粒度(即,可以细化/粗化的簇)来查看分区 (簇)。

      主成分分析(PCA),奇异值分解(SVD)和隐狄利克雷划分(LDA)

      我们通常不想将大量的特徵直接扔到机器学习算法中,因为一些特徵可能是不相关的,或者「固有的」维度可能小于特徵的数量。主成分分析(PCA),奇异值分解(SVD)和隐狄利克雷划分(LDA)均可用于降维。

      PCA 是一种无监督的聚类方法,将原始数据空间映射到较低维数空间,同时保留尽可能多的信息。PCA 基本上找到一个最保留数据方差的子空间,其中子空间由数据协方差矩阵的主要特徵向量定义。

      SVD 与 PCA 有亲缘关係,因为中心数据矩阵(特徵与样本)的 SVD 提供的主要左奇异向量也定义了与 PCA 相同的子空间。然而,SVD 是一种更通用的技术,因为它也可以做 PCA 做不了的事情。例如,一个用户-电影的矩阵,通过 SVD 能够提取可以在推荐系统中使用的用户画像和电影画像。此外,SVD 也被广泛应用于自然语言处理(NLP)中,充当主题建模工具,这一应用也被称为潜在语义分析。

      自然语言处理中一个相关技术是隐狄利克雷划分(LDA)。LDA 是概率主题模型,正如高斯混合模型(GMM)将连续数据分解为高斯密度那样,LDA 能将文档分解为主题。与 GMM 不同的是,LDA 模型离散数据(文档中的单词),并且限制了主题根据 Dirichlet 分布先验分布。

       

      ——

      (转载大数据文摘作品,原文标题为 〈选择困难症?一文通解如何选择最合适的机器学习算法 〉。图片来源:pixabay, CC Licensed。)

    相关推荐