常用的机器学习算法比较?

论坛 期权论坛 期权     
匿名用户   2018-10-15 23:59   2470   10
提示: 作者被禁止或删除 内容自动屏蔽
分享到 :
0 人收藏

10 个回复

倒序浏览
2#
微调  4级常客 | 2018-10-15 23:59:10 发帖IP地址来自
授人以鱼不如授人以渔,这篇文章会介绍如何通过“统计学检验”来对比机器学习算法性能。掌握了这个方法后,我们就不需要再人云亦云,而可以自己分析算法性能。
首先结论如下,在对比两个算法多个数据集上的表现时:
  • 如果样本配对(paired)且符合正态分布,优先使用配对t检测(paired t test)。
  • 如果样本不符合正态分布,但符合配对,使用Wilcoxon Signed Ranks test。
  • 如果样本既不符合正态分布,也不符合配对,甚至样本量都不一样大,可以尝试Mann Whitney U test。值得注意的是,MW是用来处理独立测量(independent measures)数据,要分情况讨论,后文会深入分析。
在对比多个算法多个数据集上的表现时:
  • 如果样本符合ANOVA(repeated measure)的假设(如正态、等方差),优先使用ANOVA。
  • 如果样本不符合ANOVA的假设,使用Friedman test配合Nemenyi test做post-hoc。
  • 如果样本量不一样,或因为特定原因不能使用Friedman-Nemenyi,可以尝试Kruskal Wallis配合Dunn's test。值得注意的是,这种方法是用来处理独立测量数据,要分情况讨论。
文章结构如下:(1-2) 算法对比的原因及陷阱 (3-4) 如何对比两个算法 (5-6)如何对比多个算法 (7)如何根据数据特性选择对比方法 (8)工具库介绍。
[h1]1. 为什么需要对比算法性能?[/h1]统计学家George Box说过:“All models are wrong, but some are useful”(所有模型都是错误,只不过其中一部分是有价值的)。通俗来说,任何算法都有局限性,所以不存在“通用最优算法”,只有在特定情境下某种算法可能是渐进最优的
因此,评估算法性能并选择最优算法是非常重要的。不幸的是,统计学评估还没有在机器学习领域普及,很多评估往往是在一个数据上的简单分析,因此证明效果有限。
[h1]2. 评估算法中的陷阱[/h1]首先我们常说的是要选择一个正确的评估标准,常见的有:准确率(accuracy)、召回率(recall)、精准率(precision)、ROC、Precision-Recall Curve、F1等。
选择评估标准取决于目的和数据集特性。在较为平衡的数据集上(各类数据近似相等的情况下),这些评估标准性能差别不大。而在数据严重倾斜的情况下,选择不适合的评估标准,如准确率,就会导致看起来很好,但实际无意义的结果。举个例子,假设某稀有血型的比例(2%),模型只需要预测全部样本为“非稀有血型”,那么准确率就高达98%,但毫无意义。在这种情况下,选择ROC或者精准率可能就更加适当。这方面的知识比较容易理解,很多科普书都有介绍,我们就不赘述了。
其次我们要正确理解测量方法,常见的有
  • 独立测量(independent measures):不同样本的观测对象是独立的,不存在关联
  • 重复测量(repeated measures):样本中使用的观测对象是相同的,仅仅是独立变量在上面的作用结果不同
  • 以及成对测量(matched pair):不同样本中采用不同的观测对象,但尽量使得样本间的观测对象成对相似
