用于数据挖掘的分类算法有哪些,各有何优劣?

标签: 数据挖掘 分类 算法 | 发表时间:2014-07-27 22:00 | 作者:Jason Gu
出处:http://www.zhihu.com
尝试将quora上的这个回答翻译了下。第一次翻译,不好之处请见谅。
What are the advantages of different classification algorithms?

以下是我这些年总结的指南

训练集有多大?

如果你的训练集很小,高偏差/低方差的分类器(如朴素贝叶斯)比低偏差/高方差的分类器(如K近邻或Logistic回归)更有优势,因为后者容易过拟合。但是随着训练集的增大,高偏差的分类器并不能训练出非常准确的模型,所以低偏差/高方差的分类器会胜出(它们有更小的渐近误差)。

你也可以从生成模型与鉴别模型的区别来考虑它们。

某些分类器的优势

朴素贝叶斯(Naive Bayes, NB)
超级简单,就像做一些数数的工作。如果条件独立假设成立的话,NB将比鉴别模型(如Logistic回归)收敛的更快,所以你只需要少量的训练数据。即使条件独立假设不成立,NB在实际中仍然表现出惊人的好。如果你想做类似半监督学习,或者是既要模型简单又要性能好,NB值得尝试。

Logistic回归(Logistic Regression, LR)
LR有很多方法来对模型正则化。比起NB的条件独立性假设,LR不需要考虑样本是否是相关的。与决策树与支持向量机(SVM)不同,NB有很好的概率解释,且很容易利用新的训练数据来更新模型(使用在线梯度下降法)。如果你想要一些概率信息(如,为了更容易的调整分类阈值,得到分类的不确定性,得到置信区间),或者希望将来有更多数据时能方便的更新改进模型,LR是值得使用的。

决策树(Decision Tree, DT)
DT容易理解与解释(对某些人而言——不确定我是否也在他们其中)。DT是非参数的,所以你不需要担心野点(或离群点)和数据是否线性可分的问题(例如,DT可以轻松的处理这种情况:属于A类的样本的特征x取值往往非常小或者非常大,而属于B类的样本的特征x取值在中间范围)。DT的主要缺点是容易过拟合,这也正是随机森林(Random Forest, RF)(或者Boosted树)等集成学习算法被提出来的原因。此外,RF在很多分类问题中经常表现得最好(我个人相信一般比SVM稍好),且速度快可扩展,也不像SVM那样需要调整大量的参数,所以最近RF是一个非常流行的算法。

支持向量机(Support Vector Machine, SVM)
很高的分类正确率,对过拟合有很好的理论保证,选取合适的核函数,面对特征线性不可分的问题也可以表现得很好。SVM在维数通常很高的文本分类中非常的流行。由于较大的内存需求和繁琐的调参,我认为RF已经开始威胁其地位了。

回到LR与DT的问题(我更倾向是LR与RF的问题),做个简单的总结:两种方法都很快且可扩展。在正确率方面,RF比LR更优。但是LR可以在线更新且提供有用的概率信息。鉴于你在Square(不确定推断科学家是什么,应该不是有趣的化身),可能从事欺诈检测:如果你想快速的调整阈值来改变假阳性率与假阴性率,分类结果中包含概率信息将很有帮助。无论你选择什么算法,如果你的各类样本数量是不均衡的(在欺诈检测中经常发生),你需要重新采样各类数据或者调整你的误差度量方法来使各类更均衡。

但是。。。

更好的数据往往比更好的算法更重要,提取好的特征也需要很大的功夫。如果你的数据集非常大,那么分类算法的选择可能对最后的分类性能影响并不大(所以可以根据运行速度或者易用性来选择)。

如果你很在意分类的正确率,那么你得尝试多种分类器,根据交叉验证的结果来挑选性能最好的。或者,学习下Netflix Prize和Middle Earth, 使用某种集成的方法来组合多个分类器。

— 完 —
本文作者: Jason Gu

【知乎日报】 你都看到这啦,快来点我嘛 Σ(▼□▼メ)

此问题还有 1 个回答,查看全部。
延伸阅读:
数据挖掘与算法是什么关系?
数据分析和挖掘有哪些公开的数据来源?

相关 [数据挖掘 分类 算法] 推荐:

数据挖掘 - 分类算法比较

