目录
前言
一、Lightgbm是什么?
二、Lightgbm的优点和缺点
1. 优点:
2. 缺点:
三、Lightgbm的应用场景
四、构建Lightgbm模型的注意事项
五、Lightgbm模型的实现类库
六、Lightgbm模型的评价指标
1. 回归任务的评价指标:
2. 二分类任务的评价指标:
3. 多分类任务的评价指标:
七、类库scikit-learn实现Lightgbm的例子
1. 回归任务
2. 二分类任务
3. 多分类任务
总结
Lightgbm是机器学习中有监督学习的可以解决回归和分类任务的一种算法。
LightGBM是一种高效的梯度提升决策树算法,由微软亚洲研究院开发。它采用了基于直方图的决策树算法和带深度限制的叶子生长策略,从而在训练过程中降低了内存消耗和计算复杂度。相比于传统的梯度提升决策树算法,LightGBM具有更快的训练速度和更好的准确性,并且支持并行训练和多分类任务。在机器学习领域中,LightGBM已经成为了一个非常流行的算法。
LightGBM 和 XGBoost 一样是对 GBDT 的优化和高效实现,原理有一些相似之处,但它很多方面比 XGBoost 有着更为优秀的表现。官方给出的这个工具库模型的优势如下:
适用于许多应用场景,包括但不限于以下几个方面:
LightGBM可以使用多种编程语言和机器学习类库进行实现,以下是一些常用的类库和方法:
这些类库都提供了LightGBM的API接口,可以方便地进行模型训练、参数调节、预测等操作。此外,LightGBM还提供了命令行工具和RESTful API,可以方便地进行模型部署和服务化。
其中,Python的三个常用类库:
LightGBM模型可以解决回归和分类任务,其对应的评价指标包括:
总之,LightGBM模型的评价指标根据不同任务类型有所不同,用户可以根据自己的需求选择合适的评价指标进行模型评估和选择。
下面是几个使用Python中Lightgbm库建模的示例:
import Lightgbm as lgb
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 加载数据集
boston = load_boston()
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2, random_state=42)
# 创建LightGBM数据集
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test)
# 设置模型参数
params = {
'boosting_type': 'gbdt',
'objective': 'regression',
'metric': 'rmse',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.9,
}
# 训练模型
model = lgb.train(params, train_data, num_boost_round=1000, valid_sets=[test_data], early_stopping_rounds=100)
# 预测结果
y_pred = model.predict(X_test)
# 计算均方根误差
mse = mean_squared_error(y_test, y_pred)
rmse = mse ** 0.5
print('RMSE:', rmse)
import Lightgbm as lgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据集
cancer = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.2, random_state=42)
# 创建LightGBM数据集
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test)
# 设置模型参数
params = {
'boosting_type': 'gbdt',
'objective': 'binary',
'metric': 'binary_logloss',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.9,
}
# 训练模型
model = lgb.train(params, train_data, num_boost_round=1000, valid_sets=[test_data], early_stopping_rounds=100)
# 预测结果
y_pred = model.predict(X_test)
y_pred_binary = [1 if i >= 0.5 else 0 for i in y_pred]
# 计算准确率
acc = accuracy_score(y_test, y_pred_binary)
print('Accuracy:', acc)
import Lightgbm as lgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
# 创建LightGBM数据集
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test)
# 设置模型参数
params = {
'boosting_type': 'gbdt',
'objective': 'multiclass',
'metric': 'multi_logloss',
'num_class': 3,
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.9,
}
# 训练模型
model = lgb.train(params, train_data, num_boost_round=1000, valid_sets=[test_data], early_stopping_rounds=100)
# 预测结果
y_pred = model.predict(X_test)
y_pred_class = [list(i).index(max(i)) for i in y_pred]
# 计算准确率
acc = accuracy_score(y_test, y_pred_class)
print('Accuracy:', acc)
本文简单介绍了Lightgbm的基本概念,优缺点,建模过程中的注意事项,常用的类库,以及建模的代码示例等。