lightgbm过去版本安装包_Lightgbm安装与介绍

简介

lightgbm是树模型中模型能力最优异的模型之一,作为boosting系的树模型,其运行速度出奇的快,吸收分箱(直方图)的理念大量减少了内存以及计算分叉的时间,最优点分叉而非所有点分叉让其预测结果也出奇的好。

并且lightgbm支持客制化其objective function以及evaluation function,让模型更贴合数据。lightgbm也支持spark的分布式运算。

虽然lightgbm的开源python版本bug很多,但不失为一个十分好用的模型,很适合作为一个baseline快速的得到结果。如果想要详细的了解lightgbm,请移步lightgbm官网或其他网上优秀的教学博客。

本文只会介绍安装lightgbm的坑,以及一个简单例子方便初学的同学使用。

安装

lightgbm在window上的安装很简单,直接使用python自带的pip安装工具安装即可。

在mac上安装会比较困难,用pip安装会遇到错误

1

2

3OSError: dlopen(/Users/{xxx}/anaconda3/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so, 6): Library not loaded: /usr/local/opt/gcc/lib/gcc/7/libgomp.1.dylib

Referenced from: /Users/{xxx}/anaconda3/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so

Reason: image not found

因此我们可以按照以下步骤安装。

安装homebrew

1$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装gcc-8

1$ brew install gcc@8

安装c版本lightgbm

1

2

3

4

5

6

7

8

9$ brew install cmake

pip uninstall lightgbm

git clone --recursive https://github.com/Microsoft/LightGBM ; cd LightGBM

export CXX=g++-8 CC=gcc-8

mkdir build ; cd build

cmake ..

make -j4

pip install --no-binary :all: lightgbm

##

实例

推荐看官方文档了解各个参数。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25import lightgbm as lgb

from sklearn.model_selection import train_test_split

from sklearn.model_selection import GridSearchCV

split_train_x,split_test_x,split_train_y,split_test_y = train_test_split(train_x,train_y,test_size=0.2)

# 直接fit

# gbm = lgb.LGBMRegressor(objective='regression',num_leaves=31,learning_rate=0.05,n_estimators=20)

# gbm.fit(split_train_x, split_train_y, eval_set=[(split_test_x, split_test_y)],eval_metric='l2',early_stopping_rounds=100)

# cv

estimator = lgb.LGBMRegressor()

param_grid = {

'learning_rate': [0.01, 0.1, 1],

'n_estimators': [20, 40],

'max_depth': [5, 6, 8, 10, 15],

'num_leaves': [20, 25, 30, 50]

}

gbm = GridSearchCV(estimator, param_grid, cv=5, verbose=1, n_jobs=-1)

gbm.fit(train_x, train_y)

print('Best parameters found by grid search are:', gbm.best_params_)

y_pred = gbm.predict(test_x, num_iteration=gbm.best_iteration_)

其他功能

画图feature_importance1

2

3

4import matplotlib.pyplot as plt

ax = lgb.plot_importance(gbm, max_num_features=20)

plt.show()

客制化objective function和eval function

objective function需要返回梯度和Hessian矩阵。

1

2

3

4

5

6

7

8def get_custom_obj_func(negative_error_weight):

def custom_obj(y_true, y_pred):

residual = (y_true - y_pred).astype("float")

grad = np.where(residual < 0, -2.0 * residual, -2.0 * negative_error_weight * residual)

hess = np.where(residual < 0, 2.0, 2.0 * negative_error_weight)

return grad, hess

return custom_obj

evaluation function需要返回function name,评估值,以及越高越好(True)还是越低越好(False)。

1

2

3

4

5

6

7def get_custom_eval_func(negative_error_weight):

def custom_eval(y_true, y_pred):

residual = (y_true - y_pred).astype("float")

loss = np.where(residual < 0, (residual ** 2), (residual ** 2) * negative_error_weight)

return "custom_eval", np.mean(loss), False

return custom_eval

这样就可以写到lightgbm中使用了

1

2lgb = LGBMRegressor(objective=get_custom_obj_func(0.5))

lgb.fit(eval_metric=get_custom_eval_func(0.5))


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部