Short-Term Energy Generation Forecasts at a Wind Farm—A Multi-Variant Comparison of the Effectiveness and Performance of Various Gradient-Boosted Decision Tree Models
Abstract
:1. Introduction
1.1. Evolution of Gradient-Boosted Decision Tree Models
1.2. Review of Applications of Gradient-Boosted Decision Trees in Wind Energy Generation Forecasting
1.3. Review of Studies Comparing the Effectiveness and Efficiency of Gradient-Boosted Decision Trees
2. Data and Forecasting Methods
2.1. Data
2.1.1. Preprocessing of Data
2.1.2. Statistical Analysis of Data and Development of Input Data Including Feature Engineering
2.1.3. Dataset Division
2.2. Gradient-Boosted Decision Tree Forecasting Methods
3. Results and Discussion
- -
- nMAE (Normalized Mean Absolute Error):
- -
- nRMSE (Normalized Root Mean Square Error):
- -
- nMBE (Normalized Mean Bias Error):
4. Conclusions
- If there is a need to obtain a good forecasting model in a short time, you should use the XGBoost model (on default hyperparameters) trained on the full range of explanatory variables. Using a reduced range of explanatory variables allows you to additionally reduce the training time without significantly affecting the quality.
- If there is a need obtain a forecasting model in the shortest possible time, you should use the LightGBM model.
- If the most important element of the solution is to obtain the best possible quality of forecasts and the training time is not important, you should use the GBDT model with hyperparameter optimization.
Author Contributions
Funding
Data Availability Statement
Conflicts of Interest
Abbreviations
ACF | Autocorrelation function |
ANN | Artificial Neural Network |
BP | Backpropagation |
BGRU | Bidirectional Gated Recurrent Unit |
CatBoost | Categorical Boosting |
CNN | Convolutional Neural Network |
GBDT | Gradient-Boosting Decision Tree |
GBM | Gradient-Boosting Machine |
L1 | Lasso Regularization |
L2 | Ridge Regularization |
LightGBM | Light Gradient Boosting Machine |
LSTM | Long-Short-Term Memory |
MART | Multiple Additive Regression Trees |
ML | Machine Learning |
nMAE | Normalized Mean Absolute Error |
nMBE | Normalized Mean Bias Error |
nRMSE | Normalized Root Mean Squared Error |
NWP | Numerical Weather Prediction |
PCHIP | Piecewise Cubic Hermite Interpolating Polynomial |
R | Pearson Linear Correlation Coefficient |
RES | Renewable Energy Sources |
RF | Random Forest |
SVM | Support Vector Machine |
XGBoost | eXtreme Gradient Boosting |
References
- Piotrowski, P.; Rutyna, I.; Baczyński, D.; Kopyt, M. Evaluation Metrics for Wind Power Forecasts: A Comprehensive Review and Statistical Analysis of Errors. Energies 2022, 15, 9657. [Google Scholar] [CrossRef]
- Zheng, Y.; Guan, S.; Guo, K.; Zhao, Y.; Ye, L. Technical Indicator Enhanced Ultra-short-term Wind Power Forecasting Based on Long Short-term Memory Network Combined XGBoost Algorithm. IET Renew. Power Gen 2024, rpg2.12952. [Google Scholar] [CrossRef]
- Singh, U.; Rizwan, M. SCADA System Dataset Exploration and Machine Learning Based Forecast for Wind Turbines. Results Eng. 2022, 16, 100640. [Google Scholar] [CrossRef]
- Miele, E.S.; Ludwig, N.; Corsini, A. Multi-Horizon Wind Power Forecasting Using Multi-Modal Spatio-Temporal Neural Networks. Energies 2023, 16, 3522. [Google Scholar] [CrossRef]
- Gao, Q. Multi-Temporal Scale Wind Power Forecasting Based on Lasso-CNN-LSTM-LightGBM. EAI Endorsed Trans. Energy Web 2024, 11. [Google Scholar] [CrossRef]
- Friedman, J.H. Greedy Function Approximation: A Gradient Boosting Machine. Ann. Stat. 2001, 29, 1189–1232. [Google Scholar] [CrossRef]
- Hastie, T.; Tibshirani, R.; Friedman, J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction; Springer: Berlin/Heidelberg, Germany, 2001. [Google Scholar]
- Tianqi, C.; Guestrin, C. XGBoost: A Scalable Tree Boosting System. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD), San Francisko, CA, USA, 13–17 August 2016. [Google Scholar]
- eXtreme Gradient Boosting. Available online: https://github.com/dmlc/xgboost (accessed on 11 August 2024).
- Ke, G.; Meng, Q.; Finley, T.; Wang, T.; Chen, W.; Ma, W.; Ye, Q.; Liu, T.-Y. LightGBM: A Highly Efficient Gradient Boosting Decision Tree. In Proceedings of the 31st Conference on Neural Information Processing Systems (NIPS), Long Beach, CA, USA, 4–9 December 2017; pp. 3149–3157. [Google Scholar]
- Light Gradient Boosting Machine. Available online: https://github.com/Microsoft/LightGBM (accessed on 11 August 2024).
- Prokhorenkova, L.; Gusev, G.; Vorobev, A.; Dorogush, A.V.; Gulin, A. CatBoost: Unbiased Boosting with Categorical Features. In Proceedings of the 32nd International Conference on Neural Information Processing Systems (NIPS), Montreal, QC, Canada, 2–8 December 2018; pp. 6638–6648. [Google Scholar]
- Yandex Catboost. Available online: https://github.com/catboost/catboost (accessed on 12 August 2024).
- Zheng, H.; Wu, Y. A XGBoost Model with Weather Similarity Analysis and Feature Engineering for Short-Term Wind Power Forecasting. Appl. Sci. 2019, 9, 3019. [Google Scholar] [CrossRef]
- Jiading, J.; Feng, W.; Rui, T.; Lingling, Z.; Xin, X. TS_XGB:Ultra-Short-Term Wind Power Forecasting Method Based on Fusion of Time-Spatial Data and XGBoost Algorithm. Procedia Comput. Sci. 2022, 199, 1103–1111. [Google Scholar] [CrossRef]
- Zha, W.; Liu, J.; Li, Y.; Liang, Y. Ultra-Short-Term Power Forecast Method for the Wind Farm Based on Feature Selection and Temporal Convolution Network. ISA Trans. 2022, 129, 405–414. [Google Scholar] [CrossRef]
- Keerthisinghe, C.; Silva, A.R.; Tardáguila, P.; Horváth, G.; Deng, A.; Theis, T.N. Improved Short-Term Wind Power Forecasts: Low-Latency Feedback Error Correction Using Ramp Prediction and Data From Nearby Farms. IEEE Access 2023, 11, 128697–128705. [Google Scholar] [CrossRef]
- Wu, Y.-K.; Huang, C.-L.; Wu, S.-H.; Hong, J.-S.; Chang, H.-L. Deterministic and Probabilistic Wind Power Forecasts by Considering Various Atmospheric Models and Feature Engineering Approaches. IEEE Trans. Ind. Applicat. 2023, 59, 192–206. [Google Scholar] [CrossRef]
- Ponkumar, G.; Jayaprakash, S.; Kanagarathinam, K. Advanced Machine Learning Techniques for Accurate Very-Short-Term Wind Power Forecasting in Wind Energy Systems Using Historical Data Analysis. Energies 2023, 16, 5459. [Google Scholar] [CrossRef]
- Ayele, S.T.; Ageze, M.B.; Zeleke, M.A.; Miliket, T.A. Adama II Wind Farm Long-Term Power Generation Forecasting Based on Machine Learning Models. Sci. Afr. 2023, 21, e01831. [Google Scholar] [CrossRef]
- Wang, J.; Niu, W.; Yang, Y. Wind Turbine Output Power Prediction by a Segmented Multivariate Polynomial-XGBoost Model. Energy Sources Part A Recovery Util. Environ. Eff. 2024, 46, 505–521. [Google Scholar] [CrossRef]
- Zhou, Y.; Ma, L.; Ni, W.; Yu, C. Data Enrichment as a Method of Data Preprocessing to Enhance Short-Term Wind Power Fore-casting. Energies 2023, 16, 2094. [Google Scholar] [CrossRef]
- Fan, L.; Wang, Y.; Fang, X.; Jiang, J. To Predict the Power Generation Based on Machine Learning Method. J. Phys. Conf. Ser. 2022, 2310, 012084. [Google Scholar] [CrossRef]
- Li, Y.; Tang, F.; Gao, X.; Zhang, T.; Qi, J.; Xie, J.; Li, X.; Guo, Y. Numerical Weather Prediction Correction Strategy for Short-Term Wind Power Forecasting Based on Bidirectional Gated Recurrent Unit and XGBoost. Front. Energy Res. 2022, 9, 836144. [Google Scholar] [CrossRef]
- Cakiroglu, C.; Demir, S.; Hakan Ozdemir, M.; Latif Aylak, B.; Sariisik, G.; Abualigah, L. Data-Driven Interpretable Ensemble Learning Methods for the Prediction of Wind Turbine Power Incorporating SHAP Analysis. Expert Syst. Appl. 2024, 237, 121464. [Google Scholar] [CrossRef]
- Oyucu, S.; Aksöz, A. Integrating Machine Learning and MLOps for Wind Energy Forecasting: A Comparative Analysis and Optimization Study on Türkiye’s Wind Data. Appl. Sci. 2024, 14, 3725. [Google Scholar] [CrossRef]
- Ahmed, U.; Muhammad, R.; Abbas, S.S.; Aziz, I.; Mahmood, A. Short-Term Wind Power Forecasting Using Integrated Boosting Approach. Front. Energy Res. 2024, 12, 1401978. [Google Scholar] [CrossRef]
- Mou, X.; Chen, H.; Zhang, X.; Xu, X.; Yu, Q.; Li, Y. Short-Term Wind Power Prediction Method Based on Combination of Meteorological Features and CatBoost. Wuhan Univ. J. Nat. Sci. 2023, 28, 169–176. [Google Scholar] [CrossRef]
- Liao, S.; Tian, X.; Liu, B.; Liu, T.; Su, H.; Zhou, B. Short-Term Wind Power Prediction Based on LightGBM and Meteorological Reanalysis. Energies 2022, 15, 6287. [Google Scholar] [CrossRef]
- Brain, J. When to Choose CatBoost Over XGBoost or LightGBM. Available online: https://neptune.ai/blog/when-to-choose-catboost-over-xgboost-or-lightgbm (accessed on 26 August 2024).
- Keels, J. XGBoost, Light GBM and CatBoost. A Comparison of Decision Tree Algorithms and Applications to a Regression Problem. Available online: https://medium.com/octave-john-keells-group/xgboost-light-gbm-and-catboost-a-comparison-of-decision-tree-algorithms-and-applications-to-a-f1d2d376d89c (accessed on 16 August 2024).
- Swalin, A. CatBoost vs. Light GBM vs. XGBoost. Available online: https://www.kdnuggets.com/2018/03/catboost-vs-light-gbm-vs-xgboost.html (accessed on 16 August 2024).
- Historical. Available online: https://www.sotaventogalicia.com/en/technical-area/real-time-data/historical/ (accessed on 15 August 2024).
- Barker, P.M.; McDougall, T.J. Two Interpolation Methods Using Multiply-Rotated Piecewise Cubic Hermite Interpolating Polynomials. J. Atmos. Ocean. Technol. 2020, 37, 605–619. [Google Scholar] [CrossRef]
- StatSoft Electronic Statistics Textbook. Available online: https://www.statsoft.pl (accessed on 9 August 2024).
- Piotrowski, P.; Baczyński, D.; Kopyt, M.; Gulczyński, T. Advanced Ensemble Methods Using Machine Learning and Deep Learning for One-Day-Ahead Forecasts of Electric Energy Production in Wind Farms. Energies 2022, 15, 1252. [Google Scholar] [CrossRef]
Input Data Description (SET1—Full Variant) | Input Data Description (SET2—Shortened Variant) | Code |
---|---|---|
Generation in period T − n, n = 1, 2…6 [kWh] | Generation in period T − n, n = 1, 2, 3 [kWh] | EG(T − n) |
Smoothed generation in period T − 1 [kWh] | Smoothed generation in period T − 1 [kWh] | SEG(T − 1) |
Wind speed in period T − n, n = 1, 2…6 [m/s] | Wind speed in period T − n, n = 1, 2, 3 [m/s] | WS(T − n) |
Wind direction—sine in period T − n, n = 1, 2, 3 | Wind direction—sine in period T − n, n = 1 | WD_sin(T − n) |
Wind direction—cosine in period T − n, n = 1, 2, 3 | Wind direction—cosine in period T − n, n = 1 | WD_cos(T − n) |
Description of the Hyperparameter | GBDT | XGBoost | LightGBM | CatBoost |
---|---|---|---|---|
Number of trees (number of iterations) | n_estimators = 100 | n_estimators = 100 | num_boost_round = 100 | iterations = 1000 |
Learning rate (step size shrinkage) | learning_rate = 0.1 | learning_rate = 0.3 | learning_rate = 0.1 | learning_rate = 0.03 |
Tree depth | max_depth = 3 | max_depth = 6 | max_depth = −1 (no limit)” | depth = 6 |
Strategy used for growing trees | - | - | - | grow_policy =SymmetricTree |
Minimum samples in leaf | min_samples_leaf = 1 | min_child_weight = 1 | min_child_samples = 20 | min_data_in_leaf = 1 |
Number of leaves in full trees (maximum) | - | - | num_leaves = 31 | - |
Fraction of the training data randomly selected and used to fit each tree (bagging) | subsample = 1 | subsample = 1 | subsample = 1 | subsample = 1 |
The frequency of applying subsampling (bagging)—number of boosting iterations | - | - | bagging_freq = 0 | - |
Control the intensity of the Bayesian bootstrap when sampling data for each iteration | - | - | - | bagging_temperature = 1 |
Randomly subsampling features once per tree | - | colsample_bytree = 1 | colsample_bytree = 1 | - |
Randomly subsampling features at each level of the tree | - | colsample_bylevel = 1 | - | colsample_bylevel = 1 |
Control randomness into the process of selecting features and splits | - | - | - | random_strength = 1 |
Randomly subsampling features at each split (node) of the tree | - | colsample_bynode = 1 | - | - |
Maximum number of bins that features can be divided | - | - | max_bin = 255 | border_count = 254 |
Minimum loss reduction required to make a further partition | - | gamma = 0 | min_gain_to_split = 0 | - |
Manually adjust the weights of the positive and negative classes to handle class imbalance | - | scale_pos_weight = 1 | scale_pos_weight = 1 | - |
Automatically adjust the weights of the positive and negative classes to handle class imbalance | - | is_unbalance = false | - | |
Lasso regularization (L1) | - | reg_alfa = 0 | lambda_l1 = 0 | - |
Ridge regularization (L2) | - | reg_lambda = 1 | lambda_l2 = 0 | l2_leaf_reg = 3 |
Stop training early if the performance on a validation set doesn’t improve for a certain number of rounds | - | early_stopping_rounds = none | early_stopping_rounds = none | early_stopping_rounds = none |
Loss function | Least Squares (MSE) | reg = squarederror (MSE) | regression (MSE) | loss_function = RMSE |
Evaluation metric | - | eval_metric = rmse | l2 (MSE) | eval_metric = RMSE |
Frequency of calculating the evaluation metric | every iteration by default | every iteration by default | metric_freq = 1 | metric_period = 1 |
The number of threads to use during training | n_jobs = None (single thread) | nthread= −1 (all) | num_threads (all if not specified) | thread_count= −1 (all) |
Model Name | Training Range | Validation Range | Test Range | |||||||
---|---|---|---|---|---|---|---|---|---|---|
nRMSE (%) | nMAE (%) | nMBE (%) | Time [s] | nRMSE (%) | nMAE (%) | nMBE (%) | nRMSE (%) | nMAE (%) | nMBE (%) | |
XGBoost | 0.6451 | 0.4186 | 5 × 10−6 | 0.59 | 0.8047 | 0.4634 | −0.0062 | 0.9710 | 0.6404 | −0.0063 |
CatBoost | 0.8483 | 0.5459 | 2 × 10−6 | 7.73 | 0.8424 | 0.4994 | −0.0276 | 1.0064 | 0.6752 | −0.0222 |
LightGBM | 0.8438 | 0.5487 | −0.0402 | 0.25 | 0.8684 | 0.5186 | −0.0728 | 1.0195 | 0.6935 | −0.0642 |
GBDT | 0.9781 | 0.6315 | −3 × 10−15 | 24.36 | 0.9639 | 0.5737 | −0.0570 | 1.1393 | 0.7719 | −0.0294 |
Naive | 1.3121 | 0.8148 | −0.0103 | - | 1.2966 | 0.7467 | −0.0040 | 1.5464 | 1.0228 | −0.0069 |
Model Name | Training Range | Validation Range | Test Range | |||||||
---|---|---|---|---|---|---|---|---|---|---|
nRMSE (%) | nMAE (%) | nMBE (%) | Time [s] | nRMSE (%) | nMAE (%) | nMBE (%) | nRMSE (%) | nMAE (%) | nMBE (%) | |
XGBoost | 0.6969 | 0.4432 | −2 × 10−6 | 0.44 | 0.8419 | 0.4816 | −0.0425 | 0.9939 | 0.6552 | −0.0631 |
CatBoost | 0.8614 | 0.5466 | 2 × 10−5 | 7.28 | 0.8895 | 0.5207 | −0.0629 | 1.0402 | 0.6939 | −0.0493 |
LightGBM | 0.8639 | 0.5563 | −0.0380 | 0.38 | 0.9004 | 0.5363 | −0.1011 | 1.0527 | 0.7110 | −0.0989 |
GBDT | 1.0224 | 0.6607 | 7 × 10−16 | 14.40 | 1.0481 | 0.6247 | −0.0962 | 1.2252 | 0.8318 | −0.0886 |
Naive | 1.3121 | 0.8148 | −0.0103 | - | 1.2966 | 0.7467 | −0.0040 | 1.5464 | 1.0228 | −0.0069 |
Model Name | Training Range | Validation Range | Test Range | |||||||
---|---|---|---|---|---|---|---|---|---|---|
nRMSE (%) | nMAE (%) | nMBE (%) | Time [s] | nRMSE (%) | nMAE (%) | nMBE (%) | nRMSE (%) | nMAE (%) | nMBE (%) | |
GBDT | 0.6072 | 0.3937 | 0.0002 | 147.39 | 0.7626 | 0.4419 | −0.0104 | 0.8993 | 0.5917 | −0.0161 |
XGBoost | 0.5893 | 0.3858 | −3 × 10−6 | 1.38 | 0.7860 | 0.4513 | −0.0118 | 0.9528 | 0.6317 | −0.0373 |
LightGBM | 0.7113 | 0.4687 | −0.0479 | 0.64 | 0.8127 | 0.4849 | −0.0568 | 0.9715 | 0.6615 | −0.0694 |
CatBoost | 0.7861 | 0.5067 | 5 × 10−6 | 2.76 | 0.8126 | 0.4791 | −0.0209 | 0.9768 | 0.6519 | −0.0126 |
Model Name | Training Range | Validation Range | Test Range | |||||||
---|---|---|---|---|---|---|---|---|---|---|
nRMSE (%) | nMAE (%) | nMBE (%) | Time [s] | nRMSE (%) | nMAE (%) | nMBE (%) | nRMSE (%) | nMAE (%) | nMBE (%) | |
GBDT | 0.6198 | 0.3965 | −0.0004 | 77.32 | 0.8083 | 0.4608 | −0.0348 | 0.9289 | 0.6102 | −0.0408 |
XGBoost | 0.6463 | 0.4146 | 1 × 10−6 | 1.07 | 0.8331 | 0.4736 | −0.0368 | 0.9783 | 0.6450 | −0.0634 |
CatBoost | 0.8020 | 0.5078 | 5 × 10−6 | 2.17 | 0.8537 | 0.4986 | −0.0495 | 0.9947 | 0.6616 | −0.0305 |
LightGBM | 0.7574 | 0.4897 | −0.0521 | 0.57 | 0.8640 | 0.5097 | −0.0859 | 1.0084 | 0.6822 | −0.0997 |
GBDT | XGBoost | LigtGBM | CatBoost | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Hyperparameter Description | Default | Tuned SET1 | Tuned SET2 | Default | Tuned SET1 | Tuned SET2 | Default | Tuned SET1 | Tuned SET2 | Default | Tuned SET1 | Tuned SET2 |
Number of trees | 100 | 600 | 600 | 100 | 600 | 600 | 100 | 600 | 600 | 1000 | 600 | 600 |
Learning rate | 0.1 | 0.1 | 0.2 | 0.3 | 0.3 | 0.3 | 0.1 | 0.2 | 0.2 | 0.03 | 0.12 | 0.12 |
Tree depth | 3 | 5 | 5 | 6 | 4 | 4 | −1 | 4 | 4 | 6 | 4 | 4 |
Minimum samples in leaf | 1 | 20 | 40 | 1 | 1 | 1 | 20 | 20 | 20 | 1 | 1 | 1 |
Number of leaves in full trees (maximum) | - | - | - | - | - | - | 31 | 31 | 31 | - | - | - |
Fraction of the training data randomly selected and used to fit each tree (bagging) | 1 | 0.8 | 0.8 | 1 | 1 | 1 | 1 | 0.8 | 0.8 | 1 | 0.8 | 0.8 |
Randomly subsampling features once per tree | - | - | - | 1 | 1 | 1 | 1 | 1 | 1 | - | ||
Randomly subsampling features at each level of the tree | - | - | - | 1 | 1 | 1 | - | - | - | 1 | 1 | 1 |
Randomly subsampling features at each split (node) of the tree | - | - | - | 1 | 1 | 1 | - | - | - | - | - | - |
Maximum number of bins that features can be divided | - | - | - | - | - | - | 255 | 4000 | 4000 | 254 | 1000 | 1000 |
Minimum loss reduction required to make a further partition | - | - | - | 0 | 0 | 0 | 0 | 0 | 0 | - | - | - |
Lasso regularization (L1) | - | - | - | 0 | 0 | 0 | 0 | 0 | 0 | - | - | - |
Ridge regularization (L2) | - | - | - | 1 | 1 | 1 | 0 | 0 | 1 | 3 | 1.5 | 1.5 |
Early stopping | - | - | - | no | no | no | no | no | no | no | no | no |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2024 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Kopyt, M.; Piotrowski, P.; Baczyński, D. Short-Term Energy Generation Forecasts at a Wind Farm—A Multi-Variant Comparison of the Effectiveness and Performance of Various Gradient-Boosted Decision Tree Models. Energies 2024, 17, 6194. https://doi.org/10.3390/en17236194
Kopyt M, Piotrowski P, Baczyński D. Short-Term Energy Generation Forecasts at a Wind Farm—A Multi-Variant Comparison of the Effectiveness and Performance of Various Gradient-Boosted Decision Tree Models. Energies. 2024; 17(23):6194. https://doi.org/10.3390/en17236194
Chicago/Turabian StyleKopyt, Marcin, Paweł Piotrowski, and Dariusz Baczyński. 2024. "Short-Term Energy Generation Forecasts at a Wind Farm—A Multi-Variant Comparison of the Effectiveness and Performance of Various Gradient-Boosted Decision Tree Models" Energies 17, no. 23: 6194. https://doi.org/10.3390/en17236194
APA StyleKopyt, M., Piotrowski, P., & Baczyński, D. (2024). Short-Term Energy Generation Forecasts at a Wind Farm—A Multi-Variant Comparison of the Effectiveness and Performance of Various Gradient-Boosted Decision Tree Models. Energies, 17(23), 6194. https://doi.org/10.3390/en17236194