举个例子,我们想要分析刷知乎时间(每天3小时 vs. 每天10小时)对于大学生成绩的影响。如果我们使用相同的20个学生,观察他们每天3小时和10小时的区别,那就是重复测量。如果我们选择40个学生,分成两组每组20人,再分别观察那就是独立测量。如果我们先找20个学生,再找20个和他们非常相似的大学生,并配对观察,就是成对相似。
我们发现,当错误的理解测量方式时,就无法使用正确的统计学手段进行分析
在这篇文章中我们默认:评估不同算法在多个相同数据集上的表现属于重复测量,而特例将会在第七部分讨论。同时,本文介绍的方法可以用于对比任何评估标准,如准确度、精准度等,本文中默认讨论准确度。
[h1]3. 两种算法间的比较:不恰当方法[/h1]
图1. 两种算法在14个数据集上的准确率 [1]图1展示了两种决策树方法(C4.5,C4.5+m)在14个数据集上的准确率。那么该如何对比两种算法呢?先说几种错误(不恰当)的方法:
不恰当方法1:求每个算法在所有数据集上的均值,并比较大小。错误原因:我们对于算法在不同数据集上错误的期望不是相同的,因此求平均没有意义。换句话说,数据不符合相称性(commensurate)。
不恰当方法2进行配对样本t检测(Paired t test)。显然,t test是统计学方法,可以用来查看两种方法在每个数据上的平均差值是否不等于0。但这个方法不合适原因有几点:
  • 和平均一样,不同数据集上的错误不符合相称性
  • t-test要求样本符合正态分布,显然我们无法保证不同数据集上的准确率符合正态分布
  • t-test对样本的大小有一定的要求,一般最低需要>30个样本。在这个例子中我们只有14个,且大部分情况下我们没有30个数据来做实验。
  • 因为缺乏相称性,统计结果易受到异常值影响(outliers)
不恰当方法3:符号检验(sign test)是一种无参数(non-parametric)的检验,优点是对于样本分布没有要求,不要求正态性。比较方法很简单,就是在每个数据集上看哪个算法更好,之后统计每个算法占优的数据集总数。以这个例子为例,C4.5在2个数据集上最优,2个平手,10个最差。如果我们对这个结果计算置信区间,发现p
3#
于菲  2级吧友 | 2018-10-15 23:59:11 发帖IP地址来自
1.算法性能比较
JMLR 2014 10月刊有一篇神文:Do we Need Hundreds of Classifiers to Solve Real World Classification Problems? 测试了179种分类模型在UCI所有的121个数据上的性能,发现Random Forests 和 SVM (高斯核,用LibSVM版本)性能最好。Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
这个东西是前段时间在 @刘知远微博上看到的Sina Visitor System,JMLR是机器学习领域的顶级期刊。

2.算法的review
这篇东西对一些监督学习算法做了review.
https://s3-us-west-2.amazonaws.com/mlsurveys/54.pdf
文末有张表格。比较了各种算法的性质。


3.算法选择
除此之外,给你贴张图,供你选择机器学习算法用。


4#
YJ Sun  1级新秀 | 2018-10-15 23:59:12 发帖IP地址来自
5#
阮洋  4级常客 | 2018-10-15 23:59:13 发帖IP地址来自
这个问题取决于使用的data的性质,我这里假设你有足够的数据量>10k.
LR: 给定数据集的feature是1或者0的binary values,其实logistic regression足够用了。 LR还可以测算数据中属于某个class的概率。但是Linear的LR model其实就是在高纬空间中画了一条线。
SVM: 所以碰到linearly不能seperate的classification problem, 可以尝试用SVM解决。其实Linear kernal在很多现实情况中足够用了.在大数据的前提下,你画直线跟画曲线没有什么太大的区别。
Random Forest:这是个神器,基本上可以解决所有的classification问题,但是,train一个不那么容易overfit的模型对数据量要求很大。
k-NN:这个在大数据时代很不实用,耗时太久,结果不一定更好。但是好处是基本不存在overfitting的问题。
6#
蔡世勋  3级会员 | 2018-10-15 23:59:14 发帖IP地址来自
转一篇 用少量样本建模的方法
这种方法背后是已经建立起某些模型了。


