网络科技

    今日:1240| 主题:245866
收藏本版
互联网、科技极客的综合动态。

[其他] 用Python进行梯度提升算法的参数调整

[复制链接]
马上有钱 发表于 7 天前
44 8

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
引言

  或许之前你都是把梯度提升算法(Gradient Boosting Model)作为一个“黑箱”来用,那么现在我们就要把这个黑箱打开来看,里面到底装着什么玩意儿。
  提升算法(Boosting)在处理偏差-方差权衡的问题上表现优越,和装袋算法(Bagging)仅仅注重控制方差不同,提升算法在控制偏差和方差的问题上往往更加有效。在这里,我们提供一个对梯度提升算法的透彻理解,希望他能让你在处理这一问题上更加胸有成竹。
     这篇文章我们将会用Python语言实践梯度提升算法,并通过调整参数来获得更加可信的结果。
   
用Python进行梯度提升算法的参数调整-1 (学习方法,玩意儿,文章,样本)
    提升算法的机制

     提升算法是一个序列型的集成学习方法,它通过把一系列弱学习器集成为强学习器来提升它的预测精度,对于第t次要训练的弱学习器,它会更加重视之前第t-1次预测错误的样本,相反给预测正确的样本更低的权重,我们用图来描述一下:

用Python进行梯度提升算法的参数调整-2 (学习方法,玩意儿,文章,样本)
   
       
  • 图一:生成的第一个弱分类器
           
    • 所有的样本拥有相同的权重(用大小表示)。     
    • 决策边界成功预测了2个+样本和5个-样本。   
       
  • 图二:生成的第二个弱分类器
           
    • 在图一中被正确分类的样本给予了一个更小的权重,而错分类样本权重更大。     
    • 这个分类器更加重视那些权重大的样本并把它们正确分类,但是会造成其他样本的错分类。   
       
  图三也是一样的,这个过程会循环多次直到最后,然后把所有的弱学习器基于他们的准确性赋予权重,并最终集成为强学习器。
  梯度提升算法的参数

  梯度提升算法的参数可以被分为三类:
  
       
  • 决策树参数:单独影响每个弱学习器(决策树)的参数   
  • 提升算法参数:影响提升算法运行的参数   
  • 其他参数:整个模型中的其他参数  
  决策树参数

  下面是对决策树参数的详细介绍,在这里我们用的是Python的scikit-learn包,或许和R语言的一些包不同,但是他们蕴含的思想是一致的。
  
       
  • 分支最小样本量 :一个节点想要继续分支所需要的最小样本数。   
  • 叶节点最小样本量 :一个节点要划为叶节点所需最小样本数,与上一个参数相对应。   
  • 最小叶节点相对权重 :和上一个参数类似,只不过按照权重的定义转变为分数的形式。   
  • 树最大深度 :树的层次,树越深越有过拟合的风险。   
  • 最大叶节点量 :叶节点的最大数目,和树最大深度可以相互替代。   
  • 最大特征子集量 :选择最优特征进行分支的时候,特征子集的最大数目,可以根据这个数目在特征全集中随机抽样。  
  在定义下面两类参数之前,我们先来看一下一个二分类问题的梯度提升算法框架:
  
       
  • 生成初始模型   
  • 从1开始循环迭代
    2.1 根据上一个运行的结果更新权重
    2.2 用调整过的样本子集重新拟合模型
    2.3 对样本全集做预测
    2.4 结合预测和学习率来更新输出结果   
  • 生成最终结果
    这是一个非常朴素的梯度提升算法框架,我们刚才讨论的哪些参数仅仅是影响2.2这一环节里的弱学习器模型拟合。  
  提升算法参数

  
       
  • 学习率 :这个参数是2.4中针对预测的结果计算的学习率。梯度提升算法就是通过对初始模型进行一次次的调整来实现的,学习率就是衡量每次调整幅度的一个参数。这个参数值越小,迭代出的结果往往越好,但所需要的迭代次数越多,计算成本也越大。   
  • 弱学习器数量 :就是生成的所有的弱学习器的数目,也就是第2步当中的迭代次数,当然不是越多越好,因为提升算法也会有过拟合的风险。   
  • 样本子集所占比重 :用来训练弱学习器的样本子集占样本总体的比重,一般都是随机抽样以降低方差,默认是选择总体80%的样本来训练。  
  其他参数

   诸如 损失函数(loss)随机数种子(random_state) 等参数,不在本文调整的参数范围内,大多是采用默认状态。
  模型拟合与参数调整

     我们用的是从Data Hackathon 3.x AV hackathon下载的数据,在预处理以后,我们在Python中载入要用的包并导入数据。
友荐云推荐




上一篇:Multi-Tenancy Using JPA, Spring, and Hibernate (Part 1)
下一篇:Bitcoin Exchange Ordered to Give IRS Years of Data on Millions of Users
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

可乐天曲 发表于 7 天前
你前世是我后座学霸吧
回复 支持 反对

使用道具 举报

ppkdcdaxiong 发表于 7 天前
是爷们的娘们的都帮顶!大力支持
回复 支持 反对

使用道具 举报

刘小东 发表于 7 天前
小弟刘小东默默的路过贵宝地~~~
回复 支持 反对

使用道具 举报

黄建川 发表于 6 天前
nO Zuo nO Die
回复 支持 反对

使用道具 举报

丶____磊磊 发表于 6 天前
支持楼主,拥护楼主,楼主英明呀!!!
回复 支持 反对

使用道具 举报

quee 发表于 3 天前
按“开始键”再按两下“U”可以找出windows的隐藏游戏.
回复 支持 反对

使用道具 举报

西T吹水 发表于 3 天前
支持,赞一个
回复 支持 反对

使用道具 举报

tadux 发表于 2 小时前
时间是最好的老师,但遗憾的是――最后他把所有的学生都弄死了.
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表