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

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

集成的方法,如随机森林(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.算法笔记(三)算法学习技巧从开始学习算法已经有两三个多月的时间了,从简单到深入层次展开,层层优化,对算法的理解也在逐渐加深,不在那么片面,虽然现在还是片面一些,对它的了解也仅仅知道冰山一角,还有很多的内容需要我们去学习去挖掘。 思路 在学习前我们要尽可能快速阅读一遍要学习的书籍,这样不仅仅让我们知道了有哪些内容需要学习,同时也在https://www.code456.com/article/3598351.html
2.求给个算法学习路线?主要也就两大块内容:常用算法 和 数据结构。可以从最简单的语法开始。一、语言基础 单纯学习语言未免太https://www.zhihu.com/question/505366830/answer/2279533801
3.金三银四跳槽季,为了年后offer,我竟然撸完了这50场1000多道面经3. 操作系统层面怎么实现互斥锁 4. 数据段组成 5. 网络tcp建立与释放 6. tcp长连接 heartbeat 7. tcp半连接 8. 图的遍历算法 迪杰斯特拉算法 9. 上楼梯 10. 64匹马赛跑,8个跑道,选出最快4匹马 11. java单例模式一套 12. java多线程原子锁,cas机制,aba问题 https://maimai.cn/article/detail?fid=1589559958&efid=HMnVzUsEaNASGCiWLCQB4Q
4.从0开始机器学习手把手用Python实现梯度下降法!机器学习课程也上了一段时间了,今天就带大家从 0 开始手把手用 Python 实现第一个机器学习算法:单变量梯度下降(Gradient Descent)! 我们从一个小例子开始一步步学习这个经典的算法。 一、如何最快下山? 在学习算法之前先来看一个日常生活的例子:下山。想象一下你出去旅游爬山,爬到山顶后已经傍晚了,很快太阳就会落https://www.jianshu.com/p/d298adb3c089
5.17个机器学习的常用算法根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。在机器学习领域,有几种主要的学习方式。将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果。 https://aidc.shisu.edu.cn/78/aa/c13626a161962/page.htm
6.Nature:AlphaZero加强版AlphaTensor问世,发现史上最快矩阵乘法另一篇文章也涉及一种机器学习算法,其能够确定急诊室病人的CT扫描是否显现出中风、颅内出血或其他重要神经疾病的迹象。对于中风患者来说,每一分钟都很重要;治疗耽误的时间越长,结果就越糟。新算法的准确性堪比人类专家,而且比人类专家快150倍。一个更快的诊断有助于医生对最紧急病例进行快速分类,并由人类放射科医生https://www.medsci.cn/article/show_article.do?id=97c6e419443f
7.大学四年,从小白到大神,全网最硬核算法学习攻略,不接受反驳你不需要把它学的很精通,但是你要懂一些基本的递归题,知道递归是怎么一回事,例如最简单的斐波那契数列得会用递归做吧?阶乘也会吧(虽然不是最优解)。 所以,死磕入门数据结构,可以学习下一些算法思想,而递归,你必须得入门,至于动态规划、回溯,我觉得慢点学也没有,可以后面刷题遇到时在学,而枚举、贪心,相对比较简https://blog.csdn.net/xxue345678/article/details/131645896
8.整十数加减整十数教学设计(精选15篇)不足:本节课,对于学生来说是很简单的一节课,在讲授过程中我对于算法的探究部分,以及对算法的最优化处理还有待加强,我们既要尊重学生的个体差异,但我们也要帮助学生去学习更科学有效的算法。这个过程不能急于求成,一定要细心引导,让学生去主动接受。 https://xiaoxue.ruiwen.com/jiaoxuesheji/348088.html
9.运筹学教学十分钟快速掌握最大流算法(附C++代码及算例)如上所示,我们输入的是第一个网络图,算法代码运行后的结果如第二个网络图所示,其中边上流量值如11/16,表示这条边的最大容量为16,而从s到t,这条边的路径能通过的最大流量为11。 上述代码仅供分享交流学习用,如有需要复制下面链接自取 ↓↓↓ http://paste.ubuntu.com/25584352/ https://cloud.tencent.com/developer/article/1103608
10.算法数据结构体系学习班马士兵教育官网当你想试试自己的学习状态,你可以每周三晚8点来参加算法直播课,都是大厂最新考的、不重复的算法题。总之,跟课+练课上题+记笔记总结,这样进步最快。仔细阅读上面的材料,然后开始看课,练题。看课过程中任何困惑求解答、debug不出错误、见到新的算法面试题目不会做,都可以官网提问或者找到班主任联系我。 如何提问https://www.mashibing.com/course/339
11.书单豆瓣高分&全网热评的算法神作对于初学者来说,学习算法的旅途是略显无聊与苦涩的,他们亟需有趣、实用的算法读物。 漫画算法系列图书和《图解算法小册》通过漫画和图解的方式将算法的本质呈现在读者面前,好玩又有趣,有效降低了学习算法的门槛,可以顺利引领我们进入算法殿堂,非常适合想学算法却因其枯燥复杂而望之生畏的朋友们一看。 http://www.broadview.com.cn/article/420385
12.《常用算法之智能计算(三)》:机器学习计算在给出机器学习计算各种算法之前,最好是先研究一下什么是机器学习和如何对机器学习进行分类,才能更好的理解和掌握一些具体的机器学习算法并将其用于实际问题的计算和处理。 学习是人类具有的一种重要智能行为,但究竟什么是学习,长期以来却众说纷纭。社会学家、逻辑学家和心理学家都各有自己不同的看法和说法。比如,http://www.kepu.net/blog/zhangjianzhong/201903/t20190327_475625.html
13.速度最快的三维重建神经网络三维重建算法速度最快的三维重建神经网络 三维重建算法 三维重建方法总结 1传统方法 2传统方法和深度学习结合 3深度学习方法 1 基于传统多视图几何的三维重建算法 传统的三维重建算法按传感器是否主动向物体照射光源可以分为主动式和被动式 两种方法。这些年,也有不少研究直接基于消费级的 RGB-D 相机进行三维重建,如基于微软的 https://blog.51cto.com/u_16099168/6881261
14.人民日报:用好算法,迈向智能社会深度学习算法,打开人工智能突破口 当前,深度学习是各类算法中最具代表性的一种。深度学习是一类特殊的机器学习算法,其概念源于人工神经网络,目的是探索和模拟人的思维规律,仿照脑神经系统结构与信息处理机制,构建智能软件系统。深度学习通过学习算例数据的内在规律和表示,使计算机能够像人一样有分析能力,为人工智能质的飞https://kjt.shaanxi.gov.cn/kjzx/mtjj/276381.html
15.如何面对海量知识进行非恐慌式非焦虑式学习霜花香似海① 在做每一步的选择的时候,都采取当前状态的最优的选择,前提是当前状态,也即是在我们学习新知识的时候,选择当前自己学习最能学到的,最能学习进到自己的知识体系里的知识(学习是逆人性,学习的都是自己不知道的,所以学习自己能最快接受的知识,能克服一些对未知的恐惧)。就像文中所说,贪婪算法虽然不是全局最优https://www.cnblogs.com/liyy7520/p/12206226.html