LightGBM回归
LightGBM是一个用于梯度提升决策树的框架。它使用直方图算法来加速训练和应用程序。 LightGBM作为一款高性能机器学习框架,被广泛应用于分类、回归等任务中,并在许多任务中均表现出较为优异的效果。 其回归算法特点: 比较适合于对数据预测建模,能更好的发挥树模型在寻找最优补偿点上的优势,并通过Leaf Wise生长策略加速提高了模型训练的速度,可以同时处理连续型和离散型特征。
LightGBM算法
LightGBM主要包含以下几个方面:
2.1 分裂算法:基于直方图的决策树算法
运用单边采样技术,可以通过不断分裂,加速得到较为精简的决策树;在对于连续属性节点分裂时,可以将其离散化后扫描离散化后的每个切分点,从而挑选离散化后较优切分点。同样,在对于分类属性节点分裂时,也可以将其转化为二分类问题。
2.2 直方图算法:离散化处理数据
直方图算法将数据按照分位数进行离散化,然后以离散后的数据为基础去构建决策树,通过这种方式有效地降低了算法的复杂度。对于数据量较大的海量数据集,LightGBM能在较短的时间内构建出较为精准的模型,同时可以处理有噪声、不平衡数据等情况。
2.3 Leaf Wise生长策略:优化模型训练速度
Leaf Wise生长策略与传统的Depth Wise生长策略相比,是一种更为高效的生长策略,这种策略可以使得决策树在保证准确性的前提下,减少了非叶子节点数量。相应地,降低了存储空间和预测时间,加速了模型训练速度。
LightGBM回归模型
下面是一个简单的LightGBM回归模型的例子:
import lightgbm as lgb
import numpy as np
import pandas as pd
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
# 加载数据
print('Loading data...')
df_train = pd.read_csv('train.csv')
df_test = pd.read_csv('test.csv')
# 处理标签
y_train = df_train['label']
df_train.drop(['label'], axis=1, inplace=True)
y_test = df_test['label']
df_test.drop(['label'], axis=1, inplace=True)
# 划分数据集
X_train, X_val, y_train, y_val = train_test_split(df_train.values, y_train.values, test_size=0.1, random_state=42)
# 构建LightGBM模型
print('Training/Fitting ...')
params = {
'task': 'train',
'boosting_type': 'gbdt',
'objective': 'regression',
'metric': {'mse'},
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.9,
'bagging_fraction': 0.8,
'bagging_freq': 5,
'verbose': 0
}
lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_val, y_val, reference=lgb_train)
gbm = lgb.train(params,
lgb_train,
num_boost_round=100,
valid_sets=lgb_eval,
early_stopping_rounds=5)
# 预测测试集并输出RMSE
print('Predicting ...')
y_pred = gbm.predict(df_test.values, num_iteration=gbm.best_iteration)
mse = mean_squared_error(y_test, y_pred)
print("MSE: %.4f" % mse)
LightGBM特征重要度
LightGBM用的是直方图,它不会用到所有的特征,而是根据特征的重要度选择部分特征。 其特征重要度选取特征主要是通过在决策树的生长过程中,对于划分的属性,计算其对于决策结果的贡献。计算后可以通过直方图统计得到,因此LightGBM的特征重要度是一个通过统计的平均重要度得到的,反应了特征对于模型的贡献程度。
# 输出特征重要度
print('Feature importances:', list(gbm.feature_importance()))
小结
本文阐述了LightGBM回归技术,介绍了LightGBM回归的特点和算法,同时简单介绍了LightGBM回归模型和特征重要度的计算方式。总之,LightGBM以快速、高效、准确著称,近年来在处理海量数据方面表现突出,预期将在未来得到广泛应用。