各类分类算法的优缺点

from:https://blog.csdn.net/shuke1991/article/details/52056382

决策树
一种启发式算法,核心是在决策树各个节点上应用信息增益等准则来选取特征,进而递归地构造决策树。
优点:
1. 计算复杂度不高,易于理解和解释,可以理解决策树所表达的意义;
2. 数据预处理阶段比较简单,且可以处理缺失数据;
3. 能够同时处理数据型和分类型属性,且可对有许多属性的数据集构造决策树;
4. 是一个白盒模型,给定一个观察模型,则根据所产生的决策树很容易推断出相应的逻辑表达式;
5. 在相对短的时间内能够对大数据集合做出可行且效果良好的分类结果。
6.  可以对有许多属性的数据集构造决策树。

缺点:
1. 对于那些各类别样本数目不一致的数据,信息增益的结果偏向于那些具有更多数值的属性;
2. 对噪声数据较为敏感;
3. 容易出现过拟合问题;
4. 忽略了数据集中属性之间的相关性;
5.处理缺失数据时的困难


KNN算法
一种惰性分类方法,从训练集中找出k个最接近测试对象的训练对象,再从这k个训练对象中找出居于主导的类别,将其赋给测试对象。
优点:
1. 简单有效,容易理解和实现;
2. 重新训练的代价较低(类别体系的变化和训练集的变化);
3. 计算时间和空间线性于训练集的规模; 
4. 错误率渐进收敛于贝叶斯错误率,可作为贝叶斯的近似;
5. 适合处理多模分类和多标签分类问题;
6. 对于类域的交叉或重叠较多的待分类样本集较为适合;
缺点:
1. 是懒散学习方法,比一些积极学习的算法要慢;
2. 计算量比较大,需对样本点进行剪辑;
3. 对于样本不平衡的数据集效果不佳,可采用加权投票法改进;
4. k值的选择对分类效果有很大影响,较小的话对噪声敏感,需估计最佳k值。
5.可解释性不强,计算量大。


朴素贝叶斯算法
贝叶斯分类器的分类原理是利用各个类别的先验概率,再利用贝叶斯公式及独立性假设计算出属性的类别概率以及对象的后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类别。
优点:
1. 数学基础坚实,分类效率稳定,容易解释;
2. 所需估计的参数很少,对缺失数据不太敏感;
3. 无需复杂的迭代求解框架,适用于规模巨大的数据集。
缺点:
1. 属性之间的独立性假设往往不成立(可考虑用聚类算法先将相关性较大的属性进行聚类);
2. 需要知道先验概率,分类决策存在错误率。


SVM算法
对于两类线性可分学习任务,SVM找到一个间隔最大的超平面将两类样本分开,最大间隔能够保证该超平面具有最好的泛化能力。
优点:
1. 可以解决小样本情况下的ML问题;
2. 可以提高泛化性能;
3. 可以解决高维问题,避免维数灾难;
4. 可以解决非线性问题;
5. 可以避免神经网络结构选择和局部极小点问题。
参数C和g的选择对分类性能的影响:
C是惩罚系数,C越大,交叉validation高,容易过学习;
g是核函数的到达0的速率,g越小,函数下降快,交叉validation高,也容易造成过学习。
缺点:
1. 对缺失数据敏感;
2. 对非线性问题没有通用解决方案,必须谨慎选择kernel function来处理。


AdaBoost算法
提升方法是从弱学习算法出发,反复学习,得到一系列的弱分类器(即基本分类器),然后组合这些弱分类器,构成一个强分类器,大多数的提升方法都是改变训练数据集的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列的弱分类器。
优点:
1. 分类精度高;
2. 可以使用各种方法构建子分类器,Adaboost算法提供的是框架;
3. 简单,且不用做特征筛选;
4. 不会造成overfitting。
缺点:
1. 对分类错误的样本多次被分错而多次加权后,导致权重过大,影响分类器的选择,造成退化问题;(需改进权值更新方式)
2. 数据不平衡问题导致分类精度的急剧下降;
3. 算法训练耗时,拓展困难;
4. 存在过拟合,鲁棒性不强等问题。


Logistic回归算法
二项logistic回归模型是一种分类模型,由条件概率分布P(Y|X)表示,形式为参数化的logistic分布。这里随机变量X取值为实数,随机变量Y取值为1或0。可以通过有监督的方法来估计模型参数。
优点:
1. 计算代价不高,易于理解和实现;
2. 适用于数值型和分类型数据。
缺点:
1. 容易欠拟合;
2. 分类精度可能不高。


人工神经网络
优点:
1. 分类的准确度高,并行分布处理能力强,分布存储及学习能力强;
2. 对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系,具备联想记忆的功能等。
缺点:
1. 神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;
2. 不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;
3. 学习时间过长,甚至可能达不到学习的目的。


遗传算法
优点:
1. 与问题领域无关且快速随机的搜索能力;
2. 搜索从群体出发,具有潜在的并行性,可以进行多个个体的同时比较,鲁棒性好;
3. 搜索使用评价函数启发,过程简单;
4. 使用概率机制进行迭代,具有随机性;
5. 具有可扩展性,容易与其他算法结合。
缺点:
1. 遗传算法的编程实现比较复杂,找到最优解之后还需要对问题进行解码;
2. 三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验。
3.算法的搜索速度比较慢,要得要较精确的解需要较多的训练时间;
4. 算法对初始种群的选择有一定的依赖性,能够结合一些启发算法进行改进。

猜你喜欢

转载自blog.csdn.net/qq_40587575/article/details/81293104
今日推荐