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

问题描述:

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

1. 朴素贝叶斯(Naive Bayes, NB)

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


2. Logistic回归(Logistic Regression, LR)

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


3.决策树(Decision Tree, DT)

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


4.支持向量机(Support Vector Machine, SVM)

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