Blog of Samperson

适于二分类的机器学习算法

2018-06-03

偏差和方差

[1] 偏差:描述的是预测值(估计值)的期望E’与真实值Y之间的差距。偏差越大,越偏离真实数据。
[2] 方差:描述的是预测值P的变化范围,离散程度,是预测值的方差,也就是离其期望值E的距离。方差越大,数据的分布越分散。
[3] 模型的真实误差是两者之和。

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

分类算法

输入 输出 适用的数据集 说明
1 朴素贝叶斯 特征属性+训练样本生成分类器;分类器+待分类项对待分类项进行分类 通过贝叶斯公式求得样本类别的后验概率,将后验概率最大的样本所属的类作为分类器的输出 对小规模的数据表现很好,能处理多分类任务,适合增量式训练;对缺失数据不太敏感,常用于文本分类 生成式模型:低方差高偏差
假设对于给定的类别,所有的特征相互独立;需要计算先验概率;分类决策存在错误率;对输入数据的表达形式很敏感。所需估计的参数少。
2 逻辑回归(LR) 训练数据集 回归表达式参数 可解决多重共线性问题;目标变量是分类变量 判别式模型:需要一个概率架构(比如,简单地调节分类阈值,指明不确定性,或者是要获得置信区间),或者以后将更多的训练数据快速整合到模型中去。
实现简单,广泛应用于工业问题上;分类时计算量非常小,速度很快,存储资源低;便利的观测样本概率分数。
当特征空间很大时,逻辑回归的性能不是很好;容易欠拟合,一般准确度不太高;不能很好地处理大量多类特征或变量;特征处理复杂。需要归一化和较多的特征工程。
3 KNN(K近邻算法) 训练数据集 实例x所属的类y 具有较强的一致性结果;样本容量比较大的类域自动分类。在分类时较大的K值能够减小噪声的影响,但会使类别之间的界限变得模糊。 理论成熟,思想简单,既可以用来做分类也可以用来做回归;可用于非线性分类;训练时间复杂度为O(n);对数据没有假设,准确度高,对outlier不敏感。
计算量大;需要大量的内存;当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。
4 决策树 决策树+用于构造树的所有类标签向量执行分类 决策结果 适合处理有缺失属性的高维数据样本;对于各类别样本数量不一致的数据,信息增益的结果偏向于那些具有更多数值的特征。 不支持在线学习,在新样本到来后,决策树需要全部重建;容易出现过拟合。
计算简单,易于理解,可解释性强;能够处理不相关的特征;在相对短的时间内能够对大型数据源做出可行且效果良好的结果;忽略了数据之间的相关性。
5 Adaboosting 训练数据集 最终的强分类器 加和模型:每个模型都是基于上一次模型的错误率来建立的,过分关注分错的样本,而对正确分类的样本减少关注度,逐次迭代之后,可以得到一个相对较好的模型
有很高精度;可以使用各种方法构建子分类器;当使用简单分类器时,计算出的结果是可以理解的,并且弱分类器的构造极其简单,不用做特征筛选,不容易发生过拟合
6 SVM(支持向量机) 训练数据集 识别结果 小样本、非线性及高维、超高维模式识别问题中有优势;就算数据在原特征空间线性不可分,只要给个合适的核函数,它就能运行得很好 基于分类边界的方法:将低维空间的点映射到高维空间,使它们成为线性可分,再使用线性划分的原理来判断分类边界。内存消耗大,难以解释,运行和调参麻烦。
能够处理非线性特征的相互作用;无需依赖整个数据;可以提高泛化能力。
当观测样本很多时,效率并不是很高;对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数;对缺失数据敏感。
7 神经网络 训练数据集 识别结果 分类的准确度高;并行分布处理能力强,分布存储及学习能力强;鲁棒性较强,不易受噪声影响;具备联想记忆的功能。
神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;学习时间过长,甚至可能达不到学习的目的。”
8 K-Means聚类 训练数据集 无监督学习,无标签 当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好;对数据类型要求较高,适合数值型数据;不适合于发现非凸面形状的簇,或者大小差别很大的簇。 尝试找出使平方误差函数值最小的k个划分,算法简单,容易实现。可能收敛到局部最小值;K值比较难以选取;对初值的簇心值敏感,对于不同的初始值,可能会导致不同的聚类结果;对于“噪声”和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。

选择

[1] 首选逻辑回归,如果它的效果不怎么样,那么可以将它的结果作为基准来参考,在基础上与其他算法进行比较;
[2] 然后试试决策树(随机森林)看看是否可以大幅度提升你的模型性能。即便最后你并没有把它当做为最终模型,你也可以使用随机森林来移除噪声变量,做特征选择;
[3] 如果特征的数量和观测样本特别多,那么当资源和时间充足时,使用SVM不失为一种选择。

交叉参见

决策树SVM卷积神经网络

参考资料

[1] https://blog.csdn.net/u014365862/article/details/52937983
[2] https://blog.csdn.net/china1000/article/details/48597469
[3] https://wenku.baidu.com/view/9aac9dce80eb6294dd886cd9.html
[4] https://blog.csdn.net/legend_hua/article/details/79715976
[5] https://www.cnblogs.com/Belter/p/6128644.html
[6] https://blog.csdn.net/u014006007/article/details/51882714
[7] https://blog.csdn.net/HerosOfEarth/article/details/52347820
[8] https://www.cnblogs.com/YiXiaoZhou/p/5875077.html
[9] https://www.cnblogs.com/wangduo/p/5337466.html
[10] http://blog.sina.com.cn/s/blog_62186b46010145ne.html