研究人员采用了贝叶斯程序学习(BPL,BayesianProgram Learning)框架进行研究。从本质上将,软件可使用虚拟笔画针对每个字母建立唯一的程序,然后使用概率变成技术对程序和相应的字母进行匹配,或为陌生的字母建立新程序。
该软件并非模仿儿童习得阅读和写字能力的方式,而是已经有阅读和写字能力的成人采用的识别和再现新文字的方式。
特南鲍姆说:“概率编程的关键点(有别于大部分深度学习软件)在于它是从描述各种因果过程的程序入手。”“我们努力习得的不是特征书写或特征模式,而是产生那些字母的程序”。




AI领域年度重磅 - 麻省理工科技评论 - 知乎专栏
作者:赵安琪
7#
杨三丰  2级吧友 | 2018-10-15 23:59:15 发帖IP地址来自
下面是引用,出处:
Chris.yang:机器学习中,模型、算法如何选择?

引用开始----------------------
我们也可以从算法的共性(比如功能,运作方式)角度对机器学习算法分类。下面我们根据算法的共性去对它们归个类。不过需要注意的是,我们下面的归类方法可能对分类和回归有比较强的倾向性,而这两类问题也是最常遇到的。


回归算法(Regression Algorithms)

网络图片,侵删回归算法是一种通过最小化预测值与实际结果值之间的差距,而得到输入特征之间的最佳组合方式的一类算法。对于连续值预测有线性回归等,而对于离散值/类别预测,我们也可以把逻辑回归等也视作回归算法的一种,常见的回归算法如下:
  • Ordinary Least Squares Regression (OLSR)
  • Linear Regression
  • Logistic Regression
  • Stepwise Regression
  • Locally Estimated Scatterplot Smoothing (LOESS)
  • Multivariate Adaptive Regression Splines (MARS)


基于实例的算法(Instance-based Algorithms)

网络图片,侵删这里所谓的基于实例的算法,我指的是我们最后建成的模型,对原始数据样本实例依旧有很强的依赖性。这类算法在做预测决策时,一般都是使用某类相似度准则,去比对待预测的样本和原始样本的相近度,再给出相应的预测结果。常见的基于实例的算法有:
  • k-Nearest Neighbour (kNN)
  • Learning Vector Quantization (LVQ)
  • Self-Organizing Map (SOM)
  • Locally Weighted Learning (LWL)


决策树类算法(Decision Tree Algorithms)

网络图片,侵删决策树类算法,会基于原始数据特征,构建一颗包含很多决策路径的树。预测阶段选择路径进行决策。常见的决策树算法包括:
  • Classification and Regression Tree (CART)
  • Iterative Dichotomiser 3 (ID3)
  • C4.5 and C5.0 (different versions of a powerful approach)
  • Chi-squared Automatic Interaction Detection (CHAID)
  • M5
  • Conditional Decision Trees


贝叶斯类算法(Bayesian Algorithms)

这里说的贝叶斯类算法,指的是在分类和回归问题中,隐含使用了贝叶斯原理的算法。包括:
  • Naive Bayes
  • Gaussian Naive Bayes
  • Multinomial Naive Bayes
  • Averaged One-Dependence Estimators (AODE)
  • Bayesian Belief Network (BBN)
  • Bayesian Network (BN)


聚类算法(Clustering Algorithms)

网络图片,侵删聚类算法做的事情是,把输入样本聚成围绕一些中心的『数据团』,以发现数据分布结构的一些规律。常用的聚类算法包括:
  • k-Means
  • Hierarchical Clustering
  • Expectation Maximisation (EM)


关联规则算法(Association Rule Learning Algorithms)

网络图片,侵删关联规则算法是这样一类算法:它试图抽取出,最能解释观察到的训练样本之间关联关系的规则,也就是获取一个事件和其他事件之间依赖或关联的知识,常见的关联规则算法有:
  • Apriori algorithm
  • Eclat algorithm


人工神经网络类算法(Artificial Neural Network Algorithms)

