zoukankan      html  css  js  c++  java
  • 随机森林深入理解

    决策树算法——ID3》中,我们介绍了决策树的分类思想及原理,可以看出,决策树对经验数据可以很好的分类,但是模型通用性不强,预测往往不准确,也就是过拟合。我们可以通过剪枝减弱过拟合,但是还不够完美。

    随机森林原理

    随机森林的出现,完美的解决了决策树的劣势,使得分类效果大大提升,甚至超过了神经网络。随机森林的思想是:利用经验数据的不同属性建立多棵决策树,预测时每棵树独立的进行分类投票,最后选取投票数最多的分类结果作为预测结果。

    比如《创造101》选取女团成员,参考信息有选手的身高,体重,年龄,颜值,性格,舞蹈,唱歌,创作,气质等等属性,我们需要把101个参赛选手分为出道和淘汰两类。不同人有不同选择,而且不同人分类的依据也不尽相同,我们单靠某个人的判断进行组团,结果可能十分糟糕,但是我们通过全国成千上万观众进行投票选择,那么结果一定符合社会对于女团成员的定义,这种结果往往是最优选择。(当然,需要排除刷票,黑幕等情况)

    这里,我们可以把个人当做决策树,所有参与投票的人当做随机森林。随机森林正是基于这种以群体投票代替个体选择的思想进行分类,分类准确性当然高。并且随机森林中的决策树不是普通的分类器,而是专家分类器,随机森林可以看做一群不同专业专家的集合,由专家共同投票选择结果。

    创建随机森林

    建立单棵决策树的思想不再赘述,我们这里详述一下怎么建立不同的决策树。类似选取女团成员,只允许女生投票,结果不一定符合男生的审美,只允许老人投票,结果不一定符合年轻人的口味,所以建立不同的决策树十分重要。

    我们通过有放回的选取行数据和随机选取列数据建立决策树。一行为一个经验数据,一列为一个属性。

    1、有放回的选取行数据

    对于m行经验数据,我们每次随机从m行数据中选取1行数据,选择m次。(选择的m行数据中很可能存在重复数据)

    2、随机选取列数据

    对于n列数据,我们随机选取k列,k<<n。

    这样,我们得到了新的m * k经验数据矩阵,我们基于这个经验数据矩阵建立一棵决策树。

    重复上述过程c次,我们就得到了一个包含c棵决策树的随机森林。

    随机森林分类

    对于新数据预测,我们使用随机森林中的所有决策树进行分类投票,最终选择投票最多类别作为预测结果。

  • 相关阅读:
    当简单的计算遇上了大数,其实大数运算也很简单
    揭开源码的神秘面纱,让源码从此无处藏身
    JAVA对象和XML文档、原来他们之间还有这一出
    JAVA反射其实就是那么一回事
    Metatable让我从心认知了Lua(相知篇)
    Github
    常见问题汇总
    文章目录
    前后端分离下使用SignalR
    IdentityServer_0_参考资料
  • 原文地址:https://www.cnblogs.com/coshaho/p/9236155.html
Copyright © 2011-2022 走看看