一、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以快速、高效、准确著称,近年来在处理海量数据方面表现突出,预期将在未来得到广泛应用。