网络图片,侵删这是受人脑神经元工作方式启发而构造的一类算法。需要提到的一点是,我把“深度学习”单拎出来了,这里说的人工神经网络偏向于更传统的感知算法,主要包括:
  • Perceptron
  • Back-Propagation
  • Radial Basis Function Network (RBFN)


深度学习(Deep Learning Algorithms)

网络图片,侵删深度学习是近年来非常火的机器学习领域,相对于上面列的人工神经网络算法,它通常情况下,有着更深的层次和更复杂的结构。该类算法广泛应用于计算机视觉。
  • Deep Boltzmann Machine (DBM)
  • Deep Belief Networks (DBN)
  • Convolutional Neural Network (CNN)
  • Stacked Auto-Encoders


降维算法(Dimensionality Reduction Algorithms)

网络图片,侵删从某种程度上说,降维算法和聚类其实有点类似,因为它也在试图发现原始训练数据的固有结构,但是降维算法在试图,用更少的信息(更低维的信息)总结和描述出原始信息的大部分内容。
有意思的是,降维算法一般在数据的可视化,或者是降低数据计算空间有很大的作用。它作为一种机器学习的算法,很多时候用它先处理数据,再灌入别的机器学习算法学习。主要的降维算法包括:
  • Principal Component Analysis (PCA)
  • Principal Component Regression (PCR)
  • Partial Least Squares Regression (PLSR)
  • Sammon Mapping
  • Multidimensional Scaling (MDS)
  • Linear Discriminant Analysis (LDA)
  • Mixture Discriminant Analysis (MDA)
  • Quadratic Discriminant Analysis (QDA)
  • Flexible Discriminant Analysis (FDA)


模型融合算法(Ensemble Algorithms)

网络图片,侵删严格意义上来说,这不算是一种机器学习算法,而更像是一种优化手段/策略,它通常是结合多个简单的弱机器学习算法,去做更可靠的决策。拿分类问题举个例,直观的理解,就是单个分类器的分类是可能出错,不可靠的,但是如果多个分类器投票,那可靠度就会高很多。常用的模型融合增强方法包括:
  • Random Forest
  • Boosting
  • Bootstrapped Aggregation (Bagging)
  • AdaBoost
  • Stacked Generalization (blending)
  • Gradient Boosting Machines (GBM)
  • Gradient Boosted Regression Trees (GBRT)




----------------------引用结束
8#
又拍云  3级会员 | 2018-10-15 23:59:16 发帖IP地址来自
机器学习差别的关键点之一就在于所使用算法的不同,下面就为大家介绍 4 种主要的分类算法。
[h1]朴素贝叶斯分类[/h1]朴素贝叶斯分类是基于贝叶斯定理与特征条件独立假设的分类方法,发源于古典数学理论,拥有稳定的数学基础和分类效率。它是一种十分简单的分类算法,当然简单并不一定不好用。通过对给出的待分类项求解各项类别的出现概率大小,来判断此待分类项属于哪个类别,而在没有多余条件的情况下,朴素贝叶斯分类会选择在已知条件下,概率最大的类别。
贝叶斯分类算法的实质就是计算条件概率的公式。在事件 B 发生的条件下,事件 A 发生的概率为 P(A | B)来表示。

P(A | B)的概率为



在日常应用中,我们经常可以直接得出 P(A | B),而 P(B | A)直接得到比较困难,通过贝叶斯定理就可以通过 P(A | B)获得 P(B | A)。
而朴素贝叶斯分类的正式定义则如下:

朴素贝叶斯算法在执行文本分类等工作是会有很好的效果,比如朴素贝叶斯算法常被使用于垃圾邮件的过滤分类中。
[h1]SVM算法[/h1]支持向量机(Support Vector Machine,常简称为 SVM)是一种监督式学习的方法,可广泛地应用于统计分类以及回归分析。支持向量机属于一般化线性分类器,它能够同时最小化经验误差与最大化几何边缘区,因此支持向量机也被称为最大边缘区分类器。
同时支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。

