树模型与线性模型的融合模型(Python实现)

article/2025/10/4 12:50:58

目录

一、树模型与线性模型的融合模型

二、Python sklearn实现GBDT+LR融合模型


一、树模型与线性模型的融合模型

树模型GBDT原理:https://blog.csdn.net/woniu201411/article/details/83114226

线性模型LR原理:https://blog.csdn.net/woniu201411/article/details/81335863

海量的离散特征+线性模型LR,因其较高的精度和较少的运算开销在业界广为使用。 线性模型LR无法捕捉到非线性特征对标签的影响,因而提升线性模型精度的有效方法是构造有效的交叉特征。比较成熟的构造交叉特征的方法包含:

  1. 结合业务,构造有效的交叉特征,这种方法对线性模型的精度提升是显著的,但要花费巨大的人力和时间,特别当特征达到上百维时,难以构造有效的交叉特征;
  2. 根据信息增益,分箱划分连续特征,将一个连续特征划分为多个类别特征,为线性模型增加了非线性表达,提高了模型的精度和健壮性。但这种方法构造的非线性特征包含的信息是很有限的;
  3. 离散特征通过笛卡尔积,获取所有的组合特征,但笛卡尔积获取的组合特征呈爆炸式增长,并且很多组合特征是无效的,为线性模型增加了很多噪音。

2014年faceBook提出了树模型GBDT与线性模型LR的融合模型(Practical Lessons from Predicting Clicks on Ads at Facebook),利用GBDT构造有效的交叉特征,从根节点到叶子节点的路径,代表部分特征组合的一个规则,提升树将连续特征转化为离散特征,可以明显提升线性模型的非线性表达能力,提高线性模型精度

以下图所示,GBDT构造两棵树,第一棵树有三个叶子节点,第二颗树有两个叶子节点,若训练样本落入第一棵树的第二个叶子节点,第二颗树的第一个叶子节点,GBDT构造的交叉离散特征输出为[0,1,0,1,0],其中前三个元素对应第一棵树的叶子节点,后两个元素对应第二颗树的叶子节点,输出的交叉离散特征作为LR的输入。

关于GBDT与LR融合模型的思考:

1、树模型采用集成决策树,而非单颗决策树

一棵树的表达能力很弱,不足以表达多个有区分性的特征组合,多棵树的表达能力更强一些。GBDT每棵树都在学习前面棵树尚存的不足,迭代多少次就会生成多少颗树。按paper的GBDT+LR融合方式,多棵树正好满足LR每条训练样本可以通过GBDT映射成多个特征的需求。

2建树采用GBDT而非RF

RF也是多棵树,但从效果上有实践证明不如GBDT。且GBDT前面的树,特征分裂主要体现对多数样本有区分度的特征;后面的树,主要体现的是经过前N颗树,残差仍然较大的少数样本。优先选用在整体上有区分度的特征,再选用针对少数样本有区分度的特征,思路更加合理,这应该也是用GBDT的原因。

二、Python sklearn实现GBDT+LR融合模型

引用包引入:

import numpy as np
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import (RandomTreesEmbedding,RandomForestClassifier,GradientBoostingClassifier)
from sklearn.preprocessing import OneHotEncoder
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve,roc_auc_score,accuracy_score,auc

数据集划分(树模型和线性模型的训练分别用不同数据集,防止过拟合):

tmp = np.loadtxt("E:\\ensembleModelData.csv",dtype=np.str,delimiter=',')
data = tmp[1:,2:-1].astype(np.float)
label = tmp[1:,-1].astype(np.int)
#data,label = make_classification(n_samples=80000,n_features=30)
X_train,X_test,Y_train,Y_test = train_test_split(data,label,test_size=0.2)
X_train_tree,X_train_lr,Y_train_tree,Y_train_lr = train_test_split(X_train,Y_train,test_size=0.5)

利用网格搜索,获取最优参数:

