精华内容
下载资源
问答
  • 常见机器学习算法优缺点总结

    千次阅读 2019-08-04 17:49:46
    常见机器学习算法优缺点总结 1. 回归 回归是一种用于连续型数值变量预测和建模的监督学习算法,使用案例包括房地产价格、股价走势或学生成绩等的预测。 回归任务的特征是具有数值型目标变量的标注数据集。换言之...

    常见机器学习算法优缺点总结

    1. 回归

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

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

     

    1.1 (正则化)线性回归

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

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

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

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

    1.2 回归树(决策树)(集成方法)

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

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

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

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

    1.3 深度学习

    深度学习是指能够学习极端复杂模式的多层神经网络。它们在输入层和输出层之间使用隐藏层来对数据的中间表征建模,这一点是其他算法很难做到的。

    深度学习还有几个重要的机制,如卷积、漏失等,这使该算法可以有效学习高维数据。然而,相对于其他算法,深度学习需要更多的数据来进行训练,因为该模型需要估算更大数量级的参数。

    • 优点:深度学习是当前特定领域的最先进技术,如计算机视觉与语音识别。深度神经网络在图像、音频和文本数据上表现优异,也很容易通过反向传播算法来更新数据模型。它们的架构(即层级的数量和结构)能适用于多种问题,同时隐藏层还能降低算法对特征工程的依赖。

    • 缺点:深度学习算法往往不适合用于通用目的,因为它们需要大量的数据。事实上,对于经典的机器学习问题,深度学习的表现并不比集成方法好。此外,由于训练所需的密集型计算,它们需要更多的专门知识才能进行调参(如设定架构与超参数)。

    1.4 荣誉奖:最近邻算法

    最近邻算法是“基于实例的”,也就意味着它需要保留每一个训练观察值。最近邻算法通过搜寻最相似的训练样本来预测新样本的观察值。

    它是内存密集型算法,处理高维数据时的效果并不理想,同时还需要高效的距离函数来计算相似度。在实践中,使用正则化的回归或树型集成方法通常是更好的选择。

    2.分类

    分类是一种用于分类变量建模及预测的监督学习算法,使用案例包括员工流失、邮件过滤、金融欺诈等的预测。

    正如你所见,许多回归算法都有其对应的分类形式,分类算法往往适用于类别(或其可能性)的预测,而非数值。

    2.1 (正则化)逻辑回归

    逻辑回归是线性回归所对应的分类方法,基本概念由线性回归推导而出。逻辑回归通过逻辑函数将预测映射到 0 到 1 的区间,因此预测值可被视为某一类别的概率。

    该模型依旧是线性的,只有当数据线性可分时(例如,数据可被某决策平面完全分离),这一算法才会有很好的表现。逻辑回归同样能惩罚模型系数以进行正则化。

    • 优点:输出结果会有很好的概率解释,而算法也能通过正则化以避免过拟合。逻辑模型很容易通过随机梯度下降来更新数据模型。

    • 缺点:逻辑回归在面对多元或非线性决策边界时性能较差。

    2.2 分类树(集成方法)

    对应于回归树的分类算法是分类树。通常,它们都是指决策树,更为严谨的说法是“分类回归树(CART)”,也就是非常有名的 CART 算法。

    • 优点:跟回归方法一样,分类树的集成方法在实践中的表现同样十分优异。它们在应对异常数据时有着相当的稳健性与可扩展性。由于其层级结构,分类树的集成方法能够很自然地对非线性决策边界建模。

    • 缺点:不可约束,单棵树容易过拟合,集成方法可削弱这一影响。

    2.3 深度学习

    深度学习同样很容易适应于分类问题。实际上,深度学习应用地更多的是分类任务,如图像分类等。

    • 优点:深度学习非常适合于音频、文本与图像数据的分类。

    • 缺点:与回归方法一样,深度神经网络需要大量的数据进行训练,所以也不是一个通用目的算法。

    2.4 支持向量机

    支持向量机使用一个名为核函数的技巧,来将非线性问题变换为线性问题,其本质是计算两个观测数据的距离。支持向量机算法所寻找的是能够最大化样本间隔的决策边界,因此又被称为大间距分类器。

    举例来说,使用线性核函数的支持向量机类似于逻辑回归,但更具稳健性。因而在实践中,支持向量机最大用处是用非线性核函数来对非线性决策边界进行建模。

    • 优点:支持向量机能对非线性决策边界建模,又有许多可选的核函数。在面对过拟合时,支持向量机有着极强的稳健性,尤其是在高维空间中。

    • 缺点:不过,支持向量机是内存密集型算法,选择正确的核函数就需要相当的j技巧,不太适用较大的数据集。在当前的业界应用中,随机森林的表现往往要优于支持向量机。

    2.5 朴素贝叶斯

    朴素贝叶斯是一种基于条件概率和计数的简单算法,其本质是一个概率表,通过训练数据来更新其中的概率。它预测新观察值的过程,就是根据样本的特征值在概率表中来寻找最为可能的类别。

    被称为“朴素”原因,是其核心的特征条件独立性假设(例如,每一项输入特征都相互独立),在现实中几乎是不成立的。

    • 优点:即便条件独立性假设很难成立,但实践中的朴素贝叶斯算法却能表现得很好。该算法易于实现且能伴随数据集更新。

    • 缺点:因为朴素贝叶斯的算法太过简单,所以很容易被上述分类算法所取代。

    3.聚类

    聚类是基于数据内部结构来寻找样本自然族群(集群)的无监督学习任务,使用案例包括用户画像、电商物品聚类、社交网络分析等。

    由于聚类属于无监督学习,也就不会输出“正确的答案”,评价结果时往往要用到数据可视化。如果你需要“正确的答案”,亦即训练集中存在预标注的集群,那么用分类算法会更加合适。

    3.1 K 均值

    K 均值是基于样本点间的几何距离来度量聚类的通用目的算法。由于集群围绕在聚类中心,结果会接近于球状并具有相似的大小。

    我们之所以推荐该算法给初学者,是因为它不仅足够简单,而且足够灵活,对于大多数问题都能给出合理的结果。

    • 优点:K 均值是最为流行的聚类算法,因为它足够快速、足够简单,如果你的预处理数据和特征工程都做得十分有效,那它将具备令人惊叹的灵活性。

    • 缺点:该算法需要指定集群的数量,而 K 值的选择通常都不是那么容易确定的。另外,如果训练数据中的真实集群并不是类球状的,那么 K 均值聚类会得出一些比较差的集群。

    3.2 仿射传播

    仿射传播是一种相对较新的聚类算法,它基于两个样本点之间的图形距离来确定集群,其结果倾向于更小且大小不等的集群。

    • 优点:仿射传播不需要指出明确的集群数量,但需要指定“sample preference”和“damping”等超参数。

    • 缺点:仿射传播的主要缺点是训练速度较慢,且需要大量内存,因而难于扩展到大数据集。此外,该算法同样在假定潜在的集群要接近于球状。

    3.3 分层 / 层次

    分层聚类,又名层次聚类,其算法基于以下概念来实现:

    1) 每一个集群都从一个数据点开始;

    2) 每一个集群都可基于相同的标准进行合并;

    3) 重复这一过程,直至你仅剩下一个集群,这就获得了集群的层次结构。

    • 优点:层次聚类的最主要优点,是集群不再假定为类球形。此外,它可以很容易扩展到大数据集。

    • 缺点:类似于 K 均值,该算法需要选定集群的数量,即算法完成后所要保留的层次。

    3.4 DBSCAN

    DBSCAN 是一种基于密度的聚类算法,它将样本点的密集区域组成集群;其最新进展是HDBSCAN,它允许集群的密度可变。

    • 优点:DBSCAN 不需要假定类球形集群,其性能可以扩展。此外,它不需要每个点都被分配到集群中,这就降低了集群的噪音。

    • 缺点:用户必须要调整“epsilon”和“min_sample”这两个超参数来定义集群密度。DBSCAN 对此非常敏感。

    维度灾难

    在机器学习领域,“维度(Dimensionality)”通常指数据集中的特征数量(即输入变量的个数)。

    当特征的个数特别大的时候(相对于数据集中观测样本的数量来说),训练出一个有效的模型,对算法要求就会特别高(即,用现有的算法训练出一个有效的模型特别困难)。这就是所谓的“维度灾难(Curse of Dimensionality)”,特别是对依赖于距离计算的聚类算法而言。

    对于“维度灾难”,有位 Quora 用户给出了一个非常好的类比:

    假设有一条100码的直线,而你在该直线的某处掉了一枚硬币。要找回硬币并不难,你只需沿着这条线走就行了,最多花上你2分钟时间。 然后,假设有一个长和宽都是100码的广场,而你是把硬币掉在广场的某个位置。现在再想找回它,可就不容易了,这好比在两个并排的足球场中找针,可能会耗上你几天时间。 再然后,假设是一个长、宽、高都是100码的立方体,那就好比是在30层楼高的大型体育场内找zhen找针……

    随着维度的增加,在空间中搜索的难度也会变得愈加困难。

    Quora链接:www.quora.com/What-is-the…

    这就需要数据降维的办法:特征选取和特征提取。

    4.特征选取

    特征选取是从你的数据集中过滤掉不相关或冗余的特征。特征选取与特征提取的关键区别在于:特征选取是从原特征集中选取一个子特征集,而特称提取则是在原特征集的基础上重新构造出一些(一个或多个)全新的特征。

    需要注意的是,某些监督式机器学习算法已经具备了内在的特征选取机制:比如正则回归与随机森林。通常,我们是建议一开始优先尝试这些算法,如果它们能匹配上你的问题的话。对此我们已经做过介绍。

    作为独立的任务,特征选取既可以是非监督式的(如方差阈值),又可以是监督式的(比遗传算法)。有必要的话,你还可以把多种方法以某种合理的方式整合在一起。

    4.1 方差阈值

    方差阈值会摒弃掉观测样本那些观测值改变较小的特征(即,它们的方差小于某个设定的阈值)。这样的特征的价值极小。

    举例来说,如果你有一份公共健康数据,其中96%的人都是35岁的男性,那么去掉“年龄”和“性别”的特征也不会损失重要信息。

    由于方差阈值依赖于特征值的数量级,你应该对特征值先做归一化处理。

    • 优点:使用方差阈值方式进行数据降维只需一个非常可靠的直觉:特征值不怎么改变的特征,不会带来什么有用的信息。这是在你建模初期进行数据降维相对安全的一种方式。

    • 缺点:如果你正在解决的问题并不需要进行数据降维,即便使用了方差阈值也几乎没有什么作用。此外,你需要手工设置、调整方差阈值,这个过程相当具有技术含量。我们建议从一个保守(也就是,较低)的阈值开始。

    4.2 相关性阈值

    相关性阈值会去掉那些高度相关的特征(亦即,这些特征的特征值变化与其他特征非常相似)。它们提供的是冗余信息。

    举例来说,如果你有一个房地产数据,其中两个特征分别是“房屋面积(单位:平方英尺)”和“房屋面积(单位:平方米)”,那么,你就可以去掉其中的任何一个(这非常安全,也不会给你的模型带来任何负面影响)。

    问题是,你该去掉哪一个特征呢?首先,你应该计算所有特征对的相关系数。而后,如果某个特征对的相关系数大于设定的阈值,那你就可以去掉其中平均绝对相关系数较大的那一个。

    • 优点:使用相关性阈值同样只需一个可靠的直觉:相似的特征提供了冗余的信息。对于某些含有强相关性特征较多的数据集,有些算法的稳健性并不好,因此,去掉它们可以提升整个模型的性能(计算速度、模型准确度、模型稳健性,等等)。

    • 缺点:同样,你还是必须手动去设置、调整相关性阈值,这同样是个棘手且复杂的过程。此外,如果你设置的阈值过低,那么你将会丢失掉一些有用的信息。无论在什么时候,我们都更倾向于使用那些内置了特征选取的算法。对于没有内置特征提取的算法,主成分分析是一个很好的备用方案。

    4.3 遗传算法

    遗传算法是可用于不同任务的一大类算法的统称。它们受进化生物学与自然选择的启发,结合变异与交叉,在解空间内进行高效的遍历搜索。这里有一篇非常棒的简介:“遗传算法背后的原理引入”。

    在机器学习领域,遗传算法主要有两大用处。

    其一,用于最优化,比如去找神经网络的最佳权重。

    其二,是用于监督式特征提取。这一用例中,“基因”表示单个特征,同时“有机体”表示候选特征集。“种群体”内的每一个有机体都会基于其适应性进行评分,正如在测试数据集上进行模型性能测试。最能适应环境的有机体将会生存下来,并不断繁衍,一直迭代,直至最终收敛于某个最优的解决方案。

    • 优点:在穷举搜索不可行的情况下,对高维数据集使用遗传算法会相当有效。当你的算法需要预处理数据却没有内置的特征选取机制(如最近邻分类算法),而你又必须保留最原始的特征(也就是不能用任何主成分分析算法),遗传算法就成了你最好的选择。这一情况在要求透明、可解释方案的商业环境下时有发生。

    • 缺点:遗传算法为你解决方案的实施带来了更高的复杂度,而多数情况下它们都是不必要的麻烦。如果可能的话,主成分分析或其它内置特征选取的算法将会更加高效和简洁。

    4.4 荣誉奖:逐步搜索

    逐步搜索是一个基于序列式搜索的监督式特征选取算法。它有两种形式:前向搜索和反向搜索。

    对于前向逐步搜索,你从没有任何特征开始。接着,从候选特征集中,选择一个特征来训练模型;然后,保存模型性能最好对应的那个特征;再往下,你不断往训练模型的特征集中添加特征,一次添加一个特征,直到你模型的性能不再提升。

    反向逐步搜索的过程相同,只不过顺序相反:从把所有的特征都用于训练模型,接着一次性移除一个特征,直到模型的性能骤降。

    我们提及这一算法纯粹是源于某些历史原因。尽管很多教科书都把逐步搜索算法作为一个有效的方法,但它所表现出来的性能总是不及其它监督式方法,比如正则化。逐步搜索有很多明显的缺陷,最致命的一点就是它是一个贪心算法,无法面对未来变化的冲击。我们并不推荐这个算法。

    5.特征提取

    特征提取是用来创造一个新的、较小的特征集,但仍能保留绝大部分有用的信息。值得再提的是,特征选取是用来保留原始特征集中的一部分子特征集,而特征提取则是创造全新的特征集。

    跟特征选取一样,某些算法内部已经具有了特征提取的机制。最好的案例就是深度学习,它可以通过每一层隐神经层,提取出越来越有用的能表征原始数据的特征。我们在“深度学习”部分已给出相关的讲解。

    作为独立的任务,特征提取可以是非监督式的(如主成分分析)或监督式的(如线性判别分析)。

    5.1 主成分分析

    主成分分析是一个非监督式算法,它用来创造原始特征的线性组合。新创造出来的特征他们之间都是正交的,也就是没有关联性。具体来说,这些新特征是按它们本身变化程度的大小来进行排列的。第一个主成分代表了你的数据集中变化最为剧烈的特征,第二个主成分代表了变化程度排在第二位的特征,以此类推。

    因此,你可以通过限制使用主成分的个数来达到数据降维的目的。例如,你可以仅采用能使累积可解释方差为90%的主成分数量。

    你需要在使用主成分分析之前,对数据进行归一化处理。否则,原始数据中特征值数量级最大的那个特征将会主导你新创造出来的主成分特征。

    • 优点:主成分分析是一项多用途技术,实用效果非常好。它部署起来快速、简单,也就是说,你可以很方便地测试算法性能,无论使用还是不使用主成分分析。此外,主成分分析还有好几种变体和扩展(如:核主成分分析(kernel PCA),稀疏主成分分析(sparse PCA)),用以解决特定的问题。

    • 缺点:新创造出来的主成分并不具备可解释性,因而在某些情况下,新特征与应用实际场景之间很难建立起联系。此外,你仍然需要手动设置、调整累积可解释方差的阈值。

    5.2 线性判别分析

    线性判别分析不是隐含狄利克雷分布,它同样用来构造原始特征集的线性组合。但与主成分分析不同,线性判别分析不会最大化可解释方差,而是最大化类别间的分离程度。

    因此,线性判别分析是一种监督式学习方式,它必须使用有标记的数据集。那么,线性判别分析与主成分分析,到底哪种方法更好呢?这要视具体的情况而定,“没有免费的午餐”原理在这里同样适用。

    线性判别分析同样依赖于特征值的数量级,你同样需要先对特征值做归一化处理。

    • 优点:线性判别分析是一种监督式学习,基于这种方式获取到的特征可以(但并不总是能)提升模型性能。此外,线性判别分析还有一些变体(如二次线性判别分析),可用来解决特定的问题。

    • 缺点:与主成分分析一样,新创造出来的特征不具有可解释性。而且,你同样要手动设置、调整需要保留的特征数量。线性判别分析需要已经标记好的数据,因此,这也让它更加接地气儿。

    5.3 自编码机

    自编码机是一种人工神经网络,它是用来重新构建原始输入的。例如,图像自编码机是训练来重新表征原始数据的,而非用以区分图片里面的小猫、小狗。

    但这有用吗?这里的关键,是在隐含层搭建比输入层和输出层更少数量的神经元。这样,隐含层就会不断学习如何用更少的特征来表征原始图像。

    因为是用输入图像来作为目标输出,自编码机被视为无监督学习。它们可被直接使用(如:图像压缩)或按顺序堆叠使用(如:深度学习)。

    • 优点:自编码机是人工神经网络中的一种,这表示它们对某些特定类型的数据表现会非常好,比如图像和语音数据。

    • 缺点:自编码机是一种人工神经网络。这就是说,它们的优化需要更多的数据来进行训练。它们并不能作为一般意义上的数据降维算法来用。

    小结

    基于我们的经验,以下是一些有用的建议:

    1. 练习,练习,练习。要找到一些数据集,趁热打铁。了解这些算法只是一个开头,掌握好它们就需要你不停地实践。

    2. 掌握好基础。掌握这里算法,能为你去运用机器学习打下坚实的基础,因为其他所有的算法都是基于上述算法的一些变形。举例来说,先掌握主成分分析和线性判别分析之前的区别,而后再去学习线性判别分析的相关细节以及二次线性判别分析之间的差别,效果会更好。

    3. 铁律,好的数据远胜于花哨的算法。在机器学习应用领域,算法总是可以替换的;而有效的探索性分析、数据清洗与特征工程总是能大力提升你的结果。我们会经常提及这一点,因为这就是该死的真相!

    本文为转载,感谢作者的总结 原文地址

     

    展开全文
  • 我们将根据我们的经验讨论每种算法的优缺点。 对机器学习算法进行分类是棘手的,有几种合理的方法; 它们可以分为生成/判别,参数/非参数,监督/无监督等。 例如, Scikit-Learn的文档页面按其学习机制对算法进行...

    在本指南中,我们将通过现代机器学习算法进行实用,简洁的介绍。虽然存在其他这样的列表,但它们并没有真正解释每种算法的实际权衡,我们希望在这里做。我们将根据我们的经验讨论每种算法的优缺点。

    对机器学习算法进行分类是棘手的,有几种合理的方法; 它们可以分为生成/判别,参数/非参数,监督/无监督等。

    例如,  Scikit-Learn的文档页面按其学习机制对算法进行分组  。 这产生了如下类别:

    • 广义线性模型
    • 支持向量机
    • 最近的邻居
    • 决策树
    • 神经网络
    • 等等…

    但是,根据我们的经验,这并不总是最实用的分组算法。那是因为对于应用机器学习,你通常不会想,  “我今天想要训练一个支持向量机!”

    相反,您通常会考虑最终目标,例如预测结果或对观察进行分类。

    因此,我们想引入另一种分类算法的方法,即通过 机器学习任务。

     

    没有免费午餐

    在机器学习中,有一种称为“无免费午餐”的定理。简而言之,它表明没有一种算法能够最好地解决每个问题,而且它对于监督学习(即预测建模)尤为重要。

    例如,您不能说神经网络总是比决策树更好,反之亦然。有许多因素在起作用,例如数据集的大小和结构。

    因此,您应该  针对您的问题尝试许多不同的算法,同时使用数据的保留“测试集”来评估性能并选择获胜者。

    没有免费午餐

    当然,您尝试的算法必须适合您的问题,这是选择正确的机器学习任务的地方。作为类比,如果您需要清理房屋,您可以使用真空吸尘器,扫帚或拖把,但你不会破坏铲子并开始挖掘。

     

    机器学习任务

    这是本系列的第1部分。在这一部分中,我们将介绍“三大”机器学习任务,这是迄今为止最常见的任务。他们是:

    1. 回归
    2. 分类
    3. 聚类

    第2部分中,我们将介绍降维,包括:

    1. 特征选择
    2. 特征提取

    继续之前的两点说明:

    • 我们不会介绍特定于域的修改,例如自然语言处理。
    • 我们不会涵盖所有算法。有太多要列出的内容,并且新的一直会弹出。但是,此列表  将为 您提供每个任务成功的当代算法的代表性概述。

     

    1.回归

    回归是用于建模和预测连续数值变量的监督学习任务。示例包括预测房地产价格,股票价格变动或学生考试成绩。

    回归任务的特征  在于具有数字目标变量的标记数据集。换句话说,您可以使用一些“基础事实”值来监控您的算法。

    线性回归

    线性回归

    1.1.(正则化)线性回归

    线性回归是回归任务最常用的算法之一。它以最简单的形式尝试将直超平面拟合到数据集(即只有2个变量时为直线)。正如您可能猜到的,当数据集中的变量之间存在线性关系时,它可以正常工作  。

    在实践中,简单的线性回归通常被其正则化的对应物(LASSO,Ridge和Elastic-Net)所取代。正则化是一种惩罚大系数以避免过度拟合的技术,并且应该调整惩罚的强度。

    • 优点:  线性回归很容易理解和解释,并且可以正则化以避免过度拟合。此外,使用随机梯度下降可以使用新数据轻松更新线性模型。
    • 缺点: 当存在非线性关系时,线性回归表现不佳。它们不够灵活,无法捕获更复杂的模式,添加正确的交互项或多项式可能非常棘手且耗时。
    • 实现:Python  / R. 

     

    1.2.回归树(合奏)

    回归树(又名决策树)通过反复将数据集拆分为单独的分支来分层学习,从而最大化每个分割的信息增益。这种分支结构允许回归树自然地学习非线性关系。

    集合方法,例如随机森林(RF)和梯度提升树(GBM),结合了来自许多单独树木的预测。我们不会在这里介绍它们的基础机制,但在实践中,RF通常表现非常好,而GBM更难调整,但往往具有更高的性能上限。

    • 优势:  决策树可以学习非线性关系,并且对异常值非常稳健。合奏在实践中表现很好,赢得了许多经典(即非深度学习)机器学习比赛。
    • 缺点:  不受约束的单个树木容易过度拟合,因为它们可以保持分支,直到它们记住训练数据。但是,这可以通过使用合奏来缓解。
    • 实现:  随机森林 -  Python  / R,Gradient Boosted Tree -  Python / R.

     

    1.3.深度学习

    深度学习是指可以学习极其复杂模式的多层神经网络。他们在输入和输出之间使用“隐藏层”,以模拟  其他算法无法轻易学习的数据的中间表示

    它们有几个重要的机制,例如卷积和辍学,使它们能够有效地从高维数据中学习。然而,与其他算法相比,深度学习仍然需要更多的数据来训练,因为模型具有更多的参数来估计。

    • 优势:  深度学习是某些领域的当前最新技术,例如计算机视觉和语音识别。深度神经网络在图像,音频和文本数据上表现非常好,并且可以使用批量传播轻松更新新数据。它们的架构(即层的数量和结构)可以适应许多类型的问题,它们的隐藏层减少了对特征工程的需求。
    • 缺点:  深度学习算法通常不适合作为通用算法,因为它们需要非常大量的数据。实际上,对于经典机器学习问题,它们通常优于树集合。此外,它们在训练时计算密集,并且需要更多的专业知识来调整(即设置架构和超参数)。
    • 实现: Python  / R.

     

    1.4.荣誉提名:最近邻居

    最近邻算法是“基于实例的”,这意味着保存每个训练观察。然后,他们通过搜索最相似的训练观察并汇集其值来对新观察进行预测。

    这些算法是存储器密集型的,对于高维数据执行不良,并且需要有意义的距离函数来计算相似性。在实践中,训练正则化回归或树集合几乎总是更好地利用你的时间。

     

    2.分类

    分类是用于建模和预测分类变量的监督学习任务。示例包括预测员工流失,电子邮件垃圾邮件,财务欺诈或学生信函等级。

    正如您将看到的,许多回归算法都有分类对应物。算法适用于预测类(或类概率)而不是实数。

    逻辑回归

    Logistic回归

    2.1.(正规化)Logistic回归

    Logistic回归是线性回归的分类对应物。预测通过逻辑函数映射到0到1之间,这意味着预测可以解释为类概率。

    模型本身仍然是“线性的”,因此当您的类可线性分离时它们可以很好地工作  (即它们可以由单个决策表面分隔)。逻辑回归也可以通过用可调惩罚强度惩罚系数来规则化。

    • 优点:  输出具有良好的概率解释,并且算法可以被规则化以避免过度拟合。使用随机梯度下降可以使用新数据轻松更新逻辑模型。
    • 缺点:  当存在多个或非线性决策边界时,逻辑回归往往表现不佳。它们不够灵活,不能自然地捕捉更复杂的关系。
    • 实现: Python  / R.

     

    2.2.分类树(合奏)

    分类树是回归树的分类对应物。它们通常被称为“决策树”或通过总称“分类和回归树(CART)”。

    • 优势:  与回归一样,分类树集合在实践中也表现得非常好。它们对异常值具有鲁棒性,可扩展,并且由于其层次结构,能够自然地模拟非线性决策边界。
    • 缺点:无约束的单个树木容易过度拟合,但这可以通过集合方法得到缓解。
    • 实现:  随机森林 - Python / R,Gradient Boosted Tree -  Python / R.

     

    2.3.深度学习

    为了延续这一趋势,深度学习也很容易适应分类问题。实际上,分类通常是深度学习的较常见用途,例如图像分类。

    • 优点:  深度学习在分类音频,文本和图像数据时表现良好。
    • 缺点:  与回归一样,深度神经网络需要非常大量的数据来训练,因此它不被视为通用算法。
    • 实现: Python  / R.

     

    2.4.支持向量机

    支持向量机(SVM)使用称为内核的机制,它基本上计算两个观察之间的距离。然后,SVM算法找到决策边界,该边界最大化单独类的最接近成员之间的距离。

    例如,具有线性内核的SVM类似于逻辑回归。因此,在实践中,SVM的好处通常来自使用非线性内核来模拟非线性决策边界。

    • 优势:  SVM可以模拟非线性决策边界,并且有许多内核可供选择。它们对过度拟合也相当强大,特别是在高维空间。
    • 缺点:  然而,SVM是内存密集型的,由于选择正确内核的重要性而难以调整,并且不能很好地扩展到更大的数据集。目前在该行业中,随机森林通常优于SVM。
    • 实现: Python / R.

     

    2.5.朴素贝叶斯

    朴素贝叶斯(NB)是一种基于条件概率和计数的非常简单的算法。从本质上讲,您的模型实际上是一个通过您的训练数据更新的概率表。要预测新观察,您只需根据其特征值“查找”“概率表”中的类概率。

    它被称为“天真”,因为它的条件独立的核心假设(即所有输入特征彼此独立)在现实世界中很少成立。

    • 优势:  尽管条件独立假设很少成立,但NB模型实际上在实践中表现出色,特别是它们的简单性。它们易于实现,可以根据您的数据集进行扩展。
    • 缺点:  由于它们非常简单,NB模型经常被经过适当训练的模型打败,并使用之前列出的算法进行调整。
    • 实现: Python  / R.

     

    3.聚类

    聚类是一种无监督的学习 任务,用于根据数据集中的固有结构查找自然的观察分组(即聚类)。示例包括客户细分,在电子商务中对类似项目进行分组以及社交网络分析。

    由于聚类是无监督的(即没有“正确答案”),因此数据可视化通常用于评估结果。如果存在“正确答案”(即您在训练集中预先标记了群集),则分类算法通常更合适。

     

    K均值

    K均值

    3.1.K均值

    K-Means是一种通用算法,它基于点之间的几何距离(即坐标平面上的距离)来制作聚类。聚类围绕质心分组,使它们呈球状并具有相似的大小。

    这是我们推荐的初学者算法,因为它简单,但足够灵活,可以为大多数问题获得合理的结果。

    • 优势:  K-Means是最受欢迎的聚类算法,因为它可以快速,简单,并且如果您预处理数据并设计有用的功能,则会非常灵活。
    • 缺点:  用户必须指定群集的数量,这并不总是容易做到的。此外,如果数据中真正的基础聚类不是球状的,那么K-Means将产生较差的聚类。
    • 实现: Python / R.

     

    3.2.亲和力传播

    亲和力传播是一种相对较新的聚类技术,可根据点之间的图形距离进行聚类。簇往往较小并且尺寸不均匀。

    • 优点:用户不需要指定簇的数量(但需要指定'样本首选项'和'阻尼'超参数)。
    • 缺点:亲和传播的主要缺点是它非常慢且占用大量内存,因此很难扩展到更大的数据集。此外,它还假设真正的基础集群是球状的。
    • 实现: Python / R.

     

    3.3.分层/凝聚

    分层聚类,即凝聚聚类,是基于相同思想的一套算法:(1)从它自己的聚类中的每个点开始。(2)对于每个集群,根据某些标准将其与另一个集群合并。(3)重复直到只剩下一个簇,并留下簇的  层次结构

    • 优势:  层次聚类的主要优点是不假设聚类是球状的。此外,它可以很好地扩展到更大的数据集。
    • 缺点:  与K-Means非常相似,用户必须选择簇的数量(即算法完成后层次结构的级别为“保持”)。
    • 实现: Python / R.

     

    3.4.DBSCAN

    DBSCAN是一种基于密度的算法,可以为密集的点区域创建聚类  。最近还有一个名为HDBSCAN的新开发项目,它允许不同密度的簇。

    • 优势: DBSCAN不承担球状星团,其性能可扩展。此外,它不需要将每个点分配给集群,从而降低集群的噪声(这可能是一个弱点,具体取决于您的用例)。
    • 缺点:用户必须调整超参数'epsilon'和'min_samples',它们定义了簇的密度。DBSCAN对这些超参数非常敏感。
    • 实现: Python / R.

     

    总结

    我们刚刚通过现代算法旋转了“三大”机器学习任务:回归,分类和聚类。

    第2部分中,我们将研究降维的算法,包括特征选择和特征提取。

    但是,我们希望根据我们的经验给您一些建议:

    1. 首先......练习,练习,练习。阅读算法可以帮助您在一开始就找到自己的立足点,但真正的掌握来自于练习。当您完成项目和/或竞赛时,您将培养实用的直觉,这使您能够获得几乎任何算法并有效地应用它。
    2. 第二......掌握基本面。 我们无法在此列出许多算法,其中一些算法在特定情况下非常有效。但是,几乎所有这些都是对此列表中算法的一些改编,这将为应用机器学习提供坚实的基础。
    3. 最后,请记住,更好的数据优于更高级的算法。在应用机器学习中,算法是商品,因为您可以根据问题轻松切换它们。但是,有效的探索性分析,数据清理和功能工程可以显着提高您的结果。

    原文:https://elitedatascience.com/machine-learning-algorithms

    展开全文
  • 原文地址:《一文看懂深度学习(白话解释+8个优缺点+4个典型算法)》 深度学习有很好的表现,引领了第三次人工智能的浪潮。目前大部分表现优异的应用都用到了深度学习,大红大紫的 AlphaGo 就使用到了深度学习。 ...

    本文首发自 easyAI - 人工智能知识库
    原文地址:《一文看懂深度学习(白话解释+8个优缺点+4个典型算法)

    一文看懂深度学习

    深度学习有很好的表现,引领了第三次人工智能的浪潮。目前大部分表现优异的应用都用到了深度学习,大红大紫的 AlphaGo 就使用到了深度学习。

    本文将详细的给大家介绍深度学习的基本概念、优缺点和主流的4个典型算法。

    深度学习、神经网络、机器学习、人工智能的关系

    深度学习、机器学习、人工智能

    简单来说:

    1. 深度学习是机器学习的一个分支(最重要的分支)
    2. 机器学习是人工智能的一个分支

    深度学习、机器学习、人工智能的关系

    目前表现最好的一些应用大部分都是深度学习,正是因为深度学习的突出表现,引发了人工智能的第三次浪潮。详情可以看《人工智能的发展史——3次 AI 浪潮

    深度学习、神经网络

    深度学习的概念源于人工神经网络的研究,但是并不完全等于传统神经网络。

    不过在叫法上,很多深度学习算法中都会包含"神经网络"这个词,比如:卷积神经网络、循环神经网络。

    所以,深度学习可以说是在传统神经网络基础上的升级,约等于神经网络。

    深度学习和神经网络的关系

    大白话解释深度学习

    看了很多版本的解释,发现李开复在《人工智能》一书中讲的是最容易理解的,所以下面直接引用他的解释:

    我们以识别图片中的汉字为例。

    假设深度学习要处理的信息是“水流”,而处理数据的深度学习网络是一个由管道和阀门组成的巨大水管网络。网络的入口是若干管道开口,网络的出口也是若干管道开口。这个水管网络有许多层,每一层由许多个可以控制水流流向与流量的调节阀。根据不同任务的需要,水管网络的层数、每层的调节阀数量可以有不同的变化组合。对复杂任务来说,调节阀的总数可以成千上万甚至更多。水管网络中,每一层的每个调节阀都通过水管与下一层的所有调节阀连接起来,组成一个从前到后,逐层完全连通的水流系统。

    深度学习类似一个水流系统

    那么,计算机该如何使用这个庞大的水管网络来学习识字呢?

    比如,当计算机看到一张写有“田”字的图片,就简单将组成这张图片的所有数字(在计算机里,图片的每个颜色点都是用“0”和“1”组成的数字来表示的)全都变成信息的水流,从入口灌进水管网络。

    深度学习-将图片数字化

    我们预先在水管网络的每个出口都插一块字牌,对应于每一个我们想让计算机认识的汉字。这时,因为输入的是“田”这个汉字,等水流流过整个水管网络,计算机就会跑到管道出口位置去看一看,是不是标记由“田”字的管道出口流出来的水流最多。如果是这样,就说明这个管道网络符合要求。如果不是这样,就调节水管网络里的每一个流量调节阀,让“田”字出口“流出”的水最多。

    这下,计算机要忙一阵了,要调节那么多阀门!好在计算机的速度快,暴力的计算加上算法的优化,总是可以很快给出一个解决方案,调好所有阀门,让出口处的流量符合要求。

    深度学习-识别田字

    下一步,学习“申”字时,我们就用类似的方法,把每一张写有“申”字的图片变成一大堆数字组成的水流,灌进水管网络,看一看,是不是写有“申”字的那个管道出口流水最多,如果不是,我们还得再调整所有的阀门。这一次,要既保证刚才学过的“田”字不受影响,也要保证新的“申”字可以被正确处理。

    深度学习-学习申字

    如此反复进行,知道所有汉字对应的水流都可以按照期望的方式流过整个水管网络。这时,我们就说,这个水管网络是一个训练好的深度学习模型了。当大量汉字被这个管道网络处理,所有阀门都调节到位后,整套水管网络就可以用来识别汉字了。这时,我们可以把调节好的所有阀门都“焊死”,静候新的水流到来。

    深度学习-学习所有汉字

    与训练时做的事情类似,未知的图片会被计算机转变成数据的水流,灌入训练好的水管网络。这时,计算机只要观察一下,哪个出水口流出来的水流最多,这张图片写的就是哪个字。

    深度学习大致就是这么一个用人类的数学知识与计算机算法构建起来的整体架构,再结合尽可能多的训练数据以及计算机的大规模运算能力去调节内部参数,尽可能逼近问题目标的半理论、半经验的建模方式。

    传统机器学习 VS 深度学习

    传统机器学习和深度学习的相似点

    传统机器学习和深度学习的相似点

    在数据准备和预处理方面,两者是很相似的。

    他们都可能对数据进行一些操作:

    • 数据清洗
    • 数据标签
    • 归一化
    • 去噪
    • 降维

    对于数据预处理感兴趣的可以看看《AI 数据集最常见的6大问题(附解决方案)

    传统机器学习和深度学习的核心区别

    传统机器学习和深度学习的核心区别

    传统机器学习的特征提取主要依赖人工,针对特定简单任务的时候人工提取特征会简单有效,但是并不能通用。

    深度学习的特征提取并不依靠人工,而是机器自动提取的。这也是为什么大家都说深度学习的可解释性很差,因为有时候深度学习虽然能有好的表现,但是我们并不知道他的原理是什么。

    深度学习的优缺点

    深度学习的优缺点

    优点1:学习能力强

    从结果来看,深度学习的表现非常好,他的学习能力非常强。

    优点2:覆盖范围广,适应性好

    深度学习的神经网络层数很多,宽度很广,理论上可以映射到任意函数,所以能解决很复杂的问题。

    优点3:数据驱动,上限高

    深度学习高度依赖数据,数据量越大,他的表现就越好。在图像识别、面部识别、NLP 等部分任务甚至已经超过了人类的表现。同时还可以通过调参进一步提高他的上限。

    优点4:可移植性好

    由于深度学习的优异表现,有很多框架可以使用,例如 TensorFlowPytorch。这些框架可以兼容很多平台。

    缺点1:计算量大,便携性差

    深度学习需要大量的数据很大量的算力,所以成本很高。并且现在很多应用还不适合在移动设备上使用。目前已经有很多公司和团队在研发针对便携设备的芯片。这个问题未来会得到解决。

    缺点2:硬件需求高

    深度学习对算力要求很高,普通的 CPU 已经无法满足深度学习的要求。主流的算力都是使用 GPU 和 TPU,所以对于硬件的要求很高,成本也很高。

    缺点3:模型设计复杂

    深度学习的模型设计非常复杂,需要投入大量的人力物力和时间来开发新的算法和模型。大部分人只能使用现成的模型。

    缺点4:没有"人性",容易存在偏见

    由于深度学习依赖数据,并且可解释性不高。在训练数据不平衡的情况下会出现性别歧视、种族歧视等问题。

    4种典型的深度学习算法

    4种典型的深度学习算法

    卷积神经网络 - CNN

    CNN 的价值:

    1. 能够将大数据量的图片有效的降维成小数据量(并不影响结果)
    2. 能够保留图片的特征,类似人类的视觉原理

    CNN 的基本原理:

    1. 卷积层 – 主要作用是保留图片的特征
    2. 池化层 – 主要作用是把数据降维,可以有效的避免过拟合
    3. 全连接层 – 根据不同任务输出我们想要的结果

    CNN 的实际应用:

    1. 图片分类、检索
    2. 目标定位检测
    3. 目标分割
    4. 人脸识别
    5. 骨骼识别

    了解更多《一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)

    循环神经网络 - RNN

    RNN 是一种能有效的处理序列数据的算法。比如:文章内容、语音音频、股票价格走势…

    之所以他能处理序列数据,是因为在序列中前面的输入也会影响到后面的输出,相当于有了“记忆功能”。但是 RNN 存在严重的短期记忆问题,长期的数据影响很小(哪怕他是重要的信息)。

    于是基于 RNN 出现了 LSTM 和 GRU 等变种算法。这些变种算法主要有几个特点:

    1. 长期信息可以有效的保留
    2. 挑选重要信息保留,不重要的信息会选择“遗忘”

    RNN 几个典型的应用如下:

    1. 文本生成
    2. 语音识别
    3. 机器翻译
    4. 生成图像描述
    5. 视频标记

    了解更多《一文看懂循环神经网络-RNN(独特价值+优化算法+实际应用)

    生成对抗网络 - GANs

    假设一个城市治安混乱,很快,这个城市里就会出现无数的小偷。在这些小偷中,有的可能是盗窃高手,有的可能毫无技术可言。假如这个城市开始整饬其治安,突然开展一场打击犯罪的「运动」,警察们开始恢复城市中的巡逻,很快,一批「学艺不精」的小偷就被捉住了。之所以捉住的是那些没有技术含量的小偷,是因为警察们的技术也不行了,在捉住一批低端小偷后,城市的治安水平变得怎样倒还不好说,但很明显,城市里小偷们的平均水平已经大大提高了。

    警察们开始继续训练自己的破案技术,开始抓住那些越来越狡猾的小偷。随着这些职业惯犯们的落网,警察们也练就了特别的本事,他们能很快能从一群人中发现可疑人员,于是上前盘查,并最终逮捕嫌犯;小偷们的日子也不好过了,因为警察们的水平大大提高,如果还想以前那样表现得鬼鬼祟祟,那么很快就会被警察捉住。为了避免被捕,小偷们努力表现得不那么「可疑」,而魔高一尺、道高一丈,警察也在不断提高自己的水平,争取将小偷和无辜的普通群众区分开。随着警察和小偷之间的这种「交流」与「切磋」,小偷们都变得非常谨慎,他们有着极高的偷窃技巧,表现得跟普通群众一模一样,而警察们都练就了「火眼金睛」,一旦发现可疑人员,就能马上发现并及时控制——最终,我们同时得到了最强的小偷和最强的警察。

    同时得到了最强的小偷和最强的警察

    了解更多《什么是生成对抗网络 - GAN?(基本概念+工作原理)

    深度强化学习 - RL

    强化学习算法的思路非常简单,以游戏为例,如果在游戏中采取某种策略可以取得较高的得分,那么就进一步「强化」这种策略,以期继续取得较好的结果。这种策略与日常生活中的各种「绩效奖励」非常类似。我们平时也常常用这样的策略来提高自己的游戏水平。

    在 Flappy bird 这个游戏中,我们需要简单的点击操作来控制小鸟,躲过各种水管,飞的越远越好,因为飞的越远就能获得更高的积分奖励。

    这就是一个典型的强化学习场景:

    • 机器有一个明确的小鸟角色——代理
    • 需要控制小鸟飞的更远——目标
    • 整个游戏过程中需要躲避各种水管——环境
    • 躲避水管的方法是让小鸟用力飞一下——行动
    • 飞的越远,就会获得越多的积分——奖励

    游戏是典型的强化学习场景

    你会发现,强化学习和监督学习、无监督学习 最大的不同就是不需要大量的“数据喂养”。而是通过自己不停的尝试来学会某些技能。

    了解更多:《一文看懂什么是强化学习?(基本概念+应用场景+主流算法)

    总结

    深度学习属于机器学习的范畴,深度学习可以说是在传统神经网络基础上的升级,约等于神经网络。

    深度学习和传统机器学习在数据预处理上都是类似的。核心差别在特征提取环节,深度学习由机器自己完成特征提取,不需要人工提取。

    深度学习的优点:

    1. 学习能力强
    2. 覆盖范围广,适应性好
    3. 数据驱动,上限高
    4. 可移植性好

    深度学习的缺点:

    1. 计算量大,便携性差
    2. 硬件需求高
    3. 模型设计复杂
    4. 没有"人性",容易存在偏见

    深度学习的4种典型算法:

    1. 卷积神经网络 - CNN
    2. 循环神经网络 - RNN
    3. 生成对抗网络 - GANs
    4. 深度强化学习 - RL
    展开全文
  • 机器学习各类算法的优缺点

    千次阅读 2018-07-30 22:06:19
    1.逻辑回归 二项logistic回归模型是一种分类模型,由条件概率分布P(Y|X)表示,形式为参数化的logistic分布。这里随机变量X取值为实数,随机变量Y取值为1或0。可以通过有监督的方法来...缺点: 1. 容易欠拟合,分...

    目录

    1.逻辑回归

    2.支持向量机

    3.决策树

    4.KNN算法

    5.朴素贝叶斯算法

    6.随机森林

    7.AdaBoost算法

    8.GBDT算法

    9.XGBoost

    10.人工神经网络


    1.逻辑回归


    二项logistic回归模型是一种分类模型,由条件概率分布P(Y|X)表示,形式为参数化的logistic分布。这里随机变量X取值为实数,随机变量Y取值为1或0。可以通过有监督的方法来估计模型参数。
    优点:
    1. 计算代价不高,易于理解和实现;
    2. 适用于需要得到有分类概率额场景

    3.对小数据噪声的鲁棒性好,不会收轻微的多重共线性的影响
    缺点:
    1. 容易欠拟合,分类精度可能不高
    2.数据有缺失和特征很大的时候表现不好 。

    2.支持向量机


    对于两类线性可分学习任务,SVM找到一个间隔最大的超平面将两类样本分开,最大间隔能够保证该超平面具有最好的泛化能力。
    优点:
    1. 可以解决小样本情况下的ML问题;
    2. 可以提高泛化性能;
    3. 可以解决高维问题,避免维数灾难;
    4. 可以解决非线性问题;
    5. 可以避免神经网络结构选择和局部极小点问题。
    参数C和g的选择对分类性能的影响:
    C是惩罚系数,C越大,交叉validation高,容易过学习;
    g是核函数的到达0的速率,g越小,函数下降快,交叉validation高,也容易造成过学习。
    缺点:
    1. 对缺失数据敏感;
    2. 对非线性问题没有通用解决方案,必须谨慎选择kernel function来处理。

     

    SVM算法的主要优点有:

        1) 解决高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。

        2) 仅仅使用一部分支持向量来做超平面的决策,无需依赖全部数据。

        3) 有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。

        4)样本量不是海量数据的时候,分类准确率高,泛化能力强。

    SVM算法的主要缺点有:

        1) 如果特征维度远远大于样本数,则SVM表现一般。

        2) SVM在样本量非常大,核函数映射维度非常高时,计算量过大,不太适合使用。(不适用于大数据集)

        3)非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。

        4)SVM对缺失数据敏感。

     

                  1)一般推荐在做训练之前对数据进行归一化,当然测试集中的数据也需要归一化。。

        2)在特征数非常多的情况下,或者样本数远小于特征数的时候,使用线性核,效果已经很好,并且只需要选择惩罚系数C即可。

        3)在选择核函数时,如果线性拟合不好,一般推荐使用默认的高斯核'rbf'。这时我们主要需要对惩罚系数C和核函数参数γ进行艰苦的调参,通过多轮的交叉验证选择合适的惩罚系数C和核函数参数γ。

        4)理论上高斯核不会比线性核差,但是这个理论却建立在要花费更多的时间来调参上。所以实际上能用线性核解决问题我们尽量使用线性核。

    3.决策树


    一种启发式算法,核心是在决策树各个节点上应用信息增益等准则来选取特征,进而递归地构造决策树。
    优点:
    1. 计算复杂度不高,易于理解和解释,可以理解决策树所表达的意义;
    2. 数据预处理阶段比较简单,且可以处理缺失数据;
    3. 能够同时处理数据型和分类型属性,且可对有许多属性的数据集构造决策树;
    4. 是一个白盒模型,给定一个观察模型,则根据所产生的决策树很容易推断出相应的逻辑表达式;
    5. 在相对短的时间内能够对大数据集合做出可行且效果良好的分类结果。
    6.  可以对有许多属性的数据集构造决策树。

    缺点:
    1. 对于那些各类别样本数目不一致的数据,信息增益的结果偏向于那些具有更多数值的属性;
    2. 对噪声数据较为敏感;
    3. 容易出现过拟合问题;
    4. 忽略了数据集中属性之间的相关性;
    5.处理缺失数据时的困难

    参考blog

     决策树优点:

                  1)简单直观,生成的决策树很直观。

        2)基本不需要预处理,不需要提前归一化,处理缺失值。

        3)使用决策树预测的代价是O(log_2m)。 m为样本数。

        4)既可以处理离散值也可以处理连续值。很多算法只是专注于离散值或者连续值。

        5)可以处理多维度输出的分类问题。

        6)相比于神经网络之类的黑盒分类模型,决策树在逻辑上可以得到很好的解释

        7)可以交叉验证的剪枝来选择模型,从而提高泛化能力。

        8) 对于异常点的容错能力好,健壮性高。

    决策树算法的缺点:

        1)决策树算法非常容易过拟合,导致泛化能力不强。可以通过设置节点最少样本数量和限制决策树深度来改进。

        2)决策树会因为样本发生一点点的改动,就会导致树结构的剧烈改变。这个可以通过集成学习之类的方法解决。

        3)寻找最优的决策树是一个NP难的问题,我们一般是通过启发式方法,容易陷入局部最优。可以通过集成学习之类的方法来改善。

        4)有些比较复杂的关系,决策树很难学习,比如异或。这个就没有办法了,一般这种关系可以换神经网络分类方法来解决。

        5)如果某些特征的样本比例过大,生成决策树容易偏向于这些特征。这个可以通过调节样本权重来改善。


    4.KNN算法


    一种惰性分类方法,从训练集中找出k个最接近测试对象的训练对象,再从这k个训练对象中找出居于主导的类别,将其赋给测试对象。
    优点:
    1. 简单有效,容易理解和实现;
    2. 重新训练的代价较低(类别体系的变化和训练集的变化);
    3. 计算时间和空间线性于训练集的规模; 
    4. 错误率渐进收敛于贝叶斯错误率,可作为贝叶斯的近似;
    5. 适合处理多模分类和多标签分类问题;
    6. 对于类域的交叉或重叠较多的待分类样本集较为适合;
    缺点:
    1. 是懒散学习方法,比一些积极学习的算法要慢;
    2. 计算量比较大,需对样本点进行剪辑;
    3. 对于样本不平衡的数据集效果不佳,可采用加权投票法改进;
    4. k值的选择对分类效果有很大影响,较小的话对噪声敏感,需估计最佳k值。
    5.可解释性不强,计算量大。

    KNN的主要优点有:

        1) 理论成熟,思想简单,既可以用来做分类也可以用来做回归

        2) 可用于非线性分类

        3) 训练时间复杂度比支持向量机之类的算法低,仅为O(n)

        4) 和朴素贝叶斯之类的算法比,对数据没有假设,准确度高,对异常点不敏感

        5) 由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的                          交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合

        6)该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分

    KNN的主要缺点有:

        1)计算量大,尤其是特征数非常多的时候

        2)样本不平衡的时候,对稀有类别的预测准确率低

        3)KD树,球树之类的模型建立需要大量的内存

        4)使用懒散学习方法,基本上不学习,导致预测时速度比起逻辑回归之类的算法慢

        5)相比决策树模型,KNN模型可解释性不强




    5.朴素贝叶斯算法


    贝叶斯分类器的分类原理是利用各个类别的先验概率,再利用贝叶斯公式及独立性假设计算出属性的类别概率以及对象的后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类别。
    优点:
    1. 数学基础坚实,分类效率稳定,容易解释;
    2. 所需估计的参数很少,对缺失数据不太敏感;
    3. 无需复杂的迭代求解框架,适用于规模巨大的数据集。
    缺点:
    1. 属性之间的独立性假设往往不成立(可考虑用聚类算法先将相关性较大的属性进行聚类);
    2. 需要知道先验概率,分类决策存在错误率。
     

    朴素贝叶斯的主要优点有:

        1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。

        2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。

        3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。

        朴素贝叶斯的主要缺点有:   

        1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

        2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。

        3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。

        4)对输入数据的表达形式很敏感。


    6.随机森林

     RF的主要优点有:

        1) 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。最主要的优点。

        2) 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。

        3) 在训练后,可以给出各个特征对于输出的重要性

        4) 由于采用了随机采样,训练出的模型的方差小,泛化能力强。

        5) 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。

        6) 对部分特征缺失不敏感。

      RF的主要缺点有:

        1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合

        2) 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。



    7.AdaBoost算法


    提升方法是从弱学习算法出发,反复学习,得到一系列的弱分类器(即基本分类器),然后组合这些弱分类器,构成一个强分类器,大多数的提升方法都是改变训练数据集的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列的弱分类器。
    优点:
    1. 分类精度高;
    2. 可以使用各种方法构建子分类器,Adaboost算法提供的是框架;
    3. 简单,且不用做特征筛选;
    4. 不会造成overfitting。
    缺点:
    1. 对分类错误的样本多次被分错而多次加权后,导致权重过大,影响分类器的选择,造成退化问题;(需改进权值更新方式)
    2. 数据不平衡问题导致分类精度的急剧下降;
    3. 算法训练耗时,拓展困难;
    4. 存在过拟合,鲁棒性不强等问题。

    Adaboost的主要优点有:

        1)Adaboost作为分类器时,分类精度很高

        2)在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。

        3)作为简单的二元分类器时,构造简单,结果可理解。

        4)不容易发生过拟合

    Adaboost的主要缺点有:

        1)对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。

    8.GBDT算法

     

    GBDT主要的优点有:

        1) 可以灵活处理各种类型的数据,包括连续值和离散值。

        2) 在相对少的调参时间情况下,预测的准确率也可以比较高。这个是相对SVM来说的。

        3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数

    GBDT的主要缺点有:

        1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。


    9.XGBoost

     

    1.XGBoost与GBDT相比,其优势:

    • 将树模型的复杂度加入到正则项中,来避免过拟合,因此泛化性能会优于GBDT。
    • 损失函数用泰勒展开式展开,同时用到了一阶和二阶导数,可以加快优化速度。
    • GBDT只支持CART作为基学习器,XGBoost还支持线性分类器作为基学习器。
    • 引进了特征子采样,像随机森林那样,既能避免过拟合,又能减少计算。
    • 在寻找最优分割点时,考虑到传统的贪心算法效率较低,实现了一种近似贪心算法,用来加速和减少内存小号,除此之外,还考虑了稀疏数据集合缺失值的处理。
    • XGBoost支持并行处理。XGBoost的并行不是模型生成的并行,而是在特征上的并行,将特征排序后以block的形式存储在内存中,在后面迭代重复使用这个结构。这个block也使得并行化成为了可能,其次在节点分裂时,计算每个特征的增益,最终选择增益最大的那个特征去做分割,那么各个特征的增益计算就可以开多线程进行。

    2.与lightGBM相比的不足点:

    • XGBoosting采用预排序,在迭代之前,对结点的特征做预排序,遍历选择最优分割点,数据量大时,贪心法耗时,LightGBM方法采用histogram算法,占用的内存低,数据分割的复杂度更低。
    • XGBoosting采用level-wise生成决策树,同时分裂同一层的叶子,从而进行多线程优化,不容易过拟合,但很多叶子节点的分裂增益较低,没必要进行跟进一步的分裂,这就带来了不必要的开销;LightGBM采用深度优化,leaf-wise生长策略,每次从当前叶子中选择增益最大的结点进行分裂,循环迭代,但会生长出更深的决策树,产生过拟合,因此引入了一个阈值进行限制,防止过拟合。

    参考:https://zhuanlan.zhihu.com/p/58292935


    10.人工神经网络


    优点:
    1. 分类的准确度高,并行分布处理能力强,分布存储及学习能力强;
    2. 对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系,具备联想记忆的功能等。
    缺点:
    1. 神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;
    2. 不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;
    3. 学习时间过长,甚至可能达不到学习的目的。


    遗传算法
    优点:
    1. 与问题领域无关且快速随机的搜索能力;
    2. 搜索从群体出发,具有潜在的并行性,可以进行多个个体的同时比较,鲁棒性好;
    3. 搜索使用评价函数启发,过程简单;
    4. 使用概率机制进行迭代,具有随机性;
    5. 具有可扩展性,容易与其他算法结合。
    缺点:
    1. 遗传算法的编程实现比较复杂,找到最优解之后还需要对问题进行解码;
    2. 三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验。
    3.算法的搜索速度比较慢,要得要较精确的解需要较多的训练时间;
    4. 算法对初始种群的选择有一定的依赖性,能够结合一些启发算法进行改进。

    展开全文
  • 文章发布于公号【数智物语】 (ID:decision_...导读:在我们日常生活中所用到的推荐系统、智能图片美化应用和聊天机器人等应用中,各种各样的机器学习和数据处理算法正尽职尽责地发挥着自己的功效。本文筛选并...
  • 目录 学习方式 监督式学习: 非监督式学习: ...深度学习 降低维度算法 集成算法: 决策树 一、 决策树优点 二、决策树缺点 三、改进措施 三、应用领域 KNN算法 一、KNN算法的优点 ...
  • 深度学习 发展 优缺点

    千次阅读 2018-07-26 22:46:11
    由于早期的计算资源的限制,以及数据量不足,导致前2个时期提出的神经网络,大多规模很小,而且在一定程度上还不如传统的统计机器学习方法,而且神经网络的结构相对简单,因此并没有体现出神经网络的潜在价值。...
  • 机器学习VS深度学习的区别

    千次阅读 2017-05-30 08:54:46
    机器学习深度学习简介  机器学习  Tom Mitchell 关于机器学习的定义被广泛引用,如下所示:  对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而不断自我完善,那么我们称这...
  • 尽管深度学习具有如此高的性能,但使用经典的机器学习和一些特定的情况下,使用线性回归或决策树而不是大型深度网络会更好。在过去几年中,深度学习已成为大多数AI类型问题的首选技...
  • 深度学习

    千次阅读 多人点赞 2019-01-14 14:51:41
    #深度学习 我与这世间所有的羁绊,一旦连上,就再也断不开。 羁绊越深,痛苦便越深。 关于这篇深度学习的文章,总共六章。...谈及深度学习,必须要考虑其前身机器学习。下面是关于机器学习的介绍,网上找的…...
  • 网易深度学习岗位面试过程中有被问到。答案就是几何间隔与样本的误分次数间存在关系:   ,其中的分母就是样本到分类间隔距离,分子中的R是所有样本中的最长向量值),即:         ...
  • 2. 从机器学习深度学习2.1 机器学习的发展历史 0.写在前面 在机器学习深度学习领域学习了一年之后,想写一篇关于自己对ML和DL的理解,因为学了这么多算法,需要跳出来总结总结ML和DL。我们从发展历史开始讲起。 ...
  • 机器学习、神经网络、深度学习区别

    万次阅读 多人点赞 2019-05-30 09:37:57
    这两个概念实际上是互相交叉的,例如,卷积神经网络(Convolutional neural networks,简称CNNs)就是一种深度的监督学习下的机器学习模型,而深度置信网(Deep Belief Nets,简称DBNs)就是一种无监督学习下的机器...
  • 机器学习期末试题.rar

    2020-05-13 09:03:23
    北京航空航天大学机器学习研究生课程近两年试题。19年主要考察的内容有:1,贝叶斯决策,基于最小风险和最小方差的决策,ppt例题 ...9,给出机器学习深度学习的联系,各有什么优缺点,你认为未来深度学习会如何发展。
  • 机器学习常见算法优缺点汇总

    千次阅读 2018-05-20 18:50:03
    向AI转型的程序员都关注了这个号????????????人工智能大数据与深度学习 公众号:datayx机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他...
  • 机器学习优缺点汇总

    万次阅读 2018-08-30 23:05:49
    决策树优点 1、决策树易于理解和解释,可以...二、决策树缺点 1、对缺失数据处理比较困难。 2、容易出现过拟合问题。 3、忽略数据集中属性的相互关联。 4、ID3算法计算信息增益时结果偏向数值比较多的特征。 ...
  • 机器学习 —— 各类算法优缺点总结

    千次阅读 2018-02-17 09:40:33
    在我们日常生活中所用到的推荐系统、智能图片美化应用和聊天机器人等应用中,各种各样的机器学习和数据处理算法正尽职尽责地发挥着自己的功效。本文筛选并简单介绍了一些最常见算法类别,还为每一个类别列出了一些...
  • 现在,我们不再试图用代码来描述每一个图像类别,决定转而使用机器学习的方法处理图像分类问题。 目前,许多研究者使用CNN等深度学习模型进行图像分类;另外,经典的KNN和SVM算法也取得不错的结果。然而,我们...
  • 机器学习常见算法分类,算法优缺点汇总

    万次阅读 多人点赞 2017-04-14 12:08:13
    机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法。本文为您总结一下常见的机器学习算法,以供您在工作和学习中参考。  机器学习的算法很多。很多时候...
  • 机器学习算法优缺点总结

    万次阅读 2018-06-30 15:16:40
    一、最近邻算法(KNN) 概述   KNN将测试集的数据特征...KNN具有精度高、对异常值不敏感、无数据输入假定、简单有效的特点,但其缺点也很明显,计算复杂度太高。要分类一个数据,却要计算所有数据,这在大数据的...
  • 一、机器学习 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之...
  • 传统机器学习深度神经网络对比

    千次阅读 2020-04-29 00:42:53
    Table of ContentAlpha GO神经网络从工业的角度对比传统机器学习和深度神经网络 Alpha GO 虽然大家会说AlexNet是深度学习的开始,但真正引爆整个AI行业的可以说是Alpha GO(人称阿尔法狗)。Alphabet子公司Deepmind...
  • 目录深度学习框架 1.Theano & Ecosystem 2.Torch 3. Tensorflow 4. Caffe 5. CNTK 6.DSSTNE 7.Speed 机器学习框架 1.sci-kit learn 2.Apache Mahout 3.SystemML 4.Microsoft
  • 首先看看深度学习的定义: “Deep learning is a particular kind of machine learning that achieves great power and flexibility by learning to represent the world as nested hierarchy of concepts, with ...
  • 手动整理了1500多个深度学习机器学习相关算法在实际应用中的项目,完全可以作为本科生当前较新的毕业设计题目选择方向。讲道理有些题目,比如“用户评分的隐式成分信息的研究”这种题目取的就比较广,有点科学研究...
  • 机器学习深度学习的最佳框架大比拼 在过去的一年里,咱们讨论了六个开源机器学习和/或深度学习框架:Caffe,Microsoft Cognitive Toolkit(又名CNTK 2),MXNet,Scikit-learn,Spark MLlib和TensorFlow。如果把...
  • 来源:https://www.zhihu.com/question/382278216编辑:深度学习与计算机视觉声明:仅做学术分享,侵删作者:图灵的猫https://www.zhihu....
  • 1.请简要介绍下SVM。 SVM,全称是support vector machine,中文名叫支持向量机。SVM是一个面向数据的分类算法,它的目标是为确定一个分类超平面...支持向量机学习方法包括构建由简至繁的模型:线性可分支持向量机、...
  • 作者 | 杜博亚来源 | 阿泽的学习笔记「本文的目的,是务实、简洁地盘点一番当前机器学习算法」。文中内容结合了个人在查阅资料过程中收集到的前人总结,同时添加了部分自身总结,在这里,依据实...
  • 对于机器学习算法的盘点,...尽管人们已做过不少盘点,但始终未能给出每一种算法的真正优缺点。在这里,我们依据实际使用中的经验,将对此详加讨论。归类机器学习算法,一向都非常棘手,常见的分类标准是这样的:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,301
精华内容 18,920
关键字:

机器学习深度学习优缺点