科学网—[转载]最实用的机器学习算法优缺点分析,没有比这篇说得更好了!

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

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

1.3深度学习

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

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

1.4荣誉奖:最近邻算法

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

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

▌2.分类

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

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

逻辑回归

2.1(正则化)逻辑回归

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

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

2.2分类树(集成方法)

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

2.3深度学习

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

2.4支持向量机

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

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

2.5朴素贝叶斯

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

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

▌3.聚类

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

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

K均值

3.1K均值

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

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

3.2仿射传播

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

3.3分层/层次

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

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

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

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

3.4DBSCAN

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

维度灾难

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

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

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

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

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

▌4.特征选取

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

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

4.1方差阈值

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

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

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

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

4.3遗传算法

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

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

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

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

4.4荣誉奖:逐步搜索

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

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

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

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

▌5.特征提取

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

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

5.1主成分分析

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

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

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

5.2线性判别分析

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

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

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

5.3自编码机

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

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

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

THE END
1.算法工程师要学什么知识(非常详细),零基础入门到精通,看这一篇就文章浏览阅读1.2k次,点赞21次,收藏11次。算法工程师要学什么知识(非常详细),零基础入门到精通,看这一篇就够了_算法工程师入门https://blog.csdn.net/weixin_49895216/article/details/142848661
2.算法需要学什么编程?Worktile社区实践和练习:最重要的是实践和练习。通过解决实际问题和练习算法题,你可以巩固所学的知识,并提高自己的编程能力和算法水平。可以通过参加编程竞赛、完成编程项目、刷算法题等方式进行实践和练习。 总之,学习算法需要掌握编程语言、数据结构和算法、算法思维、编程技巧,并通过实践和练习来提高自己的编程和算法能力。只有掌握https://worktile.com/kb/ask/2030579.html
3.阅读《算法导论》的基础要求归纳和演绎推理能力:能够通过对具体算法实例的分析和总结,归纳出一般性的算法设计原则和方法。同时,在面对新的问题时,能够运用已有的知识和经验,通过演绎推理设计出合适的算法解决方案。比如,从已学的几种排序算法(如冒泡排序、插入排序、快速排序等)中归纳出排序算法的一般设计思路和性能特点,然后根据这些特点去https://baijiahao.baidu.com/s?id=1809536700275075435&wfr=spider&for=pc
4.算法工程师要学什么常见问题算法工程师要学什么 算法工程师必备七大技能:数据结构和算法编程语言数学基础算法设计与分析分布式系统机器学习和深度学习软件工程实践,助力解决计算机科学和工业中的复杂问题。 算法工程师必修技能 算法工程师是计算机科学领域的专业人员,负责设计、分析和实现高效算法来解决计算问题。要成为一名合格的算法工程师,需要掌握https://www.php.cn/faq/816502.html
5.《人工智能产品经理AI时代PM修炼手册》可以迅速的调取知识,而非死记硬背,如了解算法应用不是推理 从业务需求出发,追本溯源找到知识的源头,带着目的去学习技术。学习之前要明确,为什么要学?为了解决什么样的问题?要带着问题去学习技术而不是盲目的学习。 除了日常的知识积累外,需要经常和公司内部的技术专家交换知识和观点,将自己理解的技术知识将给技术专https://www.jianshu.com/p/a0265bda8b1e
6.图分析与学习算法自动驾驶技术……这两位人大学子,获奖她曾获研究生国家奖学金、中国石油奖学金、一等学业奖学金等,入选中国人民大学“拔尖创新人才培育资助计划”。其研究关注大规模图分析与学习算法的可扩展性问题。她在计算机理论研究,特别是图分析和学习算法方向,取得了突破性的成果。其成果有望在搜索等业务领域落地,发挥重大作用。https://t.m.youth.cn/transfer/index/url/tech.youth.cn/wzlb/202201/t20220129_13411740.htm
7.从基础到实现:集成学习综合教程(附Python代码)机器之心本文从基础集成技术讲起,随后介绍了高级的集成技术,最后特别介绍了一些流行的基于Bagging和Boosting的算法,帮助读者对集成学习建立一个整体印象。 介绍 当你想购买一辆新车时,你会走到第一家汽车商店就根据经销商的建议购买一辆车吗?这是不太可能的。 你可能会浏览一些人们发布评论并比较不同车型的门户网站,检查其功能https://www.jiqizhixin.com/articles/2018-07-28-3
8.北京大学数学学院Q:您一般是怎么切入一个之前完全没有做过的问题,比如kSAT? A:我在选择问题的时候相对来说比较随意,但是大概有一个标准,就是这个问题我不费什么力气就能听得懂。如果那个问题我要花费很多的力气才能明白,那就可能不是我的菜,除非是一些特殊的情况,或者说我已经在相关领域有一些知识储备,我可能愿意去再学一点来理https://www.math.pku.edu.cn/xyxw/133705.htm
9.自然语言处理与计算语言学第7章,依存分析。第5章和第6章中介绍了spaCy的NLP如何执行各种复杂的计算语言学算法,如POS标注和NER标注。不过,这并不是所有的spaCy包,本章将探讨依存分析的强大功能,以及如何在各种上下文和应用场景中使用它。在继续使用spaCY之前,我们将研究依存分析的理论基础,并训练一个依存分析模型。 https://www.epubit.com/bookDetails?id=UB7218a27c085bf
10.深度学习算法LSTM算法原理简介及Tutorial1、背景 LSTM(Long Short-Term Memory)算法作为深度学习方法的一种,在介绍LSTM算法之前,有必要介绍一下深度学习(Deep Learning)的一些基本背景。目前在机器学习领域,最大的热点毫无疑问是深度学习,从谷歌大脑(Google Brain)的猫脸识别,到ImageNet比赛中深度卷积https://cloud.tencent.com/developer/article/1056919
11.11种比较常见的机器学习算法简介如何绘制或确定决策边界是SVM算法中最关键的部分。 在创建决策边界之前,将每个观察值(或数据点)绘制在n维空间中。 " n"是所使用功能的数量。 例如,如果我们使用"长度"和"宽度"对不同的"单元格"进行分类,则观察结果将绘制在二维空间中,并且决策边界为一条线。 如果我们使用3个要素,则决策边界是3维空间中的平面https://www.51cto.com/article/622149.html
12.机器学习基础无监督学习之降维山上有风景这就是PCA算法,虽然没有给出数学上的证明,来证明u(1)和、u(2)、z还有其他向量等等,但是得出的过程就是选择了最小化的平方投影误差,PCA要做的是尝试找到一个面或线,把数据投影到这个面或线上,以便于最小化平方投影误差。 五:压缩重现 在之前的学习中,我们一直把PCA作为压缩算法来讨论。 https://www.cnblogs.com/ssyfj/p/12936428.html