for n_estimator in [80,100,150,200,250]:for depth in [1,2,3,5]:for maxiter in [300,400,500]: GBDT = GradientBoostingClassifier(learning_rate=0.1,n_estimators=n_estimator,max_depth=depth)OHE = OneHotEncoder()LRGBDT = LogisticRegression(max_iter=maxiter)GBDT.fit(X_train_tree,Y_train_tree)OHE.fit(GBDT.apply(X_train_tree)[:,:,0])LRGBDT.fit(OHE.transform(GBDT.apply(X_train_lr)[:,:,0]),Y_train_lr)Y_pred_gbdt_lr = LRGBDT.predict_proba(OHE.transform(GBDT.apply(X_test)[:,:,0]))[:,1]auc_gbdt_lr = roc_auc_score(Y_test,Y_pred_gbdt_lr)print(n_estimator,depth,maxiter,auc_gbdt_lr)

最终结果为:100,5, 500, 0.9440185179246727

 

参考资料:

Practical Lesson from Predicting Clicks on Ads at Facebook

https://blog.csdn.net/u010352603/article/details/80681100

https://blog.csdn.net/asdfghjkl1993/article/details/78606268

https://blog.csdn.net/TwT520Ly/article/details/79769705

https://scikit-learn.org/stable/auto_examples/ensemble/plot_feature_transformation.html#sphx-glr-download-auto-examples-ensemble-plot-feature-transformation-py

 


http://chatgpt.dhexx.cn/article/RHDQ0X4p.shtml

相关文章

机器学习理论与实战(九)回归树和模型树

前一节的回归是一种全局回归模型,它设定了一个模型,不管是线性还是非线性的模型,然后拟合数据得到参数,现实中会有些数据很复杂,肉眼几乎看不出符合那种模型,因此构建全局的模型就有点不合适。这节介绍的树回归就是为了解决这类问题,它通过构建决策节点把数据数据切分成…

决策树模型

本文代码及数据集来自《Python大数据分析与机器学习商业案例实战》 决策树模型的建树依据主要用到的是基尼系数的概念。基尼系数(gini)用于计算一个系统中的失序现象,即系统的混乱程度。基尼系数越高,系统的混乱程度就越高&#x…

新版HyperMesh的Assemblies中调出下拉菜单查看Component(装配关系模型树)

新版HyperMesh的Assemblies中调出下拉菜单查看Component(装配关系模型树) 从Altair更新的2019版本开始,在Model模型树中找不到Assemblies了,这样导致好多用户一直在用14或者17版本,其实这次更新不是把这个功能取消掉了…

Cesium bim模型加载并与模型树关联(分层加载)

很久都没写文章了,最近实在是太忙了,向各位关注我的小伙伴致个歉! 最近没事儿写了个模型树和模型关联的功能,处理工具是用的cesiumlab。 说明一下为什么要用cesiumlab: 网上现在有很多的模型转换工具,如…

举例讲清楚模型树和回归树的区别

根据上面图中的一个例子,我们来分析下,假设A、B两点是曲线上的噪声点。 模型树的叶子节点是一个分段线性函数[1]。 回归树的叶子节点是取一个区间的平均(一个常数值)。 上述图中AB区间的均值是一个暗点。 所以: 对于节点A而言,模…

[Ansys Workbench] Mechanical 界面显示模型树窗口和详细信息窗口

根据这个回答才找到的……我之前也没注意,别人问我我才去想的 https://forum.ansys.com/discussion/8740/workbench-tree-outline 一般的方法是在 主页 - 布局 - 管理 里面选择显示哪个视窗 如果就是想显示模型树窗口和详细信息窗口,可以使用快捷键 Ctr…

creo文件如何检入服务器,CREO模型树配置的保存与检索

