上篇了解了如今最火的框架之一xgboost,接下来看下另一款和它一样令人惊艳的框架lightgbm。
起源
LightGBM全称为Light Gradient Boosting Machine ,由微软开源,一个基于决策树,并且具有快速、分布式、高性能特点的梯度提升框架。它可被用于排行、分类以及其他许多机器学习任务中。同样的,为了方便使用,lightgbm也封装了相应的python库,来看看怎么获得它。
安装
安装lightgbm之前呢,需要先安装依赖包setuptools, wheel, numpy 和 scipy,直接用pip即可,-U则表示存在该包的话就更新
pip install setuptools wheel numpy scipy scikit-learn -U
依赖安装好之后就可以安装lightgbm了
pip install lightgbm
可在ide导入验证是否安装成功
import lightgbm as lgb
数据形式
LightGBM 能够使用以下几种方式来加载数据:
- 逗号分隔值(CSV)文件
- NumPy 2D阵列
- LightGBM 二进制文件
#加载 ligsvm 文本文件或 LightGBM 二进制文件到 Dataset 中: train_data = lgb.Dataset('train.svm.bin') #加载 numpy 数组到 Dataset 中: data = np.random.rand(500, 10) # 500 个样本, 每一个包含 10 个特征 label = np.random.randint(2, size=500) # 二元目标变量, 0 和 1 train_data = lgb.Dataset(data, label=label) #加载 scpiy.sparse.csr_matrix 数组到 Dataset 中: csr = scipy.sparse.csr_matrix((dat, (row, col))) train_data = lgb.Dataset(csr) #创建验证数据: test_data = train_data.create_valid('test.svm') #或者 test_data = lgb.Dataset('test.svm', reference=train_data) #指定 feature names(特征名称)和 categorical features(分类特征): train_data = lgb.Dataset(data, label=label, feature_name=['c1', 'c2', 'c3'], categorical_feature=['c3'])
tips:
- LightGBM 中, 验证数据应该与训练数据格式保持一致。
- LightGBM 可以直接使用分类特征作为输入. 它不需要被转换成独热编码, 并且它比独热编码更快(约快上 8 倍)。
参数设定
LightGBM 可以使用列表或字典来设置参数:
param = {'num_leaves':31, 'num_trees':100, 'objective':'binary'} param['metric'] = 'auc' param['metric'] = ['auc', 'binary_logloss']
训练只需传入param即可
训练
训练模型时, 需要参数列表和数据集:
num_round = 10 bst = lgb.train(param, train_data, num_round, valid_sets=[test_data])
param:各项参数,是一个字典
train_data:训练数据集
num_round:boosting迭代计算次数
valid_sets:验证集设置
test_data:验证数据集
预测
已经训练好的模型可以对数据集进行预测:
# 7 个样本, 每一个包含 10 个特征 data = np.random.rand(7, 10) ypred = bst.predict(data)
这样简单的lightgbm使用就完成啦~