新宝6娱乐app下载-新宝6手机app下载-新宝6官网 > SEO算法 > 机器学习算法优缺点对比及选择

机器学习算法优缺点对比及选择

admin SEO算法 2020年02月11日

  算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM,GBDT,Adaboost,现在

  假如你在乎精度(accuracy)的话,最好的方法就是通过交叉验证(cross-validation)对各个算法一个个地进行测试,进行比较,然后调整参数确保每个算法达到最优解,最后选择最好的一个。但是如果你只是在寻找一个“足够好”的算法来解决你的问题,或者这里有些技巧可以参考,下面来分析下各个算法的优缺点,基于算法的优缺点,更易于我们去选择它。

  在机器学习领域,一个基本的定理就是“没有免费的午餐”。换言之,就是没有算法能完美地解决所有问题,尤其是对监督学习而言(例如预测建模)。

  举例来说,你不能去说神经网络任何情况下都能比决策树更有优势,反之亦然。它们要受很多因素的影响,比如你的数据集的规模或结构。

  当然,所选的算法必须要适用于你自己的问题,这就要求选择正确的机器学习任务。作为类比,如果你需要打扫房子,你可能会用到吸尘器、扫帚或是拖把,但你绝对不该掏出铲子来挖地。

  在统计学中,一个模型好坏,是根据偏差和方差来衡量的,所以我们先来普及一下偏差(bias)和方差(variance):

  方差:描述的是预测值P的变化范围,离散程度,是预测值的方差,也就是离其期望值E的距离。方差越大,数据的分布越分散。

  通常情况下,如果是小训练集,高偏差/低方差的分类器(例如,朴素贝叶斯NB)要比低偏差/高方差大分类的优势大(例如,KNN),因为后者会发生过拟合(overfiting)。然而,随着你训练集的增长,模型对于原数据的预测能力就越好,偏差就会降低,此时低偏差/高方差的分类器就会渐渐的表现其优势(因为它们有较低的渐近误差),而高偏差分类器这时已经不足以提供准确的模型了。

  首先,假设你知道训练集和测试集的关系。简单来讲是我们要在训练集上学习一个模型,然后拿到测试集去用,效果好不好要根据测试集的错误率来衡量。但很多时候,我们只能假设测试集和训练集的是符合同一个数据分布的,但却拿不到真正的测试数据。这时候怎么在只看到训练错误率的情况下,去衡量测试错误率呢?

  由于训练样本很少(至少不足够多),所以通过训练集得到的模型,总不是真正正确的。(就算在训练集上正确率100%,也不能说明它刻画了真实的数据分布,要知道刻画真实的数据分布才是我们的目的,而不是只刻画训练集的有限的数据点)。而且,实际中,训练样本往往还有一定的噪音误差,所以如果太追求在训练集上的完美而采用一个很复杂的模型,会使得模型把训练集里面的误差都当成了真实的数据分布特征,从而得到错误的数据分布估计。这样的话,到了真正的测试集上就错的一塌糊涂了(这种现象叫过拟合)。但是也不能用太简单的模型,否则在数据分布比较复杂的时候,模型就不足以刻画数据分布了(体现为连在训练集上的错误率都很高,这种现象较欠拟合)。过拟合表明采用的模型比真实的数据分布更复杂,而欠拟合表示采用的模型比真实的数据分布要简单。

  在统计学习框架下,大家刻画模型复杂度的时候,有这么个观点,认为Error = Bias + Variance。这里的Error大概可以理解为模型的预测错误率,是有两部分组成的,一部分是由于模型太简单而带来的估计不准确的部分(Bias),另一部分是由于模型太复杂而带来的更大的变化空间和不确定性(Variance)。

  所以,这样就容易分析朴素贝叶斯了。它简单的假设了各个数据之间是无关的,是一个被严重简化了的模型。所以,对于这样一个简单模型,大部分场合都会Bias部分大于Variance部分,也就是说高偏差而低方差。

  朴素贝叶斯属于生成式模型(关于生成模型和判别式模型,主要还是在于是否需要求联合分布),比较简单,你只需做一堆计数即可。如果注有条件独立性假设(一个比较严格的条件),朴素贝叶斯分类器的收敛速度将快于判别模型,比如逻辑回归,所以你只需要较少的训练数据即可。即使NB条件独立假设不成立,NB分类器在实践中仍然表现的很出色。它的主要缺点是它不能学习特征间的相互作用,用mRMR中R来讲,就是特征冗余。引用一个比较经典的例子,比如,虽然你喜欢BradPitt和Tom Cruise的电影,但是它不能学习出你不喜欢他们在一起演的电影。

  对大数量训练和查询时具有较高的速度。即使使用超大规模的训练集,针对每个项目通常也只会有相对较少的特征数,并且对项目的训练和分类也仅仅是特征概率的数学运算而已;

  对小规模的数据表现很好,能个处理多分类任务,适合增量式训练(即可以实时的对新增的样本进行训练);

  逻辑回归属于判别式模型,同时伴有很多模型正则化的方法(L0, L1,L2,etc),而且你不必像在用朴素贝叶斯那样担心你的特征是否相关。与决策树、SVM相比,你还会得到一个不错的概率解释,你甚至可以轻松地利用新数据来更新模型(使用在线梯度下降算法-online gradient descent)。如果你需要一个概率架构(比如,简单地调节分类阈值,指明不确定性,或者是要获得置信区间),或者你希望以后将更多的训练数据快速整合到模型中去,那么使用它吧。

  线性回归是用于回归的,它不像Logistic回归那样用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化,当然也可以用normal equation直接求得参数的解,结果为:

  由此可见LWLR与LR不同,LWLR是一个非参数模型,因为每次进行回归计算都要遍历训练样本至少一次。

  1. 计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);2. 对上面所有的距离值进行排序(升序);3. 选前k个最小距离的样本;4. 根据这k个样本的标签进行投票,得到最后的分类类别;

  如何选择一个最佳的K值,这取决于数据。一般情况下,在分类时较大的K值能够减小噪声的影响,但会使类别之间的界限变得模糊。一个较好的K值可通过各种启发式技术来获取,比如,交叉验证。另外噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。近邻算法具有较强的一致性结果,随着数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯理论误差率。

  决策树的一大优势就是易于解释。它可以毫无压力地处理特征间的交互关系并且是非参数化的,因此你不必担心异常值或者数据是否线性可分(举个例子,决策树能轻松处理好类别A在某个特征维度x的末端,类别B在中间,然后类别A又出现在特征维度x前端的情况)。它的缺点之一就是不支持在线学习,于是在新样本到来后,决策树需要全部重建。另一个缺点就是容易出现过拟合,但这也就是诸如随机森林

  (或提升树boosted tree)之类的集成方法的切入点。另外,随机森林经常是很多分类问题的赢家(通常比支持向量机好上那么一丁点),它训练快速并且可调,同时你无须担心要像支持向量机那样调一大堆参数,所以在以前都一直很受欢迎。决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它。新宝6娱乐app下载-新宝6手机app下载-新宝6官网

  其中的n代表有n个分类类别(比如假设是二类问题,那么n=2)。分别计算这2类样本在总样本中出现的概率

  对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率尽心划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)。

  ID3算法是以信息论为基础,以信息熵和信息增益度为衡量标准,从而实现对数据的归纳分类。ID3算法计算每个属性的信息增益,并选取具有最高增益的属性作为给定的测试属性。C4.5算法核心思想是ID3算法,是ID3算法的改进,改进方面有:- 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;- 在树构造过程中进行剪枝;- 能处理非离散的数据;- 能处理不完整的数据。

  是一种决策树分类方法,采用基于最小距离的基尼指数估计函数,用来决定由该子数据集生成的决策树的拓展形。如果目标变量是标称的,称为分类树;如果目标变量是连续的,称为回归树。分类树是使用树结构算法将数据分成离散类的方法。

  1)非常灵活,可以允许有部分错分成本,还可指定先验概率分布,可使用自动的成本复杂性剪枝来得到归纳性更强的树。2)在面对诸如存在缺失值、变量数多等问题时CART 显得非常稳健。

  Adaboost是一种加和模型,每个模型都是基于上一次模型的错误率来建立的,过分关注分错的样本,而对正确分类的样本减少关注度,逐次迭代之后,可以得到一个相对较好的模型。该算法是一种典型的boosting算法,其加和理论的优势可以使用Hoeffding不等式得以解释。有兴趣的同学可以阅读下自己之前写的这篇文章AdaBoost算法详述。下面总结下它的优缺点。

  支持向量机,一个经久不衰的算法,高准确率,为避免过拟合提供了很好的理论保证,而且就算数据在原特征空间线性不可分,只要给个合适的核函数,它就能运行得很好。在动辄超高维的文本分类问题中特别受欢迎。可惜内存消耗大,难以解释,运行和调参也有些烦人,而随机森林却刚好避开了这些缺点,比较实用。

  对于核的选择也是有技巧的(libsvm中自带了四种核函数:线性核、多项式核、RBF以及sigmoid核):

  第二,如果样本数量大于特征数目,这时可以使用非线性核,将样本映射到更高维度,一般可以得到更好的结果;

  是一个简单的聚类算法,把n的对象根据他们的属性分为k个分割,k《 n。算法的核心就是要优化失真函数J,使其收敛到局部最小值但不是全局最小值。

  关于K-Means聚类的文章,参见机器学习算法-K-means聚类。关于K-Means的推导,里面可是有大学问的,蕴含着强大的EM思想。

  集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k《《n。这个算法通常局部收敛。算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。

  EM算法是基于模型的聚类方法,是在概率模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量。E步估计隐含变量,M步估计其他参数,交替将极值推向最大。

  EM算法比K-means算法计算复杂,收敛也较慢,不适于大规模数据集和高维数据,但比K-means算法计算结果稳定、准确。EM经常用在机器学习和计算机视觉的数据集聚(Data Clustering)领域。

  PageRank是google的页面排序算法,是基于从许多优质的网页链接过来的网页,必定还是优质网页的回归关系,来判定所有网页的重要性。(也就是说,一个人有着越多牛X朋友的人,他是牛X的概率就越大。)

  旧网页排序很高,存在时间长,积累了大量的in-links,拥有最新资讯的新网页排名却很低,因为它们几乎没有in-links。

  Apriori算法是一种挖掘关联规则的算法,用于挖掘其内含的、未知的却又实际存在的数据关系,其核心是基于两阶段频集思想的递推算法 。

  首当其冲应该选择的就是逻辑回归,如果它的效果不怎么样,那么可以将它的结果作为基准来参考,在基础上与其他算法进行比较;

  然后试试决策树(随机森林)看看是否可以大幅度提升你的模型性能。即便最后你并没有把它当做为最终模型,你也可以使用随机森林来移除噪声变量,做特征选择;

  如果特征的数量和观测样本特别多,那么当资源和时间充足时(这个前提很重要),使用SVM不失为一种选择。

  通常情况下:【GBDT》=SVM》=RF》=Adaboost》=Other…】,现在深度学习很热门,很多领域都用到,它是以神经网络为基础的,目前笔者自己也在学习,只是理论知识不扎实,理解的不够深入,这里就不做介绍了,希望以后可以写一片抛砖引玉的文章。

  算法固然重要,但好的数据却要优于好的算法,设计优良特征是大有裨益的。假如你有一个超大数据集,那么无论你使用哪种算法可能对分类性能都没太大影响(此时就可以根据速度和易用性来进行抉择)。

  文章出处:【微信号:AItists,微信公众号:人工智能学家】欢迎添加关注!文章转载请注明出处。

  随着 AI 发展,未来会有越来越多的搜索可以直接得到答案,不再需要点击不同链接、浏览不同网页。

  尽管深度学习模型最初是主要用于白人参与者组成的数据,从而集合开发的,但为了解决持续存在的算法偏差问题....

  目前有许多类型的传感器可以使无人驾驶汽车成为现实。用于盲点监测、前向碰撞警告、雷达、摄像头、激光雷达....

  2015年承影互联研发的谱时图片直播应时而生,谱时图片直播的出现,很大程度上满足了人们对信息传播的....

  因为工作的需要,要在单片机上实现开根号的操作。目前开平方的方法大部分是用牛顿迭代法。我在查了一些资料....

  在本算法验证的过程中,目标回波后瞬态信号是由已知的理论极点值模拟仿真得到,因此故极点数目是确定的。

  区块链的不可篡改性,一方面会将人与机构之间,以道德信任为主的信任方式转变为一种基于数学原理、密码学算....

  当然,我们已经有很多使用AI的网络工具的示例:语音识别,情感分析,图像识别和自然语言处理不再是天壤之....

  随着计算算力的进步、算法的创新和互联网发展下的海量数据积累,人工智能(AI)技术未来十年将焕发出新的....

  人工智能技术将会越来越成熟,我们将可以使用人工智能做更多服务,提前预知潜在的自然灾害,将自然灾害损失....

  传统上,深度学习算法(例如深度神经网络 DNN)以有监督的方式进行训练,以识别特定类别的事物。

  为了防止射频识别(RFID) 系统中多个应答器同时向阅读器发送识别信息时产生的碰撞问题,提出了一种新....

  人工智能技术正被寄予厚望:工农中建四大行在最近的年报中均多次提及人工智能战略,并开始在业务场景中推广....

  区块链上的数据是不会消失的,只能一条一条添加,即便是“删除”这样的操作,也会是以增加“用户删除了该条....

  通过 V2X 网络,相当于自动驾驶打通外部“大脑”,提供了丰富、及时的“外部信息”输入,能够有效弥补....

  RFID会使得原来的供应链管理系统变得更为智能,它改进了原始的二维条形码,使得相应的货物跟踪和订单管....

  回归区块链技术本身,不断丰富和发展区块链技术,才是真正能够让区块链行业的发展获得突破的根本原因所在。

  人工智能算法的加入,则能够帮助遥感系统提升数据集成、分析、决策等一系列的工作,更高效地完成任务。

  人工智能行业正逐渐意识到,仅基于垂直领域的知识或数据分析并不足以达成人工智能推荐在垂直领域的高转化率....

  区块链是产业互联网时代最有价值的领域, 2020年将是区块链脱虚向实、与产业深度融合的一年。

  复旦大学的类脑智能科学与技术研究院院长冯建峰教授表示,通过产研强强合作,在人工智能的算法领域,对华人....

  随着计算无处不在的理论推广,可信计算平台的接入范围更广——几乎所有网络应用层的数据都可以进行可信接入....

  时隙ALOHA 法是射频识别(RFID) 系统中常用的防碰撞算法,该文在分析RFID 系统识别过程后....

  通过分析传统的多层感知器和反向传播算法的不足,设计了一个全新的网络结构SC—MLP和提出了与之对应的....

  过去,将语音记录和回放功能添加到产品中意味着使用数字信号处理器或专用音频芯片。现在,使用简化的自适应....

  特斯拉说自家产品已经具备L4自动驾驶的硬件基础,但目前来看,没有激光雷达,以现有的毫米波雷达和单目摄....

  在测试中,研究小组选择了表现最佳的Pegasus模型,该模型包含了5.68亿个参数。它有两个训练材料....

  近日,深圳市南山区人民法院的一纸判决率先给出了司法方面的答案:AI生成作品属于著作权法保护范围。这一....

  人工智能发展很快,如今我们在金融领域、医疗保健、市场营销、广告和客户服务中都能看到人脸识别或情感识别....

  RFID射频识别技术近年来广受关注,被应用于众多领域,其中UHF(超高频)频段RFID应用最为广泛。

  除英特尔,亚马逊及微软等科技巨头近年来也通过并购交易强化应用复杂演算法的能力,以提升送货机器人及自动....

  在加密技术方面,我们已经逐渐看到类似的商业模式和技术进步的结合。这是未来的趋势,比如平台币、链上交易....

  物联网系统牵涉的产品与技术领域很广,随着时间发展,相关技术可运用的领域会更多、成本也会更低。

  据上海交通大学介绍,该研究中心依托自然科学研究院和数学科学学院等单位成立。研究中心将围绕医学图像处理....

  论文综述了混沌研究的发展历史及其意义,归纳和总结了混沌的定义及混沌的基本特征,着重介绍了混沌分析方法....

  依靠以往海量粗放的数据喂养已远远不能满足如今 AI 行业的发展,而愈来愈精细的数据正是导致行业变迁的....

  这个设计技巧解释了如何通过执行6点翻滚校准来计算三轴传感器(通常是加速度计)的偏移、增益和横轴增益。....

  区块链时代的组织责任:透明和公开各种消息,组织评价体系和秩序,制定战略目标和任务,外部关键资源的获取....

  本文档的主要内容详细介绍的是蚁群算法代码免费下载,通过代码 可以 学习 蚁群算法的计出理论知识,并且....

  机器学习算法是从历史场景中自动简化的技术。它们有能力在更大的数据量和更快的速度上进行泛化。

  过去,将语音记录和回放功能添加到产品中意味着使用数字信号处理器或专用音频芯片。现在,使用简化的自适应....

  基于STM32的步进电机S型加减速控制算法 STM32简介STM32代表ARM Cortex-M内核的32位微控制器。专为要求高性能、低...

  WMS等系统的广泛应用使供应链信息趋向在线化、数据化和智能化,信息的流动、共享和决策支持将大幅优化库存,减弱供应链的...

  文本分类问题就是将一篇文档归入预先定义的几个类别中的一个或几个,而文本的自动分类则是使用计算机程序来实现这种文本分类,即...

  不知是否有学习过手册中第六节部分算法例程,为什么那些算法例程在CCS上无法编译生成.out文件呢? 为此,我也进行过移植,自...

  直播内容:人工智能是新一轮科技革命和产业转型的核心驱动力,在海量数据、深度学习和超强算力的支持下,人工智能迎来了前所未有...

  资料包括PID调节控制做电机速度控制、ourdevBasic PID的老外的那篇经典文章、PID测速、由入门到精通-吃透PID2.0版、...

  一个算法问题,有没有高手能够求出来!由A、B、C、D经过一定运算后得出L的值,请问这是什么算法,高手能否给出思路??? ...

  1、PID 算法C 语言原代码先贴上一种常见的比较通用的C语言增量式PID算法吧[code]typedef struct PID { intSetPoi...

  在很多嵌入式设备中,一个设计良好的桌面是最重要的人机交互方式;在一些消费电子产品中,一个好的桌面可以让用户具有更好的使用...

标签: