微软开源分布式高性能GB框架LightGBM安装使用

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

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

开源|LightGBM:三天内收获GitHub 1000+ Star,表现超越已有boosting工具。

LightGBM

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

安装指南

我的环境:Windows 7 64位,VS2015

克隆代码:打开cmd,切换到目标目录,执行:git clone --recursive https://github.com/Microsoft/LightGBM

打开文件夹,双击打开项目文件:


会提示更新c++编辑器和库,点击“OK”按钮;


编译Exe文件:

编译选项选择Release和x64,然后按下“Ctrl+Shift+B”开始编译。


编译Dll文件:打开项目菜单》属性, 如下图:

先在左侧列表中选择“Configuration Properties(配置属性)”》“General(常规)”,

上面配置项选择“DLL”,“x64”,然后“Configuration Type”选择“Dynamic Library(.dll)”,

然后按下“Ctrl+Shift+B”开始编译。


编译成功会在对应目录下生成文件:



测试示例

这里只演示一下使用:lightgbm.exe

将编译好的“lightgbm.exe”复制到示例目录下,如下图:


打开cmd切换到此目录,执行:lightgbm.exe config=train.conf,执行完成会输出结果到“LightGBM_model.txt”文件;

部分内容如下:

gbdt
num_class=1
label_index=0
max_feature_idx=27
objective=regression
sigmoid=-1
feature_names=Column_0 Column_1 Column_2 Column_3 Column_4 Column_5 Column_6 Column_7 Column_8 Column_9 Column_10 Column_11 Column_12 Column_13 Column_14 Column_15 Column_16 Column_17 Column_18 Column_19 Column_20 Column_21 Column_22 Column_23 Column_24 Column_25 Column_26 Column_27

Tree=0
num_leaves=31
split_feature=25 25 26 27 25 5 26 27 22 24 22 27 9 5 5 13 27 0 25 22 27 25 25 5 24 21 9 25 22 21
split_gain=65.198013848544861 45.179995152712536 30.347240885969995 26.081035085622261 11.600168338441563 10.657307966796793 10.544095742084323 9.1446947209126392 6.7573456045035982 14.376367511926105 6.6023242999499701 6.5504187016683062 6.0135133133566399 5.9944091901838306 3.7912550796095275 3.4884765273278759 3.4765456650701907 3.4436711307954582 3.3321858864027547 3.2541750349459306 3.027509867069341 2.7035684528927959 2.5714216710597384 2.4838189319769981 2.418657234051885 2.3402047437905509 2.2854770258980821 2.2121276140393746 2.6399203888605172 2.0424163570685323
threshold=1.0895000000000001 0.59250000000000003 0.77449999999999997 0.90450000000000008 1.5645 0.85650000000000004 0.87150000000000016 0.79649999999999999 1.0605 1.0434999999999999 1.0105 1.0834999999999999 1.0365 0.98049999999999993 1.1225000000000001 0.93850000000000011 0.84050000000000002 1.0265 0.90349999999999997 0.78649999999999998 1.0105 0.73750000000000004 0.98449999999999993 1.2184999999999999 0.71649999999999991 0.99950000000000006 0.9265000000000001 2.2425000000000002 1.0445 0.95150000000000001
执行: lightgbm.exe config=predict.conf,执行完成会输出结果到“ LightGBM_predict_result.txt ”文件;

部分内容如下:

0.7270434307654845
0.46481559465577338
0.13266028702873467
0.50487794434589472
0.23159372452464369
0.14244406024081727
0.26753302245762478
0.35356472040291248
0.76014048033470971
0.44857788065386428
0.54179640036809495
0.7420258615039983
0.79585985850784491
0.75890569104497763
0.39159044991046305

小结

本人这方面是小白一个,什么都不懂,只能演示这么多了!

更多请参考:开源项目地址: https://github.com/Microsoft/LightGBM

下一篇:微软开源分布式高性能GB框架LightGBM安装使用——Python

2017-04-12更新

有小伙伴评论“打开cmd切换到此目录,执行:lightgbm.exe config=train.conf会显示lightgbm.exe不是内部或外部命令也不是可运行的程序或批处理文件”;

注意:我的示例目录是:D:\LightGBM\LightGBM\examples\regression,我是将编译好的“lightgbm.exe”复制到了这个目录下,而且打开CMD后你需要通过“cd”命令切换到示例目录,不然就会遇到他的问题,如下图:


======================文档信息======================

版权声明:非商用自由转载-保持署名-注明出处

署名(BY) :testcs_dn(微wx笑)

文章出处:[无知人生,记录点滴](http://blog.csdn.net/testcs_dn)

目录
相关文章
|
3天前
|
存储 Java 分布式数据库
【分布式计算框架】HBase数据库编程实践
【分布式计算框架】HBase数据库编程实践
12 1
|
3天前
|
分布式计算 并行计算 Java
【分布式计算框架】 MapReduce编程初级实践
【分布式计算框架】 MapReduce编程初级实践
9 2
|
3天前
|
分布式计算 数据可视化 Hadoop
【分布式计算框架】HDFS常用操作及编程实践
【分布式计算框架】HDFS常用操作及编程实践
6 1
|
3天前
|
分布式计算 Ubuntu Hadoop
【分布式计算框架】hadoop全分布式及高可用搭建
【分布式计算框架】hadoop全分布式及高可用搭建
9 1
|
3天前
|
NoSQL Java 关系型数据库
【Redis系列笔记】分布式锁
分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路
130 2
|
3天前
|
NoSQL Java Redis
redis分布式锁
redis分布式锁
|
3天前
|
存储 监控 NoSQL
【Redis】分布式锁及其他常见问题
【Redis】分布式锁及其他常见问题
16 0
|
3天前
|
NoSQL Java Redis
【Redis】Redis实现分布式锁
【Redis】Redis实现分布式锁
7 0
|
3天前
|
监控 NoSQL 算法
探秘Redis分布式锁:实战与注意事项
本文介绍了Redis分区容错中的分布式锁概念,包括利用Watch实现乐观锁和使用setnx防止库存超卖。乐观锁通过Watch命令监控键值变化,在事务中执行修改,若键值被改变则事务失败。Java代码示例展示了具体实现。setnx命令用于库存操作,确保无超卖,通过设置锁并检查库存来更新。文章还讨论了分布式锁存在的问题,如客户端阻塞、时钟漂移和单点故障,并提出了RedLock算法来提高可靠性。Redisson作为生产环境的分布式锁实现,提供了可重入锁、读写锁等高级功能。最后,文章对比了Redis、Zookeeper和etcd的分布式锁特性。
134 16
探秘Redis分布式锁:实战与注意事项
|
3天前
|
NoSQL Java 大数据
介绍redis分布式锁
分布式锁是解决多进程在分布式环境中争夺资源的问题,与本地锁相似但适用于不同进程。以Redis为例,通过`setIfAbsent`实现占锁,加锁同时设置过期时间避免死锁。然而,获取锁与设置过期时间非原子性可能导致并发问题,解决方案是使用`setIfAbsent`的超时参数。此外,释放锁前需验证归属,防止误删他人锁,可借助Lua脚本确保原子性。实际应用中还有锁续期、重试机制等复杂问题,现成解决方案如RedisLockRegistry和Redisson。