集成学习voting Classifier在sklearn中的实现

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37725003/article/details/81095555

 

    机器学习的算法有很多,对于每一种机器学习算法,考虑问题的方式都略微有所不同,所以对于同一个问题,不同的算法可能会给出不同的结果,那么在这种情况下,我们选择哪个算法的结果作为最终结果呢?那么此时,我们完全可以把多种算法集中起来,让不同算法对同一种问题都进行预测,最终少数服从多数,这就是集成学习的思路。

    其实在我们的生活中,也经常会用到集成学习的思路。比如想买一件化妆品时找朋友推荐,通常情况下,我们不会只找一个人推荐,我们会咨询很多朋友推荐,看她们综合的意见。比如想去电影院看一部最近上映的电影,但是拿不准好不好看,问身边的十个朋友,如果七个人都说挺好看的,值得一看,只有三个朋友反映一般般,此时,就会倾向与去看一看。其实我们在做很多决定的时候,潜意识里都会用到集成学习的思想,一定是综合多方面的意见,因为不同的人由于经历不同,视角不同,他们给出的决策背后的原因可能就不同,那么,我们集成更多的人的意见,通常情况来讲,得到的结果很有可能就是最合适的。

    接下来我们就来看看怎样用sklearn实现我们集成学习中的voting classifier,我们在这里调用sklearn中的ensemble,用hard voting的方式集成了三个不同的分类器(逻辑回归、支持向量机、决策树),先展示了三个分类器单独使用时的准确率

    在这里我们没有对单个分类器进行调参,只是给大家演示什么是voting classifier,在具体使用的时候大家也可以先把每一个分类器调整到最好参数情况下,在一起使用集成学习。

    可以看出,集成后的准确率高于单个分类器的准确率,但是在这里voting的参数设置为hard,对应的就是少数服从多数的投票方式,那么大家应该想到了,既然有hard voting,对应的应该就有soft voting, 其实这个想法也很简单,因为在有的情况下,少数服从多数并不适用,那么更加合理的投票方式,应该是有权值的投票方式,在现实生活中也有这样的例子,比如在唱歌比赛中,专业的评审的投票分值就应该比观众的投票分值高。

    hard voting的少数服从多数原则在下面这种情况下就显得不太合理,虽然只有模型1和模型4分类结果为A,但概率都高于90%,也就是说很确定结果为A,其他三个模型分类结果是B,但从概率看,并不是很确定。这时如果用hard voting得出的最终结果为就显得不太合理。

    在使用soft voting时,把概率当做权值,这时候集成后的结果为A就显得更为合理。

     换句话说,当用soft voting进行集成时,它不仅要看投给A多少票,B多少票,还要看到底有多大是我概率把样本分成A/B类,在使用时,就要求集合的每一个模型都能估计概率。那我们来回顾一下有哪些算法是能够估计概率的: 

  •     逻辑回归
  •     KNN
  •     决策树
  •     SVM(间接)

    接着,我们来看看在sklearn中实现soft voting:

    在这里,我们已经入门了集成学习算法,但是有一个很大的问题,就是虽然我们集成了不同的算法,但是算法的种类是有限的,我们怎样才能聚集更多的分类器,为我们创建出更好的分类结果呢?我们在下一篇文章继续深入探讨,拜了喵。

展开阅读全文

没有更多推荐了,返回首页