机器学习(三):基于LightGBM的分类预测

本学习笔记为阿里云天池龙珠计划机器学习训练营的学习内容,学习链接为:AI训练营机器学习-阿里云天池

LightGBM介绍
LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,由2014年首届阿里巴巴大数据竞赛获胜者之一柯国霖老师带领开发。它是一款基于GBDT(梯度提升决策树)算法的分布式梯度提升框架,为了满足缩短模型计算时间的需求,LightGBM的设计思路主要集中在减小数据对内存与计算性能的使用,以及减少多机器并行计算时的通讯代价。

LightGBM可以看作是XGBoost的升级豪华版,在获得与XGBoost近似精度的同时,又提供了更快的训练速度与更少的内存消耗。

LightGBM的主要优点:
简单易用。提供了主流的Python\C++\R语言接口,用户可以轻松使用LightGBM建模并获得相当不错的效果。
高效可扩展。在处理大规模数据集时高效迅速、高准确度,对内存等硬件资源要求不高。
鲁棒性强。相较于深度学习模型不需要精细调参便能取得近似的效果。
LightGBM直接支持缺失值与类别特征,无需对数据额外进行特殊处理
LightGBM的主要缺点:
相对于深度学习模型无法对时空位置建模,不能很好地捕获图像、语音、文本等高维数据。
在拥有海量训练数据,并能找到合适的深度学习模型时,深度学习的精度可以遥遥领先LightGBM。
ps:

安装LightGBM,详见https://lightgbm.readthedocs.io/en/latest/Installation-Guide.html

这个网页介绍了使用lightgbm的两种形式:原生形式(import lightgbm as lgb)和Sklearn接口形式(from lightgbm import LGBMRegressor, LGBMClassifier)具体可查看https://www.cnblogs.com/chenxiangzhen/p/10894306.html

原生形式中可以使用lgb.cv做交叉验证选参数, 但要注意数据集必须使用lgb.Dataset函数加以转换

关于LightGBM参数
lightgbm参数很多,应仔细阅读https://lightgbm.readthedocs.io/en/latest/Parameters.html

关于调参,可以参考https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html

1、核心参数:task, objective, boosting, n_estimators, learning_rate, metric

2、与决策树相关的参数:num_leaves, max_depth, min_data_in_leaf, feature_fraction_bynode, min_gain_split

3、涉及加速与防止过拟合的参数:bagging_fraction, feature_fraction, lambda_l1, lambda_l2, max_bin, min_data_in_bin, bin_construct_sample_cnt(实际上,决策树中的参数max_depth, min_data_in_leaf,
feature_fraction_bynode也有防止过拟合的作用)

4、处理不平衡的参数:pos_bagging_fraction, neg_bagging_fraction, is_unbalance

5、GOSS相关参数(设置boosting=goss才会启用GOSS):top_rate, other_rate

6、EFB相关参数:enable_bundle, max_conflict_rate (实际上,这两个参数也可以实现加速)

ps1:网上也有很多调参攻略,例如我随便搜索看到的网页:

https://www.cnblogs.com/wzdLY/p/9867719.html
https://blog.csdn.net/u012513618/article/details/78441676
https://www.cnblogs.com/jiangxinyang/p/9337094.html
https://www.imooc.com/article/43784?block_id=tuijian_wz
ps2:不需要处理缺失值;不需要独热编码(但不能输入字符串)

算法实战
参考链接在此

基于英雄联盟数据集的LightGBM分类实战
数据集变量描述如下:


数据集导入
mport numpy as np 
import pandas as pd

import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv('./high_diamond_ranked_10min.csv')
y = df.blueWins
1
2
3
4
5
6
7
drop_cols = ['gameId','blueWins']#删除不必要的变量或预测变量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值