机器学习:聊聊利用GBDT算法自动构造新特征的思路

实际问题中,可直接用于机器学习模型的特征往往并不多。能否从“混乱”的原始log中挖掘到有用的特征,将会决定机器学习模型效果的好坏。

前言

实际问题中,可直接用于机器学习模型的特征往往并不多。能否从“混乱”的原始log中挖掘到有用的特征,将会决定机器学习模型效果的好坏。引用下面一句流行的话:

特征工程决定模型上限,算法决定离模型上限的距离。

利用GBDT构造新特征

论文的思想很简单,就是先用已有特征训练GBDT模型,然后利用GBDT模型学习到的树来构造新特征,最后把这些新特征加入原有特征一起训练模型。

构造的新特征向量是取值0/1的,向量的每个元素对应于GBDT模型中树的叶子结点。当一个样本点通过某棵树最终落在这棵树的一个叶子结点上,那么在新特征向量中这个叶子结点对应的元素值为1,而这棵树的其他叶子结点对应的元素值为0。新特征向量的长度等于GBDT模型里所有树包含的叶子结点数之和。

举例说明,下面的图中的两棵树是GBDT学习到的,第一棵树有3个叶子结点,而第二棵树有2个叶子节点。

对于一个输入样本点x,如果它在第一棵树最后落在其中的第二个叶子结点,而在第二棵树里最后落在其中的第一个叶子结点。那么通过GBDT获得的新特征向量为[0, 1, 0, 1, 0],其中向量中的前三位对应第一棵树的3个叶子结点,后两位对应第二棵树的2个叶子结点。

机器学习:聊聊利用GBDT算法自动构造新特征的思路

那么,GBDT中需要多少棵树能达到效果最好呢?具体数字显然是依赖于你的应用以及你拥有的数据量。

一般数据量较少时,树太多会导致过拟合,在作者的应用中,大概500棵左右效果就基本不改进了。另外,作者在建GBDT时也会对每棵树的叶子结点数做约束——不多于12个叶子结点。

一个简单的例子

下面是世纪佳缘工程师在一个概率预测问题上用这种方法的实际效果,构造新特征只使用了30棵树。

机器学习:聊聊利用GBDT算法自动构造新特征的思路

机器学习:聊聊利用GBDT算法自动构造新特征的思路

第一个图是只使用原始特征的结果,第二个图是原始特征加GBDT新特征的结果。

图中横坐标表示预测概率值,纵坐标表示真实概率值,所以预测的点越靠近y=xy=x这条参考线越好。显然,使用了GBDT构造的新特征后,模型的预测效果好不少。

Reference

http://breezedeus.github.io/2014/11/19/breezedeus-feature-mining-gbdt.html

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/81281.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信