任务5 LightGBM模型的尝试

单模型

LightBGM理论

LightGBM 是一个轻量级梯度 boosting 框架,使用基于学习算法的决策树。它可以说是分布式的,高效的,有以下优势:
更快的训练效率
低内存使用
更高的准确率
支持并行化学习
可处理大规模数据

特点:
基于Histogram的决策树算法
带深度限制的Leaf-wise的叶子生长策略
直方图做差加速
直接支持类别特征(Categorical Feature)
Cache命中率优化
基于直方图的稀疏特征优化
多线程优化

Histogram算法

直方图算法的基本思想:先把连续的浮点特征值离散化成k个整数,同时构造一个宽度为k的直方图。遍历数据时,根据离散化后的值作为索引在直方图中累积统计量,当遍历一次数据后,直方图累积了需要的统计量,然后根据直方图的离散值,遍历寻找最优的分割点。

带深度限制的Leaf-wise的叶子生长策略

Level-wise过一次数据可以同时分裂同一层的叶子,容易进行多线程优化,也好控制模型复杂度,不容易过拟合。但实际上Level-wise是一种低效算法,因为它不加区分的对待同一层的叶子,带来了很多没必要的开销,因为实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。

Leaf-wise则是一种更为高效的策略:每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环。因此同Level-wise相比,在分裂次数相同的情况下,Leaf-wise可以降低更多的误差,得到更好的精度。

Leaf-wise的缺点:可能会长出比较深的决策树,产生过拟合。因此LightGBM在Leaf-wise之上增加了一个最大深度限制,在保证高效率的同时防止过拟合。

LightGBM实践

自己设定参数

import lightgbm as gbm
GBM = gbm.sklearn.LGBMClassifier(num_leaves = 30,learning_rate = 0.1,n_estimators = 20)
GBM.fit(x_train,y_train)

在这里插入图片描述

GBM_predict = GBM.predict(x_val)sklearn.metrics.f1_score(y_val,GBM_predict,average ='weighted')

在这里插入图片描述

GridSearchCV调参

From sklearn.model_selection import GridSearchCV 
GBM_grid =gbm.sklearn.LGBMClassifier(num_leaves=30) param_grid = { 'learning_rate': [0.01, 0.1, 0.5], 'n_estimators': [30, 40] } 
gbm = GridSearchCV(GBM_grid, param_grid ) 
gbm.fit(x_train, y_train)
print(''The optimal parameters for grid search are:', gbm.best_params_)

在这里插入图片描述

GBM_best = gbm.sklearn.LGBMClassifier(num_leaves = 30,learning_rate = 0.1,n_estimators = 40)
GBM_best.fit(x_train,y_train)
GBM_predict = lgb_best.predict(x_val)
sklearn.metrics.f1_score(y_val,GBM_predict,average =“weighted” “)

在这里插入图片描述

模型融合

GBM_predict = lgb_best.predict_paoba(x_val)
lr_predict=lr.predict_paoba(x_val)
clf_predict=clf.predict_paoba(x_val)
sum_preidct = GBM_predict + lr_predict + clf_predict
sum = np.argmax(sum, axis=1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值