首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【 SPA 大赛】win10 python3.5.X 下开启 lightgbm 支持

【 SPA 大赛】win10 python3.5.X 下开启 lightgbm 支持

原创
作者头像
祁旭翔
修改2017-06-23 15:31:28
4.5K0
修改2017-06-23 15:31:28
举报
文章被收录于专栏:祁旭翔的专栏祁旭翔的专栏

在数据分析的过程中,我们经常需要对数据建模并做预测。GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。GBDT在工业界应用广泛,通常被用于点击率预测,搜索排序等任务。GBDT也是各种数据挖掘竞赛的致命武器,据统计Kaggle上的比赛有一半以上的冠军方案都是基于GBDT。

GBDT属于集成学习模型,它基本思想是把成百上千个分类准确率较低的树模型组合起来,成为一个准确率很高的模型。这个模型会不断地迭代,每次迭代就生成一颗新的树。然而Boosting分类器的速度实在是太慢了。为了解决这一问题,xgboost应运而生:xgboost最大的特点在于,它能够自动利用CPU的多线程并行计算,同时在算法上加以改进提高了精度。xgboost因为计算速度快,精确度高,在Kaggle和天池等数据挖掘竞赛中的逐渐成为大杀器。但是去年,xgboost迎来了一个重量级挑战者:lightGBM。

lightgbm

去年(2016年)12月,微软开源了LightGBM,地址:https://github.com/Microsoft/LightGBM 。该项目刚开源就被受到热捧:三天之内GitHub上被star了1000+次,fork了200+次;知乎上有近千人关注“如何看待微软开源的LightGBM?”。接下来简单介绍下这个号称“性能超越其他boosting”的学习模型及其编译和安装方法,以及开启python的lightgbm支持。

LightGBM全称:Light Gradient Boosting Machine,是一个基于决策树算法的快速的、分布式的、高性能 gradient boosting(GBDT、GBRT、GBM 或 MART)框架,可被用于排行、分类以及其他许多机器学习任务中。

LightGBM 是一个梯度 boosting 框架,使用基于学习算法的决策树。它是分布式的,具有以下优势:

更快的训练效率 低内存使用 更好的准确率 支持并行学习 可处理大规模数据

在实际使用的过程中,给我一个最直接的感觉就是LightGBM的速度比xgboost快很多,下图是微软官网给出lightgbm和其他学习模型之间的比较:

速度比较
速度比较

原理简介

现有的GBDT工具基本都是基于预排序的方法(pre-sorted)的决策树算法(如 xgboost),GBDT 虽然是个强力的模型,但却有着一个致命的缺陷,不能用类似 mini batch 的方式来训练,需要对数据进行无数次的遍历。如果想要速度,就需要把数据都预加载在内存中,但这样数据就会受限于内存的大小;如果想要训练更多的数据,就要使用外存版本的决策树算法。虽然外存算法也有较多优化,SSD 也在普及,但在频繁的 IO 下,速度仍然比较慢。

level-wise
level-wise

LightGBM (Light Gradient Boosting Machine)是一个实现GBDT算法的框架,在Histogram算法之上,LightGBM进行进一步的优化。首先它抛弃了大多数GBDT工具使用的按层生长 (level-wise) 的决策树生长策略,而使用了带有深度限制的按叶子生长 (leaf-wise) 算法。

leaf-wise
leaf-wise

除此之外,LightGBM还对类别特征的支持进行了优化,可以直接输入类别特征,不需要额外的0/1展开,并在决策树算法上增加了类别特征的决策规则。LightGBM的单机版本还有很多其他细节上的优化,比如cache访问优化,多线程优化,稀疏特征优化等,这就让参赛者省去了调参和处理的麻烦。

lightgbm安装教程:

准备:Anaconda 和VS2015。 本教程假设你已经安装好python3.5.x和visual studio2015,然后克隆仓库到本地:

git clone  https://github.com/Microsoft/LightGBM.git

然后根据http://blog.csdn.net/testcs_dn/article/details/54176824 教程编译dll文件和exe文件。注意配置选项一定选好,只有按照教程生成正确的dll和exe文件,才能成功安装lightgbm python包。

然后进入到python-package目录,笔者的目录是:

D:\lightgbm\lightgbm\python-package
python-package
python-package

然后打开cmd窗口,直接执行命令:

python setup.py install

此时在cmd 输入python,然后import lightgbm as lgb,如果不报错,证明安装成功!

配置成功
配置成功

现在最新的lightgbm python包已经更新到了0.2版本,支持sklearn的自动寻优调参,大家可以试下:

import lightgbm as lgb
import pandas as pd
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import GridSearchCV

estimator = lgb.LGBMRegressor(objective='regression',colsample_bytree=0.8,subsample=0.9,subsample_freq=5)

param_grid={
    'learning_rate':[0.01,0.02,0.05,0.1],
    'n_estimators' :[1000,2000,3000,4000,5000],
    'num_leaves':[128,1024,4096]
}

fit_param={'categorical_feature':[0,1,2,3,4,5]}
gbm = GridSearchCV(estimator,param_grid,fit_params=fit_param,n_jobs=5,refit=True)
gbm.fit(X_lgb,y_lgb)

print('.....................................cv results.......................')
print(gbm.cv_results_)

更多教程见:https://github.com/Microsoft/LightGBM/blob/master/examples/python-guide/sklearn_example.py

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • lightgbm
  • 原理简介
  • lightgbm安装教程:
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档