- - IBM developerWorks 中国 : 文档库
随着计算能力、存储、网络的高速发展,人类积累的数据量正以指数速度增长. 对于这些数据,人们迫切希望从中提取出隐藏其中的有用信息,更需要发现更深层次的规律,对决策,商务应用提供更有效的支持. 为了满足这种需求,数据挖掘技术的得到了长足的发展,而分类在数据挖掘中是一项非常重要的任务,目前在商业上应用最多.

用于数据挖掘的分类算法有哪些,各有何优劣?

- - 知乎每日精选
尝试将quora上的这个回答翻译了下. 如果你的训练集很小,高偏差/低方差的分类器(如朴素贝叶斯)比低偏差/高方差的分类器(如K近邻或Logistic回归)更有优势,因为后者容易过拟合. 但是随着训练集的增大,高偏差的分类器并不能训练出非常准确的模型,所以低偏差/高方差的分类器会胜出(它们有更小的渐近误差).

数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文档分类器的JAVA实现(上)

- - CSDN博客推荐文章
本文主要研究基于贝叶斯算法及KNN算法的newsgroup18828文档分类器的设计及实现,数据预处理、贝叶斯算法及KNN算法实现工程源码下载见:. 对newsgroup文档集进行预处理,提取出30095 个特征词. 计算每篇文档中的特征词的TF*IDF值,实现文档向量化,在KNN算法中使用. 用JAVA实现了KNN算法及朴素贝叶斯算法的newsgroup文本分类器.

数据挖掘分类技术

- - CSDN博客云计算推荐文章
从分类问题的提出至今,已经衍生出了很多具体的分类技术. 下面主要简单介绍四种最常用的分类技术,不过因为原理和具体的算法实现及优化不是本书的重点,所以我们尽量用应用人员能够理解的语言来表述这些技术. 而且我们会在第4章再次给读者讲述分类算法和相关原理. 在我们学习这些算法之前必须要清楚一点,分类算法不会百分百准确.

数据挖掘学习笔记:分类、统计学习

- - 四火的唠叨
ICDM(国际数据挖掘大会)2006年从18种提名的数据挖掘算法中投票选出了十大算法. 这18中提名数据挖掘算法分属10大数据挖掘主题,蓝色部分即为最终选出的十大算法:. 分类(Classification). 统计学习(Statistical Learning). 关联分析(Association Analysis).

决策树仍是最好的数据挖掘算法

- 无藏 - 36氪
决策树仍是最好的数据挖掘算法:理由如下:. 决策树是白箱「white box」,意味着可以生成简单易懂的规则. 你可以通过查看决策树清楚明白各个分支,明白某个分支的影响,并且将其和其他分支进行对比. 决策树术为非参数「non-parametric」,意味着无需特定的数据分流. 决策树可以轻松应对连续变量和类别变量.

SQL Server 2008 数据挖掘算法浅析

- 张大糊涂 - 标点符
数据挖掘是商务智能应用中较高层次的一项技术,而商务智能中还包括数据仓库、ETL、联机分析、商业报表等多项技术. 数据挖掘在商务智能应用中提供的是一种自动化或半自动化的数据分析手段,利用数据挖掘用户将可以更加方便地发现数据的模式(其实就是用户关心的业务模式),用户还可以利用这些模式对某些符合特征的数据作出预测.

电商数据挖掘之关联算法(一)

- - 钛媒体网
所谓关联,反映的是一个事件和其他事件之间依赖或关联的知识. 当我们查找英文文献的时候,可以发现有两个英文词都能形容关联的含义. 第一个是相关性relevance,第二个是关联性association,两者都可以用来描述事件之间的关联程度. 其中前者主要用在互联网的内容和文档上,比如搜索引擎算法中文档之间的关联性,我们采用的词是relevance;而后者往往用在实际的事物之上,比如电子商务网站上的商品之间的关联度我们是用association来表示的,而关联规则是用association rules来表示的.

数据挖掘十大经典算法(详解)

- - CSDN博客综合推荐文章
                                                       数据挖掘十大经典算法. C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3 算法.   C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: . 1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足; .

数据挖掘--频繁集测试--Apriori算法--java实现

- - CSDN博客互联网推荐文章
Apriori算法原理:. 如果某个项集是频繁的,那么它所有的子集也是频繁的. 如果一个项集是非频繁的,那么它所有的超集也是非频繁的. * @param data 数据集. * @param minSupport 最小支持度. * @param maxLoop 最大执行次数,设NULL为获取最终结果.