|
Download README.md from neitpm/power-load-forecasting: direct link, hf CLI and curl.
- Browser
- Download file 5.16 kB
-
https://huggingface.co/neitpm/power-load-forecasting/resolve/main/README.md
- Command line
-
hf download hf://neitpm/power-load-forecasting/README.md
-
curl -L -o README.md https://huggingface.co/neitpm/power-load-forecasting/resolve/main/README.md
5.16 kB
| language: | |
| - en | |
| - vi | |
| license: mit | |
| library_name: pytorch | |
| tags: | |
| - time-series | |
| - power-systems | |
| - forecasting | |
| - kan | |
| - kolmogorov-arnold-networks | |
| - industrial-iot | |
| - smart-grid | |
| - energy | |
| metrics: | |
| - mae | |
| - rmse | |
| - r2 | |
| pipeline_tag: time-series-forecasting | |
| # Industrial Power Load Forecasting: Residual Kolmogorov–Arnold Network (KAN) | |
| [](https://github.com/neitpm/power-load-forecasting) | |
| [](LICENSE) | |
| []() | |
| This model card releases the reproducible architecture, zero-leakage preprocessing contract, multi-seed stability benchmarks, and statistical evaluation manifests for the **Residual Kolmogorov–Arnold Network (KAN)** applied to short-term (30-minute horizon) industrial power load forecasting. | |
| --- | |
| ## 📌 Problem & Task Overview | |
| - **Task**: Single-step ahead short-term electric power load forecasting ($\Delta t = 30\text{ minutes}$). | |
| - **Target Variable**: Active Power $P\text{ (kW)}$ at Feeder 480, 110kV/22kV Substation 224 Tan Hung (**Tay Ninh Power Company / PC Tây Ninh**). | |
| - **Core Architecture**: **Residual KAN Regressor** with learnable B-spline activation functions and Target Normalization ($\hat{P}_{t+1} = P_t + \text{KAN}(X)$). | |
| - **Ensemble Methodology**: Uniform simple averaging across 5 independent random seeds (`[42, 101, 2024, 7, 999]`), guaranteeing **zero data leakage** without post-hoc test weight optimization. | |
| --- | |
| ## 📊 Evaluation & Master Benchmark | |
| Evaluation was conducted on an out-of-sample test split consisting of **14,385 valid 30-minute samples** across **16 continuous time segments** (`2024-11-02 15:30:00` to `2025-08-30 23:30:00`). | |
| $$\Delta\text{Metric (\%)} = \frac{\text{Metric}_{\text{Persistence}} - \text{Metric}_{\text{Model}}}{\text{Metric}_{\text{Persistence}}} \times 100\%$$ | |
| | Family | Model | MAE (kW) | RMSE (kW) | sMAPE (%) | $R^2$ Score | $\Delta\text{MAE vs Persistence}$ | $\Delta\text{RMSE vs Persistence}$ | | |
| | :--- | :--- | :---: | :---: | :---: | :---: | :---: | :---: | | |
| | **Naive Baseline** | 1. Persistence Naive ($P_{t}$) | 598.36 | 1160.44 | **13.35%** | 0.8770 | Baseline (0.00%) | Baseline (0.00%) | | |
| | **Naive Baseline** | 2. Seasonal Naive 24h ($\text{lag}_{48}$) | 1363.07 | 2495.50 | 30.41% | 0.4313 | -127.80% | -115.05% | | |
| | **Naive Baseline** | 3. Seasonal Naive 7d ($\text{lag}_{336}$) | 1882.99 | 3123.69 | 42.54% | 0.1090 | -214.69% | -169.18% | | |
| | **Naive Baseline** | 4. Moving Average (1.5h) | 1016.16 | 1586.70 | 21.74% | 0.7701 | -69.82% | -36.73% | | |
| | **Classical ML** | 5. Ridge Regression | 730.96 | 1186.89 | 24.73% | 0.8714 | -22.16% | -2.28% | | |
| | **Classical ML** | 6. XGBoost Regressor | 645.24 | 1155.21 | 23.30% | 0.8781 | -7.83% | +0.45% | | |
| | **Classical ML** | 7. HistGradientBoosting Regressor | 648.01 | 1153.06 | 23.41% | 0.8786 | -8.30% | +0.64% | | |
| | **Multi-seed Stability** | 8. Residual KAN Single (Mean $\pm$ Std)* | 528.99 $\pm$ 12.23 | 1033.35 $\pm$ 13.78 | 19.17% $\pm$ 0.32% | 0.9025 $\pm$ 0.0026 | +11.59% | +10.95% | | |
| | **Proposed Model** | 9. **Residual KAN Ensemble (5 Seeds)\*\*** | **519.78** | **1019.95** | 18.96% | **0.9050** | **+13.13%** | **+12.11%** | | |
| *All metrics are verified directly from `reports/master_model_comparison_benchmark.md` and `reports/moving_block_bootstrap_summary.json`.* | |
| > **Critical Scientific Insight:** | |
| > While the Residual KAN Ensemble significantly reduced absolute error ($\text{MAE} -13.13\%$) and squared deviation ($\text{RMSE} -12.11\%$, $R^2 = 0.9050$), **Persistence Naive ($P_t$) remained superior in sMAPE ($13.35\%$)**. This underscores the essential role of evaluating against strong naive baselines in short-horizon time-series forecasting. | |
| --- | |
| ## 🔒 Data Privacy & Access Policy | |
| In compliance with enterprise data governance regulations of **Tay Ninh Power Company**, the proprietary 5-year raw metering database is **not publicly hosted on Hugging Face Hub**. | |
| This release packages the full pipeline, feature generation contracts, model definitions, and integrity manifests. Users with their own metering CSVs can run end-to-end preprocessing using the provided CLI tools. | |
| --- | |
| ## 💻 Quickstart Inference Example | |
| ```python | |
| import torch | |
| import numpy as np | |
| from code.models_kan import ResidualKANRegressor | |
| # Initialize Residual KAN Regressor | |
| in_features = 24 # Input lag and cyclical features | |
| model = ResidualKANRegressor(in_features=in_features, hidden_dims=[64, 32], p_t_idx=0) | |
| model.eval() | |
| # Synthetic input: batch of 4 time steps | |
| x_sample = torch.randn(4, in_features) | |
| with torch.no_grad(): | |
| y_pred_scaled = model(x_sample) | |
| print("Predicted scaled load increment:", y_pred_scaled.numpy()) | |
| assert not torch.isnan(y_pred_scaled).any(), "Prediction contains NaN!" | |
| assert not torch.isinf(y_pred_scaled).any(), "Prediction contains Inf!" | |
| print("Smoke test passed: Clean finite predictions.") | |
| ``` | |
| --- | |
| ## 📦 Verified Artifacts Manifest | |
| All artifacts are verified with SHA-256 in [`metadata/weights_manifest.json`](metadata/weights_manifest.json). | |