如何提高机器学习中的分类准确率

来源:互联网 发布:监控分布图制作软件 编辑:程序博客网 时间:2024/04/30 09:25

1.      扩大数据集。俗话说的好,更好的数据往往能打败更好的算法。当我们想要提高机器学习的分类准确率时,第一个可用的方法就是扩大数据集。只要机器学习花费的时间在可以接受的范围内,就可以继续扩大数据集,它往往可以使我们获得更理想的分类准确率。

2.      分类器选择。遗憾的是,理想的数据集规模往往是我们可望不可即的。这时,我们应该想到的就是选择适合的分类器。以weka为例,如果你使用的训练集较小,那么高偏差/低方差分类器(如朴素贝叶斯)将会是你较优的选择。然而,随着训练集的增大,低偏差/高方差分类器(如k近邻)将提供更好的分类结果,因为它们具有较低的渐近误差,而高偏差分类器则不足以提供准确的模型。此外,数据的各个属性是离散值还是连续值,数据噪声的大小等都可以成为选择分类器的依据。

3.      属性子集选择。好马需配好鞍。在我们选择了合适的分类器后,还需要进行的一项工作就是数据属性子集的选取,也就是选出那些与类别属性相关性较强的,去除不相关和冗余的属性。这项工作如果人工来做的话,是十分复杂且困难的。不过,好在很多机器学习工具都为我们提供了这项功能,还以weka为例,它为我们提供了一个工具——属性评估器。属性评估器分类两类:一是属性子集评估器,它的作用是为我们返回一个“最优”(是否真的最优,还需进行验证)的属性子集。二是单个属性评估器,它通过将给定数目的属性进行排序,得到了一个直观的属性排名列表,我们可以自己把那些排名靠前的属性选出来,并用它们进行分类,从而提高准确率。

4.      集成学习。俗话说的好,三个臭皮匠赛过诸葛亮。机器学习也是如此,集成学习的目标就是通过把若干个弱学习器组合起来,使其成为一个强学习器,从而获得更好的分类准确率。关于强、弱学习器的定义,大家有兴趣可以百度,我就不赘述了。然后,关于在编程中如何实现集成学习,我给大家一个传送门:http://blog.csdn.net/anqiang1984/article/details/4045903。最后,我再强调一点,在集成的过程中,选择哪些弱学习器进行集成呢?有个判断标准,一是弱学习器的准确率越高越好,二是这些弱学习器之间的差异性越大越好。根据这两个标准进行选择性集成将会获得很不错的效果。

5.      算法改进。这点非常难,尤其是在机器学习已经发展了那么多年,无数大牛先后投入其中的情况下,想要改进算法是我们一般人做不到的。但是,也存在一种可能,就是当我们利用机器学习解决某个特定领域的问题时,也许可以利用我们对该领域知识的掌握,比如该领域数据有何特点,来对某一算法进行适当的调整,以使得该算法可以更好地应用在这个领域的数据上,从而获得更好的效果。如果有哪位朋友有相关的工作经历或者经验,也希望您能和大家分享一下。

以上只是我刚刚接触机器学习后的一点点总结,肯定存在很多错误,还希望大家多多批评指正。

0 0
原创粉丝点击