文章目录
- 1. 什么是LightGBM?
- 2. LightGBM与XGBoost的区别是什么?
- 3. 如何安装LightGBM?
- 技术交流
- 4. 如何使用LightGBM进行模型训练?
- 5. 如何使用LightGBM进行模型预测?
- 6. LightGBM如何处理缺失值?
- 7. LightGBM中如何设置类别特征?
- 8. LightGBM如何调参?
- 9. 如何使用LightGBM进行交叉验证?
- 10. LightGBM支持的损失函数有哪些?
1. 什么是LightGBM?
LightGBM(Light Gradient Boosting Machine)是一种梯度提升树(Gradient Boosting Decision Tree, GBDT)算法的高效实现。它由微软开发,主要应用于分类、回归和排序任务。
2. LightGBM与XGBoost的区别是什么?
LightGBM与XGBoost都是基于GBDT的高效实现,主要的区别在于:
-
LightGBM使用Histogram-based算法,减少内存使用和提高计算速度。
-
LightGBM采用带深度限制的Leaf-wise生长策略,而XGBoost采用Level-wise生长策略。Leaf-wise策略可以降低模型过拟合的风险,但可能导致不平衡的树结构。
-
LightGBM支持类别特征,无需单独进行独热编码。
3. 如何安装LightGBM?
使用pip安装:
pip install lightgbm
或者从源代码编译安装:
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
mkdir build
cd build
cmake ..
make -j$(nproc)
make install
技术交流
技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。
好的文章离不开粉丝的分享、推荐,资料干货、资料分享、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。
方式①、添加微信号:dkl88191,备注:来自CSDN + 机器学习
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:机器学习
4. 如何使用LightGBM进行模型训练?
首先,需要导入lightgbm
库并准备数据:
import lightgbm as lgb
import numpy as np
import pandas as pd# 加载数据
train_data = lgb.Dataset(X_train, label=y_train)
valid_data = lgb.Dataset(X_valid, label=y_valid, reference=train_data)
接下来,设置模型参数:
params = {'boosting_type': 'gbdt','objective': 'binary','metric': 'binary_logloss','num_leaves': 31,'learning_rate': 0.05,'feature_fraction': 0.9,'bagging_fraction': 0.8,'bagging_freq': 5,'verbose': 0
}
最后,训练模型:
gbm = lgb.train(params, train_data, num_boost_round=20, valid_sets=valid_data, early_stopping_rounds=5)
5. 如何使用LightGBM进行模型预测?
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
6. LightGBM如何处理缺失值?
LightGBM可以自动处理缺失值。在分裂节点时,LightGBM会将缺失值分到增益最大的一侧。
7. LightGBM中如何设置类别特征?
在创建数据集时,可以通过categorical_feature
参数设置类别特征:
train_data = lgb.Dataset(X_train, label=y_train, categorical_feature=['col1', 'col2'])
8. LightGBM如何调参?
主要的调参参数包括:
-
num_leaves
:叶子节点数量,决定了树的复杂度。 -
min_data_in_leaf
:叶子节点最小样本数,避免过拟合。 -
max_depth
:树的最大深度。 -
learning_rate
:学习率。 -
feature_fraction
:特征采样比例。 -
bagging_fraction
:样本采样比例。 -
bagging_freq
:进行Bagging的频率。 -
lambda_l1
和lambda_l2
:L1和L2正则化。
9. 如何使用LightGBM进行交叉验证?
使用lgb.cv()
函数进行交叉验证:
cv_results = lgb.cv(params, train_data, num_boost_round=100, nfold=5, stratified=False, shuffle=True, metrics='rmse', early_stopping_rounds=10, verbose_eval=50, show_stdv=True, seed=0)
10. LightGBM支持的损失函数有哪些?
主要损失函数包括:
-
回归任务 -
l2
: 均方误差(默认) -
l1
: 平均绝对误差 -
huber
: Huber损失 -
fair
: Fair损失 -
quantile
: 分位数回归损失 -
mape
: 平均绝对百分比误差 -
poisson
: 泊松回归损失 -
gamma
: Gamma回归损失 -
tweedie
: Tweedie回归损失 -
二分类任务
-
binary
: 二进制对数损失(默认) -
cross_entropy
: 交叉熵损失 -
多分类任务
-
multiclass
: 多类别对数损失(默认) -
multiclassova
: 多类别单一二分类器损失 -
排序任务
-
lambdarank
: LambdaMART排序损失