保存模型树配置 (1)单击 然后单击“保存设置文件”(Save Settings File)。“保存模型树配置”(Save Model Tree Configuration) 对话框打开。 (2)接受默认文件名 tree.cfg 或键入新名称。 (3)单击“保存”(Save)。 手动检索模型树配置 (1)单击 然后单击“打开设置文件”(Open S…

Graphviz绘制模型树2——XGBoost模型的可解释性

从二分类模型中的树重新理解XGBoost算法 一.对绘制的树简单解释1.1类别判断1.2树的最大层级1.3效果较差情况 二.从数据来解释一棵树2.1EXCEL构建第1颗树2.2第1棵树的数据解释2.3效果较差的节点解释 三.N颗树如何预测样本3.1样本22数据3.2样本22落入叶子情况3.3样本22的总结 四.…

决策树(二):回归树和模型树

下面介绍的回归树和另一篇文章介绍的分类树,都属于决策树范畴。分类树的模型是每个非叶子节点都是一个分类特征,按照该分类特征的不同取值,将数据集分为多少个子集;并且分类树模型我们要找的是测试数据集的最终分类结果&#xff0…

模型树——就是回归树的分段常数预测修改为线性回归 对于非线性回归有较好的预测效果...

说完了树回归,再简单的提下模型树,因为树回归每个节点是一些特征和特征值,选取的原则是根据特征方差最小。如果把叶子节点换成分段线性函数,那么就变成了模型树,如(图六)所示: &…

《机器学习实战》9.3树回归之模型树和项目案例

《机器学习实战》9.3树回归之模型树和项目案例 搜索微信公众号:‘AI-ming3526’或者’计算机视觉这件小事’ 获取更多人工智能、机器学习干货 csdn:https://blog.csdn.net/baidu_31657889/ github:https://github.com/aimi-cn/AILearners 本文出现的所有…

模型树–M5

模型树–M5 模型树推广了回归树的概念,它与回归树的2个重要不同在于: 叶节点上不是常量,而是一个线性函数模型。分割空间的标准不是降低平方误差,而是降低样本标准差。 相比于回归树,模型树的优点在于:回…

机器学习——模型树

和回归树(在每个叶节点上使用各自的均值做预测)不同,模型树算法需要在每个叶节点上都构建出一个线性模型,这就是把叶节点设定为分段线性函数,这个所谓的分段线性(piecewise linear)是指模型由多…

深度学习人脸检测与人脸识别

一、概述 1. 基本概念 人脸是个人重要的生物特征,业界很早就对人脸图像处理技术进行了研究。人脸图像处理包括人脸检测、人脸识别、人脸检索等。人脸检测是在输入图像中检测人脸的位置、大小;人脸识别是对人脸图像身份进行确认,人脸识别通常…

各类人脸识别算法的总体分析

一、人脸识别算法之特征脸方法(Eigenface) 1、原理介绍及数据收集 特征脸方法主要是基于PCA降维实现。 详细介绍和主要思想可以参考 http://blog.csdn.net/u010006643/article/details/46417127 上述博客的人脸数据库打不开了,大家可以去下…

人脸识别算法初次了解

人脸识别算法初次了解 这是转载别人的帖子,觉得好,大家一块学习http://www.cnblogs.com/guoyiqi/archive/2011/07/28/2129300.html 前言 在写此文之前,先扯点东西。我一直在找一个东西,让我思考,让我久久的深陷其…

深扒人脸识别技术,原理、算法深度解析

在深度学习出现后,人脸识别技术才真正有了可用性。这是因为之前的机器学习技术中,难以从图片中取出合适的特征值。轮廓?颜色?眼睛?如此多的面孔,且随着年纪、光线、拍摄角度、气色、表情、化妆、佩饰挂件等…

基于特征脸的人脸识别算法概述

基于特征脸的人脸识别算法概述 —— 才疏学浅, 难免有错误和遗漏, 欢迎补充和勘误. 特征脸识别算法(EigenFaceRecognizer)是一种在主成分分析(PCA)中进行人脸辨识的技术。基于特征脸的驾驶人身份识别流程图为: 图1 …

人脸检测与识别

人脸检测( Face Detection )和人脸识别技术是深度学习的重要应用之一。本章首先会介绍MTCNN算法的原理, 它是基于卷积神经网络的一种高精度的实时人脸检测和对齐技术。接着,还会介绍如何利用深度卷积网络提取人脸特征,…

人脸检测算法综述

其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。 书的购买链接书的勘误,优化,源代码资源导言 人脸检测是目前所有目标检测子方向中被研究的最充分的问题之一,它在安防监控,人证比对…