
3 步上手 LightGBM 时序预测从传感器数据到可用模型【免费下载链接】LightGBMA fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.项目地址: https://gitcode.com/GitHub_Trending/li/LightGBMLightGBM 是微软开源的梯度提升框架这篇就用它做一次完整的 LightGBM 时序预测。场景很具体工厂里有温度、压力、湿度三路传感器曲线你想拿历史数据预测下个月的设备温度可树模型根本不认识时间直接喂进去只会得到一堆乱数。读完这篇你能跑通一个最小示例并看懂滞后特征为什么必须按只能看过去的方式构造。⚡ 快速上手先跑出第一个预测不用造数据仓库里自带一份回归样例四步就能出结果安装pip install lightgbm打开数据examples/regression/regression.train 是制表符分隔文件第一列是标签其余是特征包成 Dataset 并训练见下方代码落盘复用model.save_model(model.txt)保存lgb.Booster(model_filemodel.txt)加载后随时predictimport lightgbm as lgb import pandas as pd df pd.read_csv(examples/regression/regression.train, sep\t, headerNone) X, y df.iloc[:, 1:], df.iloc[:, 0] model lgb.train({objective: regression, metric: l2}, lgb.Dataset(X, y)) print(model.predict(X.iloc[:3]))到这一步模型已经能用了。想控制什么时候停就加一个验证集并传入callbacks[lgb.early_stopping(20)]——验证指标连续 20 轮不改善就自动收工这个回调的实现在 python-package/lightgbm/callback.py参数含义都写在文档字符串里。想一次看全所有可调参数examples/regression/train.conf 是最直观的清单每个参数旁边都有注释。 关键概念通俗讲梯度提升多位审稿人逐轮挑错把整个模型想象成一位审稿人每一轮新加的那棵树只负责改前面写错的地方——准确说是拟合上一轮预测和真实值之间的残差。learning_rate小一点就是让每位审稿人只许改一点点改得慢但更稳。leaf-wise 生长优先扩展最赚钱的那根枝普通 GBDT 一层一层把树撑满LightGBM 则每次找到再分一刀收益最大的那个叶子去扩展相当于先经营最赚钱的分支。同样叶子数下它往往能用更少的节点达到相同拟合效果num_leaves就是控制每棵树最多长多少根枝的总闸门。直方图加速先分桶再记账连续特征值先被切成max_bin个桶损失统计按桶聚合训练时不必逐条扫原始数值。好比仓库记账先按货架分类而不是每来一件商品都从头点数一遍这也是官方文档中 GPU 训练能明显跑赢 CPU 的原因之一 一个真实场景走一遍多变量时序特征工程用温度、压力、湿度三列曲线预测下一时刻温度拆成四步第一步整理原始数据每行一个时间点三列传感器读数加上一列时间戳。注意先按时间排序时间序列的下一行就是未来这件事全靠顺序保证。第二步如何生成滞后特征与时间特征树模型看不懂3 月 5 日 14 点得把时间翻译成它认识的数字特征类型作用生成方式时间特征表达周期性小时、星期几df[hour] df[time].dt.hour滞后特征引入近期历史df[lag_1] df[temp].shift(1)窗口统计量抹平短期波动df[roll_7] df[temp].rolling(7).mean()df sensor.sort_values(time).copy() df[hour] df[time].dt.hour df[lag_1] df[temp].shift(1) df[lag_7] df[temp].shift(7) df[roll_7] df[temp].rolling(7).mean() df df.dropna()dropna()别省shift 和 rolling 会让前几行变成空值留着会污染训练。第三步训练用lgb.Dataset包住特征和目标列验证集用最后一段时间切出来的数据配上early_stopping防止多训。第四步验证只看验证集上l2平方误差随轮数的走势如果它先降后升说明模型开始背答案了以最低点为准即可。 避坑指南问题原因解决离线精度很高上线就崩滞后特征用了shift(-1)偷看了未来只用正数 shift只允许引用过去验证集也泄密时间序列被随机打散切分按时间顺序切前面训练、后面验证训练曲线一路下降不停没设验证集和早停树一直在背数据加callbacks[lgb.early_stopping(20)]特征少时照样过拟合每个叶子数据太少调大min_data_in_leaftrain.conf 里默认 100换了新设备预测明显变差训练数据的时间分布和线上差太远定期用新数据重训而不是只训一次 下一步去哪儿examples/python-guide/advanced_example.py一个带回调、早停、多验证集的完整可运行示例适合照着改自己的场景docs/Parameters-Tuning.rst官方参数调优手册查这个参数该怎么设直接来这里docs/Python-API.rstDataset、Booster、predict 的完整接口文档缺参数细节时逐条对照从三列传感器曲线到一个能保存、能加载、能预测的模型中间真正需要你自己写的其实只有特征构造那十几行。【免费下载链接】LightGBMA fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.项目地址: https://gitcode.com/GitHub_Trending/li/LightGBM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考