zoukankan      html  css  js  c++  java
  • 快速选择合适的机器学习算法

    本文主要适用于初学者到中级数据科学家或分析师,他们有兴趣识别和应用机器学习算法来解决他们感兴趣的问题。

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

    • 数据的大小、质量和性质。
    • 可用计算时间。
    • 任务的紧迫性。
    • 你想用数据做什么。

    即使是经验丰富的数据科学家也不能在尝试不同的算法之前,判断哪种算法会最好。 我们并不是倡导一个一步到位的方法,但是我们希望首先根据一些明确的因素来提供一些尝试哪些算法的指导。

    机器学习算法速查表

    8cd0e819adc727d3cd7bd02725ca348eb7f17e5b

    机器学习算法速查表帮助你从各种机器学习算法中选择,以找到适合你的具体问题的算法。 本文将引导你完成如何使用速查表的过程。

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

    这里推荐的算法是来自几个数据科学家和机器学习专家和开发人员的编译反馈和提示。有几个问题,我们还没有达成协议,对于这些问题,我们试图突出共性及调和差异。

    稍后将会添加其他算法,因为我们的库增长包含一套更完整的可用方法。

    如何使用速查表

    将图表上的路径和算法标签读为“如果 <路径标签> 则使用<算法>”。 例如:

    • 如果要进行降维,则使用主成分分析
    • 如果需要快速的数预测,请使用决策树或逻辑回归。
    • 如果需要分层结果,请使用层次聚类。

    有时多个分支适用,其他时候他们都不是绝配。 重要的是要记住,这些路径旨在作为有经验的建议,因此有些建议并不准确。我谈到的几位数据科学家说,找到最好算法的唯一方法就是尝试所有的算法。

    机器学习算法的类型

    本节提供最受欢迎的机器学习类型的概述。 如果熟悉这些类,并希望继续讨论特定的算法,则可以跳过本节并转到下面的何时使用特定算法

    监督学习

    监督学习算法基于一组示例进行预测。例如可以使用历史销售来估计未来价格。通过监督学习,有一个输入变量,由标记的训练数据和期望的输出变量组成。使用算法分析训练数据,来得到将输入映射到输出的函数。这个推断函数通过从训练数据推广来预测未知情况下的结果来映射新的未知示例。

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

    半监督学习

    监督学习的挑战是标注数据可能是昂贵和耗时的。 如果标签有限,可以使用未标记的示例来增强监督学习。 因为在这种情况下机器没有被完全监督,所以我们说机器是半监督的。 使用半监督学习,你可以使用少量标签数据的未标记示例来提高学习准确性。

    监督学习

    执行监督学习时,机器将呈现完全未标记的数据。 被要求发现基础数据的固有模式,如聚类结构,低维流形或稀疏树和图。

    • 聚类:分组一组数据示例,使一个组(或一个集群)中的示例与其他组中的示例更相似(根据某些标准)。 这通常用于将整个数据集分成几组。 可以在每个组中进行分析,以帮助用户找到固有模式。
    • 降维:减少考虑的变量数量。 在许多应用中,原始数据具有非常高的维度特征,并且一些特征是冗余的或与任务无关的。 降低维度有助于找到真实的,潜在的关系。

    增强学习

    增强学习根据环境的反馈分析和优化agent行为。机器尝试不同的场景来发现哪些行为会产生最大的回报,而不是被告知要采取哪些行动。试误与延迟奖励区别增强学习与其他技术。

    选择算法时的注意事项

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

    提供一个数据集时,首先要考虑的是如何获得结果,无论这些结果如何。 初学者倾向于选择易于实现的算法,并可以快速获得结果。 这样做很好,因为这只是过程的第一步。 获得一些结果并熟悉数据后,可以花费更多时间使用更复杂的算法来加强对数据的理解,从而进一步改进结果。

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

    何时使用特定的算法

    更仔细地查看各个算法可以帮助了解它们提供的内容以及如何使用它们。 这些描述提供了更多的细节,并提供了什么时候使用特定算法,与速查表对准

    线性回归和逻辑回归

    2368207df9f66e6bebae7bec9af6c9d77a298c7a
    0d0925e6f343fe2b85e1d401702cfdae540afea5

     

     

    线性回归是对连续因变量y与一个或多个预测变量X之间的关系进行建模的方法.YX之间的关系可以线性建模为4e18a198a7d6f5e7f7a7908a0a6acf4fc6399e89。根据训练样本9b5d4693352cb9c7488b7d98660d0aad931c200d,可以学习参数向量β。

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

    在逻辑回归中,我们使用不同的假设类来尝试预测给定示例属于“1”类的概率,而不是它属于“-1”类的概率。 具体来说,我们将尝试学习以下形式的函数:7ef6dc857c4130af7e7593a9f3dfbaf86268ad74edb689aa2dcd3440d76a84ec82a730298010144e这里467ffff444e4b3b66029eb2adefbc85d9ce1212a是sigmoid函数。给定训练样例535b5d837f9156eddfd04feed8bfdafca45a69f3,可以通过使给定数据集β的对数似然度最大化来得知参数向量β。

    9d8ae980ab5d38322e973d31c836e0019e43fa24

    9e20d3dfe9c61fe8f8925ffd0122aac75dbbdd52

    线性SVM和核SVM

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

    84bb2e0d4c58ddf6b076cd8456470c393d7e9c53

    支持向量机(SVM)训练算法找到由超平面的法向量w和偏差b表示的分类器。 这个超平面(边界)将不同的类分隔开尽可能大的边距。 该问题可以转化为约束优化问题:

    cf6f2234a428f8ffda012ffd93dd49cde2ecca88

    当类不可线性分离时,可以使用核机制将非线性可分离空间映射到更高维度的线性可分离空间。

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

    树和集成树

    87a92df4a53445b387f066981975aa863285a2ff

    决策树、随机森林和梯度提升都是基于决策树的算法。决策树有许多变种,但它们都做同样的事情--将特征空间细分为具有相同标签的区域。决策树易于理解和实施。 然而,当我们剪枝并深度运行树时往往过度拟合数据。随机森林和梯度提升是使用树算法实现良好准确性以及克服过拟合问题的两种流行方式。

    神经网络和深度学习

    049396d28d9afccb929cb16c13af4ed69ab14657

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

    近年来,新的和改进的训练技术,如非监督的预训练和逐层贪婪训练,导致对神经网络兴趣的兴起。 越来越强大的计算能力,如图形处理单元(GPU)和大规模并行处理(MPP),也激发了神经网络的复兴。神经网络复兴的研究引起了成千上万层模型的发明。

    换句话说,浅层神经网络已经演变成深度学习神经网络。 深层神经网络对于监督学习已经非常成功。 当用于语言和图像识别时,深层次的学习表现与甚至比人类更好。 适用于非监督的学习任务,如特征提取,深度学习还从原始图像或语音中提取少量人为干预的特征。

    4c3655ee479296a718d508781d039f3a8806281d

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

    K-means/ K-modesGMM(高斯混合模型)聚类

    663c4b51f789dee2bee96a2e099080caf1182ae3
    5f7a0639c4fa2925f1037f644e96ad5fc8c570af

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

    DBSCAN

    6f2d45485749de7912c1b06742382bc07b495e7f

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

    分层聚类

    dc049bb829b807507eaced6c57d76eac9194e186

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

    PCA, SVD  LDA

    我们通常不想将大量的特征直接馈送到机器学习算法中,因为一些特征可能是不相关的,或者“固有的”维度可能小于特征的数量。 主成分分析(PCA),奇异值分解(SVD)和潜在Dirichlet分配(LDA)均可用于降维。

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

    SVD与PCA相关,意思是中心数据矩阵(特征与样本)的SVD提供了定义与PCA相同的子空间的主要左奇异向量。 然而,SVD是一种更通用的技术,因为它也可以做PCA可能不做的事情。 例如,用户对电影矩阵的SVD能够提取可以在推荐系统中使用的用户资料和电影简介。 此外,SVD也被广泛用作自然语言处理(NLP)中称为潜在语义分析的主题建模工具。

    NLP中的相关技术是潜在的Dirichlet分配(LDA)。 LDA是概率主题模型,它以与高斯混合模型(GMM)类似的方式将文档分解为主题,将连续数据分解为高斯密度。 与GMM不同,LDA模型离散数据,并且限制了主题根据Dirichlet分布先验分布。

    结论

    这是易于遵循的工作流程。在此得出的当试图解决一个新问题时的结论:

    • 定义问题。你想解决什么问题?
    • 从简单的开始。熟悉数据和基线结果。
    • 然后尝试更复杂的东西。

    SAS视觉数据挖掘和机器学习为初学者学习机器学习和应用机器学习方法提供了一个良好的平台。

     

    309439dee90dd521f0f0ef23096ed4787c0694a3

    作者:Hui Li

    Dr. Hui Li是SAS数据科学技术的首席科学家。 她目前的工作重点是SAS Viya的深度学习,认知计算和SAS推荐系统。 她获得杜克大学电气和计算机工程博士学位和硕士学位。 在加入SAS之前,她曾在杜克大学任研究科学家,并在Signal Innovation Group,Inc.担任研究工程师。 她的研究兴趣包括机器学习,大型异构数据,协同过滤建议,贝叶斯统计建模和增强学习。

    原文地址:http://click.aliyun.com/m/21630/

  • 相关阅读:
    (双指针 二分) leetcode 167. Two Sum II
    (双指针) leetcode 485. Max Consecutive Ones
    (双指针) leetcode 27. Remove Element
    (String) leetcode 67. Add Binary
    (数组) leetcode 66. Plus One
    (N叉树 BFS) leetcode429. N-ary Tree Level Order Traversal
    (N叉树 递归) leetcode 590. N-ary Tree Postorder Traversal
    (N叉树 递归) leetcode589. N-ary Tree Preorder Traversal
    (N叉树 DFS 递归 BFS) leetcode 559. Maximum Depth of N-ary Tree
    (BST 递归) leetcode98. Validate Binary Search Tree
  • 原文地址:https://www.cnblogs.com/iyulang/p/6894224.html
Copyright © 2011-2022 走看看