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