SVM 算法虽然存在难以训练和难以解释的问题,但是在非线性可分问题上的表现十分优秀,在非线性可分问题中常选择 SVM 算法。
[h1]基于 KNN 的算法[/h1]K - 近邻算法,简称 KNN(k-Nearest Neighbor),它同样是一个比较简单的分类、预测算法。对选取与待分类、待预测数据的最相似的 K 个训练数据,通过对这 K 个数据的结果或者分类标号取平均、取众数等方法得到待分类、待预测数据的结果或者分类标号。

K - 近邻算法如上图所示,有两类不同的样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据。在不知道中间那个绿色的数据是从属于哪一类(蓝色小正方形or红色小三角形)的情况下,我们可以从它的临近的样本进行判断。
如果 K=3,绿色圆点最近的 3 个邻居是 2 个红色小三角形和 1 个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。
如果 K=5,绿色圆点的最近的 5 个邻居是 2 个红色三角形和 3 个蓝色的正方形,还是少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于蓝色的正方形一类。
从上文我们看到,当无法判定当前待分类点是从属于已知分类中的哪一类时,可以依据统计学的理论看它所处的位置特征,衡量它周围邻居的权重,而把它归为(或分配)到权重更大的那一类,这就是 K 近邻算法的核心思想。
KNN 算法相比其他算法也更加简单,并且易于理解、实现,无需估计参数与训练。适合对稀有事件进行分类和多分类方面的问题,在这类问题方面 KNN 算法的表现比 SVM 更好。
[h1]人工神经网络算法[/h1]人工神经网络,简称神经网络或类神经网络,是一种模仿生物神经网络结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。
下图为人工神经网络示意图,人工神经网络由很多的层组成,最前面这一层叫输入层,最后面一层叫输出层,最中间的层叫隐层,并且每一层有很多节点,节点之间有边相连的,每条边都有一个权重。对于文本来说输入值是每一个字符,对于图片来说输入值就是每一个像素。





人工神经网络是如何工作的?
1.前向传播:对于一个输入值,将前一层的输出与后一层的权值进行运算,再加上后一层的偏置值得到了后一层的输出值,再将后一层的输出值作为新的输入值传到再后面一层,一层层传下去得到最终的输出值。
2.反向传播:前向传播会得到预测值,但是这个预测值不一定是真实的值,反向传播的作用就是修正误差,通过与真实值做对比修正前向传播的权值和偏置。
人工神经网络在语音、图片、视频、游戏等各类应用场景展现出了优异的性能,但是存在需要大量的数据进行训练来提高准确性的问题。


[h1]又拍云内容识别服务[/h1]又拍云内容识别中使用的便是人工神经网络算法,通过上传图片到样本管理平台,首先进行人工标注图片是否为性感图、色情图、广告图或者是暴恐图片,标注完成后将它放到线下处理平台训练,得出训练模型和结果,再将模型发回线上进行智能鉴别。
人工神经网络算法在测试中表现出了识别迅速、准确率高的特性,目前又拍云内容识别应用于色情识别的正确率高达 99.7%。

目前,又拍云内容识别推出免费套餐,一旦申请,长期有效。免费额度高达 2000次/天。
内容识别免费套餐申请入口



推荐阅读:
浅谈机器学习分类算法
深度学习详解及在图片鉴别的实践应用
9#
韦峰  2级吧友 | 2018-10-15 23:59:17 发帖IP地址来自
不知道有没有记错,李航《统计学习方法》最后一章,只不过没有关于deep model的内容,没办法2012年出版的,那时候深度学习还没火起来!
10#
方凯  1级新秀 | 2018-10-15 23:59:18 发帖IP地址来自
可以参考马克威算法交易平台
11#
Chong Pang  1级新秀 | 2018-10-15 23:59:19 发帖IP地址来自
求推荐预测投诉的分类算法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:24326
精华:1
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP