76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

Begonnen von DS_Starter, 11 Februar 2024, 14:11:00

Vorheriges Thema - Nächstes Thema

DS_Starter

@grappa24,

das ist natürlich ein katastrophales Ergebnis. Aber an den Kennzahlen ist schon das wahrscheinliche Hauptproblem zu sehen. Es gibt in den Rohdaten ein oder mehrere Fehler-Daten:

ZitatNormierungsgrenzen: PV=13080 W, Hausverbrauch: Min=0 W / Max=3012497.8 W
Ich glaube kaum, dass dein Haushalt einen Stundenverbrauch von 3 Mio Wh (W ist falsch, muß ich korrigieren) hatte.

Prüfe mal bitte:

set ... reset aiData searchValue=con>=20000
Für einen Normalhaushalt ohne EV sollte 20000Wh für einen max. vorkommenden Stundenverbrauch weit ausreichen. Mit EV kann ich es nicht einschätzen.
Alles darüber hinaus dürften Fehlerwerte sein, die sich aus welchen Gründen auch immer (vllt. mal ein falsches Setup zu Beginn) eingeschlichen haben. Du weißt am Besten, was bei dir als Max. Wert vorkommen kann.

Dann lösche alle Fehlerwerte aus den Rohdaten mit:

set ... reset aiData delValue=con>=20000  (Wert deinem Haushalt anpassen)


Wenn die Daten bereinigt sind, startest du das Training einfach nochmal und dann schauen wir uns das Ergebnis erneut an.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

Zitat von: DS_Starter am 01 Januar 2026, 23:06:30@300P,

ZitatThe key 'aiConHiddenLayers=80‑40‑20' is not specified correctly.
Das ist putzig. Wenn ich diesen Teil aus deiner Meldung herauskopiere, wird tatsächlich gemeckert. Nehme ich aiConHiddenLayers mit Copy/Paste aus der Onlinehilfe und ergänze =80-40-20 klappt es wie gewohnt. Da ist irgendein Steuerzeichen drin.


Jepp - ist so - ?!?
Hatte es eigentlich von Hand eingetragen....🙃
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

300P

Lasse jetzt nochmals erneut Trainieren nach der o.g. Korrektur.
Zusätzlich zur Sicherheit noch vorher angegeben...
set ... reset aiData delValue=con>=7000
Das letzte Ergebnis war bei mir so sehr "ernüchternd", so dass ich mich garnicht getraut habe es zu zeigen.... :))  :))
Da waren (leider) fast linienmäßige Vorhersagewerte. :o

Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

DS_Starter

Nur keine Scham.  ;)
Wir befinden uns am Beginn der Integration von neuronalen Netzen. Da müssen wir uns erst einarbeiten und lernen mit der Technologie umzugehen. Und ich muß lernen was für eine robuste Funktion in allen möglichen Situationen nötig ist zu implementieren. Du siehst ja schon bei den ersten Vergleichen ... was bei mir ordentlich passt, führt in anderen Umgebungen zu nicht brauchbaren Ergebnissen.

So habe ich jetzt zum Beispiel einen Percentile-Filter eingebaut, der alles oberhalb Percentile 99 ignoriert damit, wie im Beispiel grappa24, die Normierungen nicht durch Ausreißer zerstört werden. Den Filter teste ich gerade.
So tasten wir uns voran. Die Verbrauchsprognose ist vermutlich deutlich anspruchsvoller als die später noch zu implementierende PV-Prognose mit FANN.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

So - neue Berechnung durch / fertig:

Log:
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025032507 -> key=con, val=12799
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041017 -> key=con, val=8553
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041020 -> key=con, val=18508
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041022 -> key=con, val=6828
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041024 -> key=con, val=6089
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041101 -> key=con, val=6723
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041102 -> key=con, val=6025
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041103 -> key=con, val=6756
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041104 -> key=con, val=6029
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041105 -> key=con, val=6438
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041106 -> key=con, val=6589
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041108 -> key=con, val=6790
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041203 -> key=con, val=8078
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041204 -> key=con, val=7741
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041309 -> key=con, val=6376
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025041314 -> key=con, val=6407
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025052209 -> key=con, val=11016
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025052519 -> key=con, val=7117
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025060214 -> key=con, val=15345
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025061109 -> key=con, val=6235
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025061414 -> key=con, val=6703
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025062914 -> key=con, val=6157
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025082315 -> key=con, val=6390
2026.01.02 15:00:17 1: Forecast - AI Raw data deleted - idx: 2025122414 -> key=con, val=6414
2026.01.02 15:00:17 1: Forecast - AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.01.02 15:00:26 1: Forecast DEBUG> start add AI raw data for hour: 15
2026.01.02 15:00:26 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.01.02 15:00:26 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.01.02 15:03:25 1: Forecast DEBUG> AI FANN Training for Consumption Forecast BlockingCall PID "559120" with Timeout 86400 s started
2026.01.02 15:03:26 1: Forecast DEBUG> AI FANN - There are 30 Records skipped due to incomplete or invalid data. Index:
2025032507, 2025032610, 2025033003, 2025033021, 2025040211, 2025041017, 2025041020, 2025041022, 2025041024, 2025041101, 2025041102, 2025041103, 2025041104, 2025041105, 2025041106, 2025041108, 2025041203, 2025041204, 2025041309, 2025041314, 2025052209, 2025052511, 2025052518, 2025052519, 2025060214, 2025061109, 2025061414, 2025062914, 2025082315, 2025122414
2026.01.02 15:03:27 1: Forecast - DBG F[6748]: lag1=0.520 lag2=0.345 lag24=0.252 d1p=0.000 d1n=0.100 rollstd=0.421 up=0 down=1 upS=0.000 downS=0.100 vol=1 pvX=0 break=1
2026.01.02 15:03:27 1: Forecast - DBG F[6749]: lag1=0.452 lag2=0.520 lag24=0.307 d1p=0.000 d1n=0.053 rollstd=0.331 up=0 down=1 upS=0.000 downS=0.053 vol=1 pvX=0 break=0
2026.01.02 15:03:27 1: Forecast - DBG F[6750]: lag1=0.417 lag2=0.452 lag24=0.285 d1p=0.000 d1n=0.000 rollstd=0.271 up=0 down=0 upS=0.000 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 15:03:27 1: Forecast - DBG F[6751]: lag1=0.417 lag2=0.417 lag24=0.273 d1p=0.000 d1n=0.019 rollstd=0.208 up=0 down=1 upS=0.000 downS=0.019 vol=1 pvX=0 break=0
2026.01.02 15:03:27 1: Forecast - DBG F[6752]: lag1=0.404 lag2=0.417 lag24=0.304 d1p=0.000 d1n=0.136 rollstd=0.208 up=0 down=1 upS=0.000 downS=0.136 vol=1 pvX=0 break=0
2026.01.02 15:03:27 1: Forecast - DBG F[6753]: lag1=0.313 lag2=0.404 lag24=0.322 d1p=0.000 d1n=0.115 rollstd=0.243 up=0 down=1 upS=0.000 downS=0.115 vol=1 pvX=0 break=0
2026.01.02 15:03:27 1: Forecast - DBG F[6754]: lag1=0.235 lag2=0.313 lag24=0.287 d1p=0.197 d1n=0.000 rollstd=0.295 up=1 down=0 upS=0.197 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 15:03:27 1: Forecast - DBG F[6755]: lag1=0.344 lag2=0.235 lag24=0.208 d1p=0.000 d1n=0.211 rollstd=0.261 up=0 down=1 upS=0.000 downS=0.211 vol=1 pvX=0 break=1
2026.01.02 15:03:27 1: Forecast - DBG F[6756]: lag1=0.202 lag2=0.344 lag24=0.287 d1p=0.304 d1n=0.000 rollstd=0.315 up=1 down=0 upS=0.304 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 15:03:27 1: Forecast - DBG F[6757]: lag1=0.369 lag2=0.202 lag24=0.402 d1p=0.036 d1n=0.000 rollstd=0.282 up=1 down=0 upS=0.036 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 15:03:27 1: Forecast - DBG F[6758]: lag1=0.389 lag2=0.369 lag24=0.236 d1p=0.000 d1n=0.171 rollstd=0.270 up=0 down=1 upS=0.000 downS=0.171 vol=1 pvX=0 break=1
2026.01.02 15:03:27 1: Forecast - DBG F[6759]: lag1=0.274 lag2=0.389 lag24=0.391 d1p=0.195 d1n=0.000 rollstd=0.274 up=1 down=0 upS=0.195 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 15:03:27 1: Forecast - DBG F[6760]: lag1=0.381 lag2=0.274 lag24=0.337 d1p=0.055 d1n=0.000 rollstd=0.266 up=1 down=0 upS=0.055 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 15:03:27 1: Forecast - DBG F[6761]: lag1=0.411 lag2=0.381 lag24=0.355 d1p=0.000 d1n=0.134 rollstd=0.294 up=0 down=1 upS=0.000 downS=0.134 vol=1 pvX=0 break=1
2026.01.02 15:03:27 1: Forecast - DBG F[6762]: lag1=0.321 lag2=0.411 lag24=0.310 d1p=0.141 d1n=0.000 rollstd=0.183 up=1 down=0 upS=0.141 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 15:03:27 1: Forecast - DBG F[6763]: lag1=0.398 lag2=0.321 lag24=0.376 d1p=0.000 d1n=0.060 rollstd=0.193 up=0 down=1 upS=0.000 downS=0.060 vol=1 pvX=0 break=1
2026.01.02 15:03:27 1: Forecast - DBG F[6764]: lag1=0.358 lag2=0.398 lag24=0.392 d1p=0.000 d1n=0.171 rollstd=0.187 up=0 down=1 upS=0.000 downS=0.171 vol=1 pvX=0 break=0
2026.01.02 15:03:27 1: Forecast - DBG F[6765]: lag1=0.243 lag2=0.358 lag24=0.312 d1p=0.257 d1n=0.000 rollstd=0.224 up=1 down=0 upS=0.257 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 15:03:27 1: Forecast - DBG F[6766]: lag1=0.385 lag2=0.243 lag24=0.607 d1p=0.374 d1n=0.000 rollstd=0.225 up=1 down=0 upS=0.374 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 15:03:27 1: Forecast - DBG F[6767]: lag1=0.591 lag2=0.385 lag24=0.320 d1p=0.000 d1n=0.336 rollstd=0.418 up=0 down=1 upS=0.000 downS=0.336 vol=1 pvX=0 break=1
2026.01.02 15:03:27 1: Forecast DEBUG> First attempt 0 with Seed=596856
2026.01.02 15:03:27 1: Forecast DEBUG> AI FANN Training started with Params:
num input datasets=6762,
training algo=FANN_TRAIN_RPROP,
output AF=LINEAR,
hidden AF=GAUSSIAN,
hidden Neurons=80,40,20,
hidden steepness=0.9,
Epoches=15000,
mse_error=0.001,
learning rate=0.00100,
learning momentum=0.7,
Data sharing=chronological split and AI internal shuffle of training data (Train=5409, Test=1352),
Data shuffle=1 (period=10)
2026.01.02 15:03:56 1: Forecast DEBUG> Epoche 100: Train MSE=1000000000.000000, Val MSE=0.013188, Val MAE=0.089665, Val MedAE=0.071519, Bit_Fail=5
2026.01.02 15:04:25 1: Forecast DEBUG> Epoche 200: Train MSE=1000000000.000000, Val MSE=0.014292, Val MAE=0.091121, Val MedAE=0.072667, Bit_Fail=9
2026.01.02 15:04:53 1: Forecast DEBUG> Epoche 300: Train MSE=1000000000.000000, Val MSE=0.014528, Val MAE=0.091573, Val MedAE=0.069822, Bit_Fail=11
2026.01.02 15:05:22 1: Forecast DEBUG> Epoche 400: Train MSE=1000000000.000000, Val MSE=0.014482, Val MAE=0.091944, Val MedAE=0.072720, Bit_Fail=10
2026.01.02 15:05:51 1: Forecast DEBUG> Epoche 500: Train MSE=1000000000.000000, Val MSE=0.015208, Val MAE=0.095225, Val MedAE=0.076567, Bit_Fail=12
2026.01.02 15:06:19 1: Forecast DEBUG> Epoche 600: Train MSE=1000000000.000000, Val MSE=0.015471, Val MAE=0.096021, Val MedAE=0.076908, Bit_Fail=11
2026.01.02 15:06:48 1: Forecast DEBUG> Epoche 700: Train MSE=1000000000.000000, Val MSE=0.015815, Val MAE=0.096684, Val MedAE=0.076519, Bit_Fail=14
2026.01.02 15:07:17 1: Forecast DEBUG> Epoche 800: Train MSE=1000000000.000000, Val MSE=0.016177, Val MAE=0.097602, Val MedAE=0.076636, Bit_Fail=15
2026.01.02 15:07:45 1: Forecast DEBUG> Epoche 900: Train MSE=1000000000.000000, Val MSE=0.016460, Val MAE=0.098401, Val MedAE=0.077163, Bit_Fail=14
2026.01.02 15:08:12 1: PERL WARNING: Argument "" isn't numeric in negation (-) at (eval 2422132) line 3.
2026.01.02 15:08:12 1: PERL WARNING: Argument "" isn't numeric in negation (-) at (eval 2422132) line 4.
2026.01.02 15:08:14 1: Forecast DEBUG> Epoche 1000: Train MSE=1000000000.000000, Val MSE=0.016510, Val MAE=0.098567, Val MedAE=0.077908, Bit_Fail=16
2026.01.02 15:08:43 1: Forecast DEBUG> Epoche 1100: Train MSE=1000000000.000000, Val MSE=0.016665, Val MAE=0.099135, Val MedAE=0.079009, Bit_Fail=16
2026.01.02 15:09:12 1: Forecast DEBUG> Epoche 1200: Train MSE=1000000000.000000, Val MSE=0.016917, Val MAE=0.099898, Val MedAE=0.079749, Bit_Fail=16
2026.01.02 15:09:42 1: Forecast DEBUG> Epoche 1300: Train MSE=1000000000.000000, Val MSE=0.016949, Val MAE=0.100299, Val MedAE=0.079837, Bit_Fail=14
2026.01.02 15:10:11 1: Forecast DEBUG> Epoche 1400: Train MSE=1000000000.000000, Val MSE=0.016992, Val MAE=0.100520, Val MedAE=0.079126, Bit_Fail=10
2026.01.02 15:10:40 1: Forecast DEBUG> Epoche 1500: Train MSE=1000000000.000000, Val MSE=0.017157, Val MAE=0.101184, Val MedAE=0.080083, Bit_Fail=11
2026.01.02 15:11:09 1: Forecast DEBUG> Epoche 1600: Train MSE=1000000000.000000, Val MSE=0.017023, Val MAE=0.100766, Val MedAE=0.079886, Bit_Fail=12
2026.01.02 15:11:38 1: Forecast DEBUG> Epoche 1700: Train MSE=1000000000.000000, Val MSE=0.017135, Val MAE=0.101118, Val MedAE=0.079591, Bit_Fail=13
2026.01.02 15:12:07 1: Forecast DEBUG> Epoche 1800: Train MSE=1000000000.000000, Val MSE=0.017026, Val MAE=0.100670, Val MedAE=0.079381, Bit_Fail=14
2026.01.02 15:12:36 1: Forecast DEBUG> Epoche 1900: Train MSE=1000000000.000000, Val MSE=0.017001, Val MAE=0.100423, Val MedAE=0.080081, Bit_Fail=13
2026.01.02 15:13:05 1: Forecast DEBUG> Epoche 2000: Train MSE=1000000000.000000, Val MSE=0.017126, Val MAE=0.100358, Val MedAE=0.077956, Bit_Fail=14
2026.01.02 15:13:05 1: Forecast DEBUG> Early stopping bei Epoche 2000 (no improvement since 2000 epochs)
2026.01.02 15:13:05 1: === Snapshot-Statistik ===
2026.01.02 15:13:05 1: Metric-Improvement Snapshots: 0 (letzte Epoche: 0)
2026.01.02 15:13:05 1: Bit-Improvement Snapshots:    0 (letzte Epoche: 0)
2026.01.02 15:13:05 1: Bit-Tradeoff Snapshots:       0 (letzte Epoche: 0)
2026.01.02 15:13:05 1: PERL WARNING: Wide character in print at fhem.pl line 1026.
2026.01.02 15:13:05 1: Forecast - WARNING - AI FANN Training has no snapshot with Val-MSE < 0.01 generated – saved last model as fallback
2026.01.02 15:13:05 1: Forecast DEBUG> Best Snapshot reloaded from Epoche 1000000000: Train MSE=1000000000.000000, Val MSE=1000000000.000000, Val MAE=1000000000.000000, Val MedAE=1000000000.000000, Bit_Fail=1000000000,
2026.01.02 15:13:05 1: Forecast DEBUG> Run Validation Test with 20% of Input data ...
2026.01.02 15:13:05 1: Forecast DEBUG> Validation finished - Best Training MSE=1000000000.000000, Validation MSE=0.017126, Validation Bit_Fail=14
2026.01.02 15:13:05 1: Forecast DEBUG> Retrain check ->
-- In Normalization Space: --
Train MSE=1000000000.000000
Val MSE=0.017126
Val Mean=0.0171567202
VAL/TRAIN MSE Ratio=0.000000 (limit=2.5)
Diff=999999999.982874 (limit=0.005)
ValStd=0.0000255139 (limit=0.00428918004115338)
-- At Original Scale: --
MAE=774.054865649537
RMSE/MAE=1.3040 (limit=1.5)
Slope=0.347372 (limit=0.7 .. 1.3)
Bias=987.97 (limit=+-387.027432824769)
R2=-0.382749881813164
P95=2045.6495 (limit=3096.21946259815)
P99=2748.7058 (limit=6192.4389251963)
-- Robustness Indicators: --
RMSE relative=51 (limit=20)
BitFail=14 (limit=5)
BitFailRate=0.0103 (limit=0.1)
-> Retrain
2026.01.02 15:13:05 1: Forecast DEBUG> Retry attempt 1 with Seed=22837341
2026.01.02 15:13:05 1: Forecast DEBUG> AI FANN Training started with Params:
num input datasets=6762,
training algo=FANN_TRAIN_RPROP,
output AF=LINEAR,
hidden AF=GAUSSIAN,
hidden Neurons=80,40,20,
hidden steepness=0.9,
Epoches=15000,
mse_error=0.001,
learning rate=0.00100,
learning momentum=0.7,
Data sharing=chronological split and AI internal shuffle of training data (Train=5409, Test=1352),
Data shuffle=1 (period=10)
2026.01.02 15:13:33 1: Forecast DEBUG> Epoche 100: Train MSE=1000000000.000000, Val MSE=0.018708, Val MAE=0.109678, Val MedAE=0.094931, Bit_Fail=4
2026.01.02 15:14:01 1: Forecast DEBUG> Epoche 200: Train MSE=1000000000.000000, Val MSE=0.018374, Val MAE=0.104712, Val MedAE=0.086361, Bit_Fail=6
2026.01.02 15:14:30 1: Forecast DEBUG> Epoche 300: Train MSE=1000000000.000000, Val MSE=0.021858, Val MAE=0.110684, Val MedAE=0.090145, Bit_Fail=19
2026.01.02 15:14:58 1: Forecast DEBUG> Epoche 400: Train MSE=1000000000.000000, Val MSE=0.025727, Val MAE=0.112035, Val MedAE=0.089078, Bit_Fail=27
2026.01.02 15:15:27 1: Forecast DEBUG> Epoche 500: Train MSE=1000000000.000000, Val MSE=0.025019, Val MAE=0.113225, Val MedAE=0.089720, Bit_Fail=33
2026.01.02 15:15:55 1: Forecast DEBUG> Epoche 600: Train MSE=1000000000.000000, Val MSE=0.030362, Val MAE=0.115491, Val MedAE=0.089789, Bit_Fail=31
2026.01.02 15:16:23 1: Forecast DEBUG> Epoche 700: Train MSE=1000000000.000000, Val MSE=0.029255, Val MAE=0.114258, Val MedAE=0.090641, Bit_Fail=28
2026.01.02 15:16:52 1: Forecast DEBUG> Epoche 800: Train MSE=1000000000.000000, Val MSE=0.032431, Val MAE=0.117318, Val MedAE=0.088412, Bit_Fail=33
2026.01.02 15:17:20 1: Forecast DEBUG> Epoche 900: Train MSE=1000000000.000000, Val MSE=0.032754, Val MAE=0.117560, Val MedAE=0.088106, Bit_Fail=33
2026.01.02 15:17:49 1: Forecast DEBUG> Epoche 1000: Train MSE=1000000000.000000, Val MSE=0.034059, Val MAE=0.117747, Val MedAE=0.087426, Bit_Fail=32
2026.01.02 15:18:17 1: Forecast DEBUG> Epoche 1100: Train MSE=1000000000.000000, Val MSE=0.027934, Val MAE=0.115486, Val MedAE=0.088487, Bit_Fail=29
2026.01.02 15:18:45 1: Forecast DEBUG> Epoche 1200: Train MSE=1000000000.000000, Val MSE=0.027361, Val MAE=0.115737, Val MedAE=0.087423, Bit_Fail=31
2026.01.02 15:19:14 1: Forecast DEBUG> Epoche 1300: Train MSE=1000000000.000000, Val MSE=0.027382, Val MAE=0.115686, Val MedAE=0.086851, Bit_Fail=32
2026.01.02 15:19:42 1: Forecast DEBUG> Epoche 1400: Train MSE=1000000000.000000, Val MSE=0.028092, Val MAE=0.115810, Val MedAE=0.088453, Bit_Fail=35
2026.01.02 15:20:11 1: Forecast DEBUG> Epoche 1500: Train MSE=1000000000.000000, Val MSE=0.031712, Val MAE=0.118259, Val MedAE=0.088791, Bit_Fail=34
2026.01.02 15:20:39 1: Forecast DEBUG> Epoche 1600: Train MSE=1000000000.000000, Val MSE=0.031204, Val MAE=0.117916, Val MedAE=0.089491, Bit_Fail=36
2026.01.02 15:21:07 1: Forecast DEBUG> Epoche 1700: Train MSE=1000000000.000000, Val MSE=0.028010, Val MAE=0.116582, Val MedAE=0.090113, Bit_Fail=32
2026.01.02 15:21:36 1: Forecast DEBUG> Epoche 1800: Train MSE=1000000000.000000, Val MSE=0.030358, Val MAE=0.117644, Val MedAE=0.090253, Bit_Fail=33
2026.01.02 15:22:04 1: Forecast DEBUG> Epoche 1900: Train MSE=1000000000.000000, Val MSE=0.030118, Val MAE=0.117976, Val MedAE=0.088668, Bit_Fail=36
2026.01.02 15:22:33 1: Forecast DEBUG> Epoche 2000: Train MSE=1000000000.000000, Val MSE=0.029902, Val MAE=0.117498, Val MedAE=0.088907, Bit_Fail=34
2026.01.02 15:22:33 1: Forecast DEBUG> Early stopping bei Epoche 2000 (no improvement since 2000 epochs)
2026.01.02 15:22:33 1: === Snapshot-Statistik ===
2026.01.02 15:22:33 1: Metric-Improvement Snapshots: 0 (letzte Epoche: 0)
2026.01.02 15:22:33 1: Bit-Improvement Snapshots:    0 (letzte Epoche: 0)
2026.01.02 15:22:33 1: Bit-Tradeoff Snapshots:       0 (letzte Epoche: 0)
2026.01.02 15:22:33 1: Forecast - WARNING - AI FANN Training has no snapshot with Val-MSE < 0.01 generated – saved last model as fallback
2026.01.02 15:22:33 1: Forecast DEBUG> Best Snapshot reloaded from Epoche 1000000000: Train MSE=1000000000.000000, Val MSE=1000000000.000000, Val MAE=1000000000.000000, Val MedAE=1000000000.000000, Bit_Fail=1000000000,
2026.01.02 15:22:33 1: Forecast DEBUG> Run Validation Test with 20% of Input data ...
2026.01.02 15:22:33 1: Forecast DEBUG> Validation finished - Best Training MSE=1000000000.000000, Validation MSE=0.029902, Validation Bit_Fail=34
2026.01.02 15:22:33 1: Forecast DEBUG> Retrain check ->
-- In Normalization Space: --
Train MSE=1000000000.000000
Val MSE=0.029902
Val Mean=0.0297236337
VAL/TRAIN MSE Ratio=0.000000 (limit=2.5)
Diff=999999999.970098 (limit=0.005)
ValStd=0.0001684176 (limit=0.00743090842130472)
-- At Original Scale: --
MAE=906.251016376598
RMSE/MAE=1.4717 (limit=1.5)
Slope=0.474016 (limit=0.7 .. 1.3)
Bias=579.38 (limit=+-453.125508188299)
R2=-1.41430159804186
P95=2229.7219 (limit=3625.00406550639)
P99=4584.1313 (limit=7250.00813101278)
-- Robustness Indicators: --
RMSE relative=68 (limit=20)
BitFail=34 (limit=5)
BitFailRate=0.0251 (limit=0.1)
-> Retrain
2026.01.02 15:22:33 1: Forecast DEBUG> Retry attempt 2 with Seed=22521285
2026.01.02 15:22:33 1: Forecast DEBUG> AI FANN Training started with Params:
num input datasets=6762,
training algo=FANN_TRAIN_RPROP,
output AF=LINEAR,
hidden AF=GAUSSIAN,
hidden Neurons=80,40,20,
hidden steepness=0.9,
Epoches=15000,
mse_error=0.001,
learning rate=0.00100,
learning momentum=0.7,
Data sharing=chronological split and AI internal shuffle of training data (Train=5409, Test=1352),
Data shuffle=1 (period=10)
2026.01.02 15:23:02 1: Forecast DEBUG> Epoche 100: Train MSE=1000000000.000000, Val MSE=0.020294, Val MAE=0.113749, Val MedAE=0.098290, Bit_Fail=12
2026.01.02 15:23:31 1: Forecast DEBUG> Epoche 200: Train MSE=1000000000.000000, Val MSE=0.017307, Val MAE=0.102709, Val MedAE=0.085133, Bit_Fail=6
2026.01.02 15:23:59 1: Forecast DEBUG> Epoche 300: Train MSE=1000000000.000000, Val MSE=0.016126, Val MAE=0.096972, Val MedAE=0.077736, Bit_Fail=9
2026.01.02 15:24:28 1: Forecast DEBUG> Epoche 400: Train MSE=1000000000.000000, Val MSE=0.015667, Val MAE=0.095174, Val MedAE=0.075866, Bit_Fail=7
2026.01.02 15:24:57 1: Forecast DEBUG> Epoche 500: Train MSE=1000000000.000000, Val MSE=0.015563, Val MAE=0.094690, Val MedAE=0.074178, Bit_Fail=8
2026.01.02 15:25:12 1: PERL WARNING: Argument "" isn't numeric in negation (-) at (eval 2466995) line 3.
2026.01.02 15:25:12 1: PERL WARNING: Argument "" isn't numeric in negation (-) at (eval 2466995) line 4.
2026.01.02 15:25:26 1: Forecast DEBUG> Epoche 600: Train MSE=1000000000.000000, Val MSE=0.016007, Val MAE=0.096082, Val MedAE=0.076280, Bit_Fail=12
2026.01.02 15:25:54 1: Forecast DEBUG> Epoche 700: Train MSE=1000000000.000000, Val MSE=0.016060, Val MAE=0.095807, Val MedAE=0.076440, Bit_Fail=13
2026.01.02 15:26:23 1: Forecast DEBUG> Epoche 800: Train MSE=1000000000.000000, Val MSE=0.015735, Val MAE=0.095229, Val MedAE=0.075335, Bit_Fail=14
2026.01.02 15:26:52 1: Forecast DEBUG> Epoche 900: Train MSE=1000000000.000000, Val MSE=0.015648, Val MAE=0.095014, Val MedAE=0.074398, Bit_Fail=11
2026.01.02 15:27:21 1: Forecast DEBUG> Epoche 1000: Train MSE=1000000000.000000, Val MSE=0.015791, Val MAE=0.095716, Val MedAE=0.075298, Bit_Fail=12
2026.01.02 15:27:49 1: Forecast DEBUG> Epoche 1100: Train MSE=1000000000.000000, Val MSE=0.016225, Val MAE=0.097302, Val MedAE=0.076774, Bit_Fail=13
2026.01.02 15:28:18 1: Forecast DEBUG> Epoche 1200: Train MSE=1000000000.000000, Val MSE=0.016665, Val MAE=0.098297, Val MedAE=0.078585, Bit_Fail=14
2026.01.02 15:28:47 1: Forecast DEBUG> Epoche 1300: Train MSE=1000000000.000000, Val MSE=0.017578, Val MAE=0.100028, Val MedAE=0.079492, Bit_Fail=20
2026.01.02 15:29:15 1: Forecast DEBUG> Epoche 1400: Train MSE=1000000000.000000, Val MSE=0.018358, Val MAE=0.101325, Val MedAE=0.077737, Bit_Fail=25
2026.01.02 15:29:44 1: Forecast DEBUG> Epoche 1500: Train MSE=1000000000.000000, Val MSE=0.018669, Val MAE=0.101913, Val MedAE=0.079822, Bit_Fail=26
2026.01.02 15:30:13 1: Forecast DEBUG> Epoche 1600: Train MSE=1000000000.000000, Val MSE=0.018996, Val MAE=0.102511, Val MedAE=0.079035, Bit_Fail=34
2026.01.02 15:30:42 1: Forecast DEBUG> Epoche 1700: Train MSE=1000000000.000000, Val MSE=0.018987, Val MAE=0.102524, Val MedAE=0.079818, Bit_Fail=30
2026.01.02 15:31:11 1: Forecast DEBUG> Epoche 1800: Train MSE=1000000000.000000, Val MSE=0.018987, Val MAE=0.102488, Val MedAE=0.079542, Bit_Fail=30
2026.01.02 15:31:40 1: Forecast DEBUG> Epoche 1900: Train MSE=1000000000.000000, Val MSE=0.019050, Val MAE=0.102544, Val MedAE=0.079273, Bit_Fail=30
2026.01.02 15:32:09 1: Forecast DEBUG> Epoche 2000: Train MSE=1000000000.000000, Val MSE=0.019055, Val MAE=0.102653, Val MedAE=0.078970, Bit_Fail=30
2026.01.02 15:32:09 1: Forecast DEBUG> Early stopping bei Epoche 2000 (no improvement since 2000 epochs)
2026.01.02 15:32:09 1: === Snapshot-Statistik ===
2026.01.02 15:32:09 1: Metric-Improvement Snapshots: 0 (letzte Epoche: 0)
2026.01.02 15:32:09 1: Bit-Improvement Snapshots:    0 (letzte Epoche: 0)
2026.01.02 15:32:09 1: Bit-Tradeoff Snapshots:       0 (letzte Epoche: 0)
2026.01.02 15:32:09 1: Forecast - WARNING - AI FANN Training has no snapshot with Val-MSE < 0.01 generated – saved last model as fallback
2026.01.02 15:32:09 1: Forecast DEBUG> Best Snapshot reloaded from Epoche 1000000000: Train MSE=1000000000.000000, Val MSE=1000000000.000000, Val MAE=1000000000.000000, Val MedAE=1000000000.000000, Bit_Fail=1000000000,
2026.01.02 15:32:09 1: Forecast DEBUG> Run Validation Test with 20% of Input data ...
2026.01.02 15:32:09 1: Forecast DEBUG> Validation finished - Best Training MSE=1000000000.000000, Validation MSE=0.019055, Validation Bit_Fail=30
2026.01.02 15:32:09 1: Forecast DEBUG> Retrain check ->
-- In Normalization Space: --
Train MSE=1000000000.000000
Val MSE=0.019055
Val Mean=0.0191219531
VAL/TRAIN MSE Ratio=0.000000 (limit=2.5)
Diff=999999999.980945 (limit=0.005)
ValStd=0.0000481836 (limit=0.00478048827113824)
-- At Original Scale: --
MAE=791.754713311422
RMSE/MAE=1.3447 (limit=1.5)
Slope=0.285274 (limit=0.7 .. 1.3)
Bias=911.68 (limit=+-395.877356655711)
R2=-0.538504385985321
P95=2131.6658 (limit=3167.01885324569)
P99=3297.0077 (limit=6334.03770649138)
-- Robustness Indicators: --
RMSE relative=54 (limit=20)
BitFail=30 (limit=5)
BitFailRate=0.0222 (limit=0.1)
-> Retrain
2026.01.02 15:32:09 1: Forecast DEBUG> Retry attempt 3 with Seed=22226918
2026.01.02 15:32:09 1: Forecast DEBUG> AI FANN Training started with Params:
num input datasets=6762,
training algo=FANN_TRAIN_RPROP,
output AF=LINEAR,
hidden AF=GAUSSIAN,
hidden Neurons=80,40,20,
hidden steepness=0.9,
Epoches=15000,
mse_error=0.001,
learning rate=0.00100,
learning momentum=0.7,
Data sharing=chronological split and AI internal shuffle of training data (Train=5409, Test=1352),
Data shuffle=1 (period=10)
2026.01.02 15:32:38 1: Forecast DEBUG> Epoche 100: Train MSE=1000000000.000000, Val MSE=0.018329, Val MAE=0.106561, Val MedAE=0.083703, Bit_Fail=8
2026.01.02 15:33:07 1: Forecast DEBUG> Epoche 200: Train MSE=1000000000.000000, Val MSE=0.017746, Val MAE=0.100325, Val MedAE=0.075689, Bit_Fail=14
2026.01.02 15:33:36 1: Forecast DEBUG> Epoche 300: Train MSE=1000000000.000000, Val MSE=0.016846, Val MAE=0.097610, Val MedAE=0.074373, Bit_Fail=15
2026.01.02 15:34:06 1: Forecast DEBUG> Epoche 400: Train MSE=1000000000.000000, Val MSE=0.017833, Val MAE=0.099253, Val MedAE=0.075722, Bit_Fail=20
2026.01.02 15:34:35 1: Forecast DEBUG> Epoche 500: Train MSE=1000000000.000000, Val MSE=0.018241, Val MAE=0.098272, Val MedAE=0.073657, Bit_Fail=23
2026.01.02 15:35:03 1: Forecast DEBUG> Epoche 600: Train MSE=1000000000.000000, Val MSE=0.017867, Val MAE=0.097955, Val MedAE=0.072864, Bit_Fail=22
2026.01.02 15:35:32 1: Forecast DEBUG> Epoche 700: Train MSE=1000000000.000000, Val MSE=0.017065, Val MAE=0.096239, Val MedAE=0.071654, Bit_Fail=20
2026.01.02 15:36:01 1: Forecast DEBUG> Epoche 800: Train MSE=1000000000.000000, Val MSE=0.017742, Val MAE=0.097585, Val MedAE=0.074805, Bit_Fail=19
2026.01.02 15:36:30 1: Forecast DEBUG> Epoche 900: Train MSE=1000000000.000000, Val MSE=0.018770, Val MAE=0.099523, Val MedAE=0.075180, Bit_Fail=23
2026.01.02 15:36:59 1: Forecast DEBUG> Epoche 1000: Train MSE=1000000000.000000, Val MSE=0.020114, Val MAE=0.101971, Val MedAE=0.074459, Bit_Fail=29
2026.01.02 15:37:28 1: Forecast DEBUG> Epoche 1100: Train MSE=1000000000.000000, Val MSE=0.021863, Val MAE=0.103618, Val MedAE=0.073597, Bit_Fail=27
2026.01.02 15:37:57 1: Forecast DEBUG> Epoche 1200: Train MSE=1000000000.000000, Val MSE=0.021288, Val MAE=0.103410, Val MedAE=0.074199, Bit_Fail=26
2026.01.02 15:38:26 1: Forecast DEBUG> Epoche 1300: Train MSE=1000000000.000000, Val MSE=0.021508, Val MAE=0.104028, Val MedAE=0.075004, Bit_Fail=28
2026.01.02 15:38:55 1: Forecast DEBUG> Epoche 1400: Train MSE=1000000000.000000, Val MSE=0.021995, Val MAE=0.104372, Val MedAE=0.075564, Bit_Fail=30
2026.01.02 15:39:24 1: Forecast DEBUG> Epoche 1500: Train MSE=1000000000.000000, Val MSE=0.021136, Val MAE=0.103445, Val MedAE=0.074903, Bit_Fail=29
2026.01.02 15:39:53 1: Forecast DEBUG> Epoche 1600: Train MSE=1000000000.000000, Val MSE=0.020996, Val MAE=0.103193, Val MedAE=0.074388, Bit_Fail=29
2026.01.02 15:40:22 1: Forecast DEBUG> Epoche 1700: Train MSE=1000000000.000000, Val MSE=0.021051, Val MAE=0.103118, Val MedAE=0.074474, Bit_Fail=32
2026.01.02 15:40:51 1: Forecast DEBUG> Epoche 1800: Train MSE=1000000000.000000, Val MSE=0.020881, Val MAE=0.103214, Val MedAE=0.075612, Bit_Fail=32
2026.01.02 15:41:20 1: Forecast DEBUG> Epoche 1900: Train MSE=1000000000.000000, Val MSE=0.021242, Val MAE=0.104091, Val MedAE=0.075997, Bit_Fail=35
2026.01.02 15:41:45 1: PERL WARNING: Argument "" isn't numeric in negation (-) at (eval 2509592) line 3.
2026.01.02 15:41:45 1: PERL WARNING: Argument "" isn't numeric in negation (-) at (eval 2509592) line 4.
2026.01.02 15:41:49 1: Forecast DEBUG> Epoche 2000: Train MSE=1000000000.000000, Val MSE=0.020712, Val MAE=0.103817, Val MedAE=0.076164, Bit_Fail=34
2026.01.02 15:41:49 1: Forecast DEBUG> Early stopping bei Epoche 2000 (no improvement since 2000 epochs)
2026.01.02 15:41:49 1: === Snapshot-Statistik ===
2026.01.02 15:41:49 1: Metric-Improvement Snapshots: 0 (letzte Epoche: 0)
2026.01.02 15:41:49 1: Bit-Improvement Snapshots:    0 (letzte Epoche: 0)
2026.01.02 15:41:49 1: Bit-Tradeoff Snapshots:       0 (letzte Epoche: 0)
2026.01.02 15:41:49 1: Forecast - WARNING - AI FANN Training has no snapshot with Val-MSE < 0.01 generated – saved last model as fallback
2026.01.02 15:41:49 1: Forecast DEBUG> Best Snapshot reloaded from Epoche 1000000000: Train MSE=1000000000.000000, Val MSE=1000000000.000000, Val MAE=1000000000.000000, Val MedAE=1000000000.000000, Bit_Fail=1000000000,
2026.01.02 15:41:49 1: Forecast DEBUG> Run Validation Test with 20% of Input data ...
2026.01.02 15:41:49 1: Forecast DEBUG> Validation finished - Best Training MSE=1000000000.000000, Validation MSE=0.020712, Validation Bit_Fail=34
2026.01.02 15:41:49 1: Forecast DEBUG> Retrain check ->
-- In Normalization Space: --
Train MSE=1000000000.000000
Val MSE=0.020712
Val Mean=0.0211855663
VAL/TRAIN MSE Ratio=0.000000 (limit=2.5)
Diff=999999999.979288 (limit=0.005)
ValStd=0.0002708893 (limit=0.00529639158353766)
-- At Original Scale: --
MAE=800.730611933129
RMSE/MAE=1.3862 (limit=1.5)
Slope=0.492568 (limit=0.7 .. 1.3)
Bias=545.57 (limit=+-400.365305966565)
R2=-0.672278283484396
P95=2146.1844 (limit=3202.92244773252)
P99=3750.9096 (limit=6405.84489546503)
-- Robustness Indicators: --
RMSE relative=57 (limit=20)
BitFail=34 (limit=5)
BitFailRate=0.0251 (limit=0.1)
-> Retrain
2026.01.02 15:41:49 1: Forecast DEBUG> Best model after retries comes from Attempt=3 with:
Seed=22226918,
Model Slope=0.49,
Model Bias=545.57,
VAL MedAE=587.45,
VAL MAE=800.73,
VAL RMSE=1110.00,
VAL RMSE relative=57 %,
VAL RMSE_Rating=very bad,
VAL R2=-0.67,
Val MSE=0.020712
2026.01.02 15:41:49 1: Forecast DEBUG> AI FANN training data successfuly written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.01.02 15:41:49 1: Forecast DEBUG> AI FANN con Training BlockingCall PID '559120' finished



Berechnungsauswertung (aiNeuralNetConState)

Informationen zum neuronalen Netz der Verbrauchsvorhersage

letztes KI-Training: 02.01.2026 15:41:49 / Laufzeit in Sekunden: 2303
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 34.02 ms

=== Modellparameter ===

Normierungsgrenzen: PV=17532 W, Hausverbrauch: Min=0 W / Max=7712.9 W
Trainingsdaten: 6762 Datensätze (Training=5409, Validierung=1353)
Architektur: Inputs=34, Hidden Layers=80-40-20, Outputs=1
Hyperparameter: Learning Rate=0.001, Momentum=0.7, BitFail-Limit=0.35
Aktivierungen: Hidden=GAUSSIAN, Steilheit=0.9, Output=LINEAR
Zufallsgenerator: Mode=1, Periode=10

=== Trainingsmetriken ===

bestes Modell bei Epoche: 1000000000 (von max. 15000)
Training MSE: 1000000000.000000
Validation MSE: 0.020712
Validation MSE Average: 0.021186
Validation MSE Standard Deviation: 0.000271
Validation Bit_Fail: 34
Model Bias: 546 Wh
Model Slope: 0.5
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 800.73 Wh
MedAE: 587.45 Wh
RMSE: 1110.00 Wh
RMSE relative: 57 %
RMSE Rating: very bad
MAPE: 37.96 %
MdAPE: 32.68 %
R²: -0.67

=== Drift-Kennzahlen ===

Drift Score: -
Drift RMSE relative: -
Drift Bias: -
Drift Slope: -
Drift Bewertung: -

 Erläuterung der Kennzahlen

Train MSE / Validation MSE → wie gut das Netz trainiert und generalisiert. Daumenregel:
   MSE < 0.01 → sehr gut
   MSE 0.01–0.05 → gut
   MSE > 0.1 → schwach
   Interpretation Verhältnis Train MSE zu Validation MSE:
      Validation ≈ Train → gute Generalisierung
      Validation deutlich größer → Überfitting
      Validation kleiner → Validierungsdaten sind einfacher oder Split begünstigt

Validation Bit_Fail → Anzahl der Ausreißer

MAE (Mean Absolute Error) → mittlere absolute Abweichung in Wh. Richtwerte bei typischem Verbrauch 500–1500 Wh:
   < 100 Wh → sehr gut
   100–300 Wh → gut
   > 300 Wh → schwach

MedAE (Median Absolute Error) → Median der absoluten Fehler in Wh (toleriert einzelne Ausreißer besser)
   < 100 Wh → sehr gut
   100–200 Wh → gut
   200–300 Wh → mittelmäßig
   > 300 Wh → schwach

RMSE relative (Root Mean Squared Error) → mittlere quadratische Abweichung relativ zum Medianverbrauch in %
   Richtwerte:
   < 5% → sehr gut, das Modell trifft fast perfekt
   5–10% → gut, das Modell ist zuverlässig
   10–20% → akzeptabel, das Modell ist brauchbar
   > 20% → schwach, das Modell hat starke Ausreißer
   > 35% → katastrophal, das Modell ist unbrauchbar

MAPE (Mean Absolute Percentage Error) → relative Abweichung in %
   Richtwerte:
   < 10 % → sehr gut - Modell liegt fast immer sehr nah an den echten Werten
   10–20 % → gut - Prognosen sind solide, kleine Abweichungen sind normal
   20–30 % → mittelmäßig / akzeptabel - Modell ist brauchbar, aber nicht präzise – für grobe Trends ok
   > 30 % → schwach - Modell verfehlt die Werte deutlich, oft durch Ausreißer oder fehlende Features
   ⚠️ Vorsicht: bei kleinen Werten (<200 Wh) kann MAPE stark verzerren → MdAPE heranziehen

MdAPE (Median Absolute Percentage Error) → Median der prozentualen Fehler in % (robuster gegenüber kleinen Werten)
   Richtwerte:
   < 10 % → sehr gut
   10–20 % → gut
   20–30 % → mittelmäßig
   > 30 % → schwach

R² (Bestimmtheitsmaß) → Maß für die Erklärungskraft des Modells. Je näher R² an 1 liegt, desto besser.
   R² = 1.0 → perfekte Vorhersage, alle Punkte liegen exakt auf der Regressionslinie
   R² > 0.8 → sehr gut - Modell erfasst den Großteil der Streuung → sehr zuverlässige Prognosen
   R² = 0.6 – 0.8 → gut - Modell erklärt einen soliden Teil der Varianz → brauchbar für viele Anwendungen
   R² = 0.5–0.6 → mäßig / grenzwertig - Modell liegt knapp über ,,zufällig" → Muster erkannt, Prognosen nur eingeschränkt nützlich
   R² < 0.5 → schwach - Modell erklärt weniger als die Hälfte der Varianz → deutlicher Verbesserungsbedarf
   R² = 0.0 → Modell erklärt gar nichts, es ist nicht besser als der Mittelwert der Daten
   R² < 0.0 → Modell ist schlechter als einfach immer den Mittelwert vorherzusagen
   ⚠️ R² ist sehr empfindlich gegenüber Ausreißern und Varianz in den Daten.
                                                                                                                                       


Screenshot Forecast vorher/ nachher

Screenshot zur INFO vom WP-Verbrauch
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

DS_Starter

#4700
Du hast dich gleich an aiConActFunc=GAUSSIAN herangewagt.
Rechne erstmal mit dem Standard SIGMOID. Für GAUSSIAN bzw. WP / EV fehlen uns sehr wahrscheinlich noch die weiter vorn erwähnten Zusatzsignale / Beziehungen damit das Netz diese Verbräche einordnen kann.

Führe auch nochmal

Zitatset ... reset aiData searchValue=con>=7000

aus.

Edit: Dein Netz hat auch garnichts gelernt:
2026.01.02 15:41:49 1: Forecast - WARNING - AI FANN Training has no snapshot with Val-MSE < 0.01 generated – saved last model as fallback
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

Zitat von: DS_Starter am 02 Januar 2026, 16:11:48Du hast dich gleich an aiConActFunc=GAUSSIAN herangewagt.
Rechne erstmal mit dem Standard SIGMOID. Für GAUSSIAN bzw. WP / EV fehlen uns sehr wahrscheinlich noch die weiter vorn erwähnten Zusatzsignale / Beziehungen damit das Netz diese Verbräche einordnen kann.

Führe auch nochmal

Zitatset ... reset aiData searchValue=con>=7000

aus.

Edit: Dein Netz hat auch garnichts gelernt:
2026.01.02 15:41:49 1: Forecast - WARNING - AI FANN Training has no snapshot with Val-MSE < 0.01 generated – saved last model as fallback

A:
....Dein Netz hat auch garnichts gelernt:
->> Ja - das ganze war "umsonst"  ;)

B:
Umgestellt auf Standard SIGMOID

C:
set .... reset aiData delValue=con>=7000 erledigt

D:
....und los geht die Rechnerei mit
aiTrainStart=3
aiStorageDuration=3600
aiTreesPV=30
aiConActivate=1
aiConAlpha=1
aiConTrainStart=3:2
aiConHiddenLayers=80-40-20
aiConActFunc=SIGMOID
aiConLearnRate=0.001
aiConMomentum=0.7
aiConShuffleMode=1
aiConShufflePeriod=10
aiConSteepness=0.9
aiConTrainAlgo=RPROP
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

DS_Starter

Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

2026.01.02 16:47:19 1: Forecast DEBUG> AI FANN Training for Consumption Forecast BlockingCall PID "573689" with Timeout 86400 s started
2026.01.02 16:47:20 1: Forecast DEBUG> AI FANN - There are 30 Records skipped due to incomplete or invalid data. Index:
2025032507, 2025032610, 2025033003, 2025033021, 2025040211, 2025041017, 2025041020, 2025041022, 2025041024, 2025041101, 2025041102, 2025041103, 2025041104, 2025041105, 2025041106, 2025041108, 2025041203, 2025041204, 2025041309, 2025041314, 2025052209, 2025052511, 2025052518, 2025052519, 2025060214, 2025061109, 2025061414, 2025062914, 2025082315, 2025122414
2026.01.02 16:47:21 1: Forecast - DBG F[6749]: lag1=0.452 lag2=0.520 lag24=0.307 d1p=0.000 d1n=0.053 rollstd=0.331 up=0 down=1 upS=0.000 downS=0.053 vol=1 pvX=0 break=0
2026.01.02 16:47:21 1: Forecast - DBG F[6750]: lag1=0.417 lag2=0.452 lag24=0.285 d1p=0.000 d1n=0.000 rollstd=0.271 up=0 down=0 upS=0.000 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 16:47:21 1: Forecast - DBG F[6751]: lag1=0.417 lag2=0.417 lag24=0.273 d1p=0.000 d1n=0.019 rollstd=0.208 up=0 down=1 upS=0.000 downS=0.019 vol=1 pvX=0 break=0
2026.01.02 16:47:21 1: Forecast - DBG F[6752]: lag1=0.404 lag2=0.417 lag24=0.304 d1p=0.000 d1n=0.136 rollstd=0.208 up=0 down=1 upS=0.000 downS=0.136 vol=1 pvX=0 break=0
2026.01.02 16:47:21 1: Forecast - DBG F[6753]: lag1=0.313 lag2=0.404 lag24=0.322 d1p=0.000 d1n=0.115 rollstd=0.243 up=0 down=1 upS=0.000 downS=0.115 vol=1 pvX=0 break=0
2026.01.02 16:47:21 1: Forecast - DBG F[6754]: lag1=0.235 lag2=0.313 lag24=0.287 d1p=0.197 d1n=0.000 rollstd=0.295 up=1 down=0 upS=0.197 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 16:47:21 1: Forecast - DBG F[6755]: lag1=0.344 lag2=0.235 lag24=0.208 d1p=0.000 d1n=0.211 rollstd=0.261 up=0 down=1 upS=0.000 downS=0.211 vol=1 pvX=0 break=1
2026.01.02 16:47:21 1: Forecast - DBG F[6756]: lag1=0.202 lag2=0.344 lag24=0.287 d1p=0.304 d1n=0.000 rollstd=0.315 up=1 down=0 upS=0.304 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 16:47:21 1: Forecast - DBG F[6757]: lag1=0.369 lag2=0.202 lag24=0.402 d1p=0.036 d1n=0.000 rollstd=0.282 up=1 down=0 upS=0.036 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 16:47:21 1: Forecast - DBG F[6758]: lag1=0.389 lag2=0.369 lag24=0.236 d1p=0.000 d1n=0.171 rollstd=0.270 up=0 down=1 upS=0.000 downS=0.171 vol=1 pvX=0 break=1
2026.01.02 16:47:21 1: Forecast - DBG F[6759]: lag1=0.274 lag2=0.389 lag24=0.391 d1p=0.195 d1n=0.000 rollstd=0.274 up=1 down=0 upS=0.195 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 16:47:21 1: Forecast - DBG F[6760]: lag1=0.381 lag2=0.274 lag24=0.337 d1p=0.055 d1n=0.000 rollstd=0.266 up=1 down=0 upS=0.055 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 16:47:21 1: Forecast - DBG F[6761]: lag1=0.411 lag2=0.381 lag24=0.355 d1p=0.000 d1n=0.134 rollstd=0.294 up=0 down=1 upS=0.000 downS=0.134 vol=1 pvX=0 break=1
2026.01.02 16:47:21 1: Forecast - DBG F[6762]: lag1=0.321 lag2=0.411 lag24=0.310 d1p=0.141 d1n=0.000 rollstd=0.183 up=1 down=0 upS=0.141 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 16:47:21 1: Forecast - DBG F[6763]: lag1=0.398 lag2=0.321 lag24=0.376 d1p=0.000 d1n=0.060 rollstd=0.193 up=0 down=1 upS=0.000 downS=0.060 vol=1 pvX=0 break=1
2026.01.02 16:47:21 1: Forecast - DBG F[6764]: lag1=0.358 lag2=0.398 lag24=0.392 d1p=0.000 d1n=0.171 rollstd=0.187 up=0 down=1 upS=0.000 downS=0.171 vol=1 pvX=0 break=0
2026.01.02 16:47:21 1: Forecast - DBG F[6765]: lag1=0.243 lag2=0.358 lag24=0.312 d1p=0.257 d1n=0.000 rollstd=0.224 up=1 down=0 upS=0.257 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 16:47:21 1: Forecast - DBG F[6766]: lag1=0.385 lag2=0.243 lag24=0.607 d1p=0.374 d1n=0.000 rollstd=0.225 up=1 down=0 upS=0.374 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 16:47:22 1: Forecast - DBG F[6767]: lag1=0.591 lag2=0.385 lag24=0.320 d1p=0.000 d1n=0.336 rollstd=0.418 up=0 down=1 upS=0.000 downS=0.336 vol=1 pvX=0 break=1
2026.01.02 16:47:22 1: Forecast - DBG F[6768]: lag1=0.364 lag2=0.591 lag24=0.548 d1p=0.044 d1n=0.000 rollstd=0.406 up=1 down=0 upS=0.044 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 16:47:22 1: Forecast DEBUG> First attempt 0 with Seed=197016
2026.01.02 16:47:22 1: Forecast DEBUG> AI FANN Training started with Params:
num input datasets=6763,
training algo=FANN_TRAIN_RPROP,
output AF=LINEAR,
hidden AF=SIGMOID,
hidden Neurons=80,40,20,
hidden steepness=0.9,
Epoches=15000,
mse_error=0.001,
learning rate=0.00100,
learning momentum=0.7,
Data sharing=chronological split and AI internal shuffle of training data (Train=5410, Test=1352),
Data shuffle=1 (period=10)
2026.01.02 16:47:52 1: Forecast DEBUG> Epoche 100: Train MSE=1000000000.000000, Val MSE=0.016744, Val MAE=0.103059, Val MedAE=0.088929, Bit_Fail=7
2026.01.02 16:48:22 1: Forecast DEBUG> Epoche 200: Train MSE=1000000000.000000, Val MSE=0.017512, Val MAE=0.105107, Val MedAE=0.089985, Bit_Fail=12
2026.01.02 16:48:52 1: Forecast DEBUG> Epoche 300: Train MSE=1000000000.000000, Val MSE=0.013781, Val MAE=0.092000, Val MedAE=0.075631, Bit_Fail=5
2026.01.02 16:49:22 1: Forecast DEBUG> Epoche 400: Train MSE=1000000000.000000, Val MSE=0.016653, Val MAE=0.102272, Val MedAE=0.089215, Bit_Fail=7
2026.01.02 16:49:52 1: Forecast DEBUG> Epoche 500: Train MSE=1000000000.000000, Val MSE=0.015731, Val MAE=0.098671, Val MedAE=0.076848, Bit_Fail=10
2026.01.02 16:50:21 1: Forecast DEBUG> Epoche 600: Train MSE=1000000000.000000, Val MSE=0.019452, Val MAE=0.108804, Val MedAE=0.080266, Bit_Fail=18
2026.01.02 16:50:51 1: Forecast DEBUG> Epoche 700: Train MSE=1000000000.000000, Val MSE=0.022427, Val MAE=0.118184, Val MedAE=0.101526, Bit_Fail=12
2026.01.02 16:51:20 1: Forecast DEBUG> Epoche 800: Train MSE=1000000000.000000, Val MSE=0.022908, Val MAE=0.121775, Val MedAE=0.111710, Bit_Fail=12
2026.01.02 16:51:50 1: Forecast DEBUG> Epoche 900: Train MSE=1000000000.000000, Val MSE=0.022472, Val MAE=0.119617, Val MedAE=0.108460, Bit_Fail=11
2026.01.02 16:52:12 1: PERL WARNING: Argument "" isn't numeric in negation (-) at (eval 2682233) line 3.
2026.01.02 16:52:12 1: PERL WARNING: Argument "" isn't numeric in negation (-) at (eval 2682233) line 4.
2026.01.02 16:52:19 1: Forecast DEBUG> Epoche 1000: Train MSE=1000000000.000000, Val MSE=0.023269, Val MAE=0.122868, Val MedAE=0.113456, Bit_Fail=13
2026.01.02 16:52:49 1: Forecast DEBUG> Epoche 1100: Train MSE=1000000000.000000, Val MSE=0.023198, Val MAE=0.122602, Val MedAE=0.113281, Bit_Fail=13
2026.01.02 16:53:19 1: Forecast DEBUG> Epoche 1200: Train MSE=1000000000.000000, Val MSE=0.023245, Val MAE=0.122744, Val MedAE=0.113301, Bit_Fail=13
2026.01.02 16:53:48 1: Forecast DEBUG> Epoche 1300: Train MSE=1000000000.000000, Val MSE=0.023185, Val MAE=0.122575, Val MedAE=0.112815, Bit_Fail=13
2026.01.02 16:54:18 1: Forecast DEBUG> Epoche 1400: Train MSE=1000000000.000000, Val MSE=0.023265, Val MAE=0.122811, Val MedAE=0.113397, Bit_Fail=13
2026.01.02 16:54:47 1: Forecast DEBUG> Epoche 1500: Train MSE=1000000000.000000, Val MSE=0.023209, Val MAE=0.122646, Val MedAE=0.112903, Bit_Fail=13
2026.01.02 16:55:17 1: Forecast DEBUG> Epoche 1600: Train MSE=1000000000.000000, Val MSE=0.023227, Val MAE=0.122698, Val MedAE=0.113134, Bit_Fail=13
2026.01.02 16:55:46 1: Forecast DEBUG> Epoche 1700: Train MSE=1000000000.000000, Val MSE=0.023194, Val MAE=0.122602, Val MedAE=0.112782, Bit_Fail=13
2026.01.02 16:56:16 1: Forecast DEBUG> Epoche 1800: Train MSE=1000000000.000000, Val MSE=0.023271, Val MAE=0.122830, Val MedAE=0.113407, Bit_Fail=13
2026.01.02 16:56:45 1: Forecast DEBUG> Epoche 1900: Train MSE=1000000000.000000, Val MSE=0.022992, Val MAE=0.121994, Val MedAE=0.112084, Bit_Fail=13
2026.01.02 16:57:15 1: Forecast DEBUG> Epoche 2000: Train MSE=1000000000.000000, Val MSE=0.023373, Val MAE=0.123140, Val MedAE=0.113772, Bit_Fail=13
2026.01.02 16:57:15 1: Forecast DEBUG> Early stopping bei Epoche 2000 (no improvement since 2000 epochs)
2026.01.02 16:57:15 1: === Snapshot-Statistik ===
2026.01.02 16:57:15 1: Metric-Improvement Snapshots: 0 (letzte Epoche: 0)
2026.01.02 16:57:15 1: Bit-Improvement Snapshots:    0 (letzte Epoche: 0)
2026.01.02 16:57:15 1: Bit-Tradeoff Snapshots:       0 (letzte Epoche: 0)
2026.01.02 16:57:15 1: PERL WARNING: Wide character in print at fhem.pl line 1026.
2026.01.02 16:57:15 1: Forecast - WARNING - AI FANN Training has no snapshot with Val-MSE < 0.01 generated – saved last model as fallback
2026.01.02 16:57:15 1: Forecast DEBUG> Best Snapshot reloaded from Epoche 1000000000: Train MSE=1000000000.000000, Val MSE=1000000000.000000, Val MAE=1000000000.000000, Val MedAE=1000000000.000000, Bit_Fail=1000000000,
2026.01.02 16:57:15 1: Forecast DEBUG> Run Validation Test with 20% of Input data ...
2026.01.02 16:57:15 1: Forecast DEBUG> Validation finished - Best Training MSE=1000000000.000000, Validation MSE=0.023373, Validation Bit_Fail=13
2026.01.02 16:57:15 1: Forecast DEBUG> Retrain check ->
-- In Normalization Space: --
Train MSE=1000000000.000000
Val MSE=0.023373
Val Mean=0.0231742188
VAL/TRAIN MSE Ratio=0.000000 (limit=2.5)
Diff=999999999.976627 (limit=0.005)
ValStd=0.0001249741 (limit=0.00579355470662871)
-- At Original Scale: --
MAE=949.768982822631
RMSE/MAE=1.2415 (limit=1.5)
Slope=0.117968 (limit=0.7 .. 1.3)
Bias=1029.15 (limit=+-474.884491411315)
R2=-0.885610811762048
P95=2195.7830 (limit=3799.07593129052)
P99=2691.5139 (limit=7598.15186258104)
-- Robustness Indicators: --
RMSE relative=60 (limit=20)
BitFail=13 (limit=5)
BitFailRate=0.0096 (limit=0.1)
-> Retrain
2026.01.02 16:57:15 1: Forecast DEBUG> Retry attempt 1 with Seed=7448165
2026.01.02 16:57:15 1: Forecast DEBUG> AI FANN Training started with Params:
num input datasets=6763,
training algo=FANN_TRAIN_RPROP,
output AF=LINEAR,
hidden AF=SIGMOID,
hidden Neurons=80,40,20,
hidden steepness=0.9,
Epoches=15000,
mse_error=0.001,
learning rate=0.00100,
learning momentum=0.7,
Data sharing=chronological split and AI internal shuffle of training data (Train=5410, Test=1352),
Data shuffle=1 (period=10)
2026.01.02 16:57:44 1: Forecast DEBUG> Epoche 100: Train MSE=1000000000.000000, Val MSE=0.022733, Val MAE=0.121386, Val MedAE=0.111614, Bit_Fail=12

Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

DS_Starter

Kannst du abbrechen denke ich, das Netz lernt nicht -> Train MSE=1000000000.000000,
set ... aiDecTree stopConTrain
Ich würde empfehlen erstmal mit dem Standard zu starten, also alle aiCon* entfernen außer

aiConActivate=1
aiConAlpha=1
aiConTrainStart=3:2

Dann anstarten.

Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

Gestartet mit
aiTrainStart=3
aiStorageDuration=3600
aiTreesPV=30
aiConActivate=1
aiConAlpha=1
aiConTrainStart=3:2



Log...
2026.01.02 17:12:23 1: Forecast DEBUG> AI FANN Training for Consumption Forecast BlockingCall PID "577270" with Timeout 86400 s started
2026.01.02 17:12:24 1: Forecast DEBUG> AI FANN - There are 30 Records skipped due to incomplete or invalid data. Index:
2025032507, 2025032610, 2025033003, 2025033021, 2025040211, 2025041017, 2025041020, 2025041022, 2025041024, 2025041101, 2025041102, 2025041103, 2025041104, 2025041105, 2025041106, 2025041108, 2025041203, 2025041204, 2025041309, 2025041314, 2025052209, 2025052511, 2025052518, 2025052519, 2025060214, 2025061109, 2025061414, 2025062914, 2025082315, 2025122414
2026.01.02 17:12:25 1: Forecast - DBG F[6750]: lag1=0.417 lag2=0.452 lag24=0.285 d1p=0.000 d1n=0.000 rollstd=0.271 up=0 down=0 upS=0.000 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 17:12:25 1: Forecast - DBG F[6751]: lag1=0.417 lag2=0.417 lag24=0.273 d1p=0.000 d1n=0.019 rollstd=0.208 up=0 down=1 upS=0.000 downS=0.019 vol=1 pvX=0 break=0
2026.01.02 17:12:25 1: Forecast - DBG F[6752]: lag1=0.404 lag2=0.417 lag24=0.304 d1p=0.000 d1n=0.136 rollstd=0.208 up=0 down=1 upS=0.000 downS=0.136 vol=1 pvX=0 break=0
2026.01.02 17:12:25 1: Forecast - DBG F[6753]: lag1=0.313 lag2=0.404 lag24=0.322 d1p=0.000 d1n=0.115 rollstd=0.243 up=0 down=1 upS=0.000 downS=0.115 vol=1 pvX=0 break=0
2026.01.02 17:12:25 1: Forecast - DBG F[6754]: lag1=0.235 lag2=0.313 lag24=0.287 d1p=0.197 d1n=0.000 rollstd=0.295 up=1 down=0 upS=0.197 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 17:12:25 1: Forecast - DBG F[6755]: lag1=0.344 lag2=0.235 lag24=0.208 d1p=0.000 d1n=0.211 rollstd=0.261 up=0 down=1 upS=0.000 downS=0.211 vol=1 pvX=0 break=1
2026.01.02 17:12:25 1: Forecast - DBG F[6756]: lag1=0.202 lag2=0.344 lag24=0.287 d1p=0.304 d1n=0.000 rollstd=0.315 up=1 down=0 upS=0.304 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 17:12:25 1: Forecast - DBG F[6757]: lag1=0.369 lag2=0.202 lag24=0.402 d1p=0.036 d1n=0.000 rollstd=0.282 up=1 down=0 upS=0.036 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 17:12:25 1: Forecast - DBG F[6758]: lag1=0.389 lag2=0.369 lag24=0.236 d1p=0.000 d1n=0.171 rollstd=0.270 up=0 down=1 upS=0.000 downS=0.171 vol=1 pvX=0 break=1
2026.01.02 17:12:25 1: Forecast - DBG F[6759]: lag1=0.274 lag2=0.389 lag24=0.391 d1p=0.195 d1n=0.000 rollstd=0.274 up=1 down=0 upS=0.195 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 17:12:25 1: Forecast - DBG F[6760]: lag1=0.381 lag2=0.274 lag24=0.337 d1p=0.055 d1n=0.000 rollstd=0.266 up=1 down=0 upS=0.055 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 17:12:25 1: Forecast - DBG F[6761]: lag1=0.411 lag2=0.381 lag24=0.355 d1p=0.000 d1n=0.134 rollstd=0.294 up=0 down=1 upS=0.000 downS=0.134 vol=1 pvX=0 break=1
2026.01.02 17:12:25 1: Forecast - DBG F[6762]: lag1=0.321 lag2=0.411 lag24=0.310 d1p=0.141 d1n=0.000 rollstd=0.183 up=1 down=0 upS=0.141 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 17:12:25 1: Forecast - DBG F[6763]: lag1=0.398 lag2=0.321 lag24=0.376 d1p=0.000 d1n=0.060 rollstd=0.193 up=0 down=1 upS=0.000 downS=0.060 vol=1 pvX=0 break=1
2026.01.02 17:12:25 1: Forecast - DBG F[6764]: lag1=0.358 lag2=0.398 lag24=0.392 d1p=0.000 d1n=0.171 rollstd=0.187 up=0 down=1 upS=0.000 downS=0.171 vol=1 pvX=0 break=0
2026.01.02 17:12:25 1: Forecast - DBG F[6765]: lag1=0.243 lag2=0.358 lag24=0.312 d1p=0.257 d1n=0.000 rollstd=0.224 up=1 down=0 upS=0.257 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 17:12:25 1: Forecast - DBG F[6766]: lag1=0.385 lag2=0.243 lag24=0.607 d1p=0.374 d1n=0.000 rollstd=0.225 up=1 down=0 upS=0.374 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 17:12:25 1: Forecast - DBG F[6767]: lag1=0.591 lag2=0.385 lag24=0.320 d1p=0.000 d1n=0.336 rollstd=0.418 up=0 down=1 upS=0.000 downS=0.336 vol=1 pvX=0 break=1
2026.01.02 17:12:25 1: Forecast - DBG F[6768]: lag1=0.364 lag2=0.591 lag24=0.548 d1p=0.044 d1n=0.000 rollstd=0.406 up=1 down=0 upS=0.044 downS=0.000 vol=1 pvX=0 break=1
2026.01.02 17:12:25 1: Forecast - DBG F[6769]: lag1=0.389 lag2=0.364 lag24=0.407 d1p=0.156 d1n=0.000 rollstd=0.406 up=1 down=0 upS=0.156 downS=0.000 vol=1 pvX=0 break=0
2026.01.02 17:12:26 1: Forecast DEBUG> First attempt 0 with Seed=761448
2026.01.02 17:12:26 1: Forecast DEBUG> AI FANN Training started with Params:
num input datasets=6764,
training algo=FANN_TRAIN_INCREMENTAL,
output AF=LINEAR,
hidden AF=SIGMOID,
hidden Neurons=80,40,20,
hidden steepness=0.9,
Epoches=15000,
mse_error=0.001,
learning rate=0.00500,
learning momentum=0.5,
Data sharing=split after shuffle of training data and use AI internal shuffle (Train=5411, Test=1352),
Data shuffle=2 (period=10)
2026.01.02 17:13:01 1: Forecast DEBUG> Epoche 100: Train MSE=1000000000.000000, Val MSE=0.018269, Val MAE=0.108877, Val MedAE=0.098544, Bit_Fail=5
2026.01.02 17:13:36 1: Forecast DEBUG> Epoche 200: Train MSE=1000000000.000000, Val MSE=0.019628, Val MAE=0.111858, Val MedAE=0.096686, Bit_Fail=10
2026.01.02 17:14:10 1: Forecast DEBUG> Epoche 300: Train MSE=1000000000.000000, Val MSE=0.019012, Val MAE=0.108539, Val MedAE=0.090453, Bit_Fail=10
2026.01.02 17:14:46 1: Forecast DEBUG> Epoche 400: Train MSE=1000000000.000000, Val MSE=0.018337, Val MAE=0.103266, Val MedAE=0.079860, Bit_Fail=15
2026.01.02 17:15:21 1: Forecast DEBUG> Epoche 500: Train MSE=1000000000.000000, Val MSE=0.022336, Val MAE=0.114564, Val MedAE=0.089991, Bit_Fail=27
2026.01.02 17:15:56 1: Forecast DEBUG> Epoche 600: Train MSE=1000000000.000000, Val MSE=0.022706, Val MAE=0.113909, Val MedAE=0.087080, Bit_Fail=39
2026.01.02 17:16:31 1: Forecast DEBUG> Epoche 700: Train MSE=1000000000.000000, Val MSE=0.022161, Val MAE=0.111194, Val MedAE=0.084188, Bit_Fail=41
2026.01.02 17:17:06 1: Forecast DEBUG> Epoche 800: Train MSE=1000000000.000000, Val MSE=0.020794, Val MAE=0.106915, Val MedAE=0.079690, Bit_Fail=35
2026.01.02 17:17:41 1: Forecast DEBUG> Epoche 900: Train MSE=1000000000.000000, Val MSE=0.016849, Val MAE=0.095971, Val MedAE=0.069398, Bit_Fail=24
2026.01.02 17:18:16 1: Forecast DEBUG> Epoche 1000: Train MSE=1000000000.000000, Val MSE=0.019173, Val MAE=0.102872, Val MedAE=0.075847, Bit_Fail=26
2026.01.02 17:18:51 1: Forecast DEBUG> Epoche 1100: Train MSE=1000000000.000000, Val MSE=0.017537, Val MAE=0.098355, Val MedAE=0.070702, Bit_Fail=22
2026.01.02 17:19:26 1: Forecast DEBUG> Epoche 1200: Train MSE=1000000000.000000, Val MSE=0.015727, Val MAE=0.093315, Val MedAE=0.066904, Bit_Fail=13
2026.01.02 17:20:01 1: Forecast DEBUG> Epoche 1300: Train MSE=1000000000.000000, Val MSE=0.015457, Val MAE=0.092751, Val MedAE=0.067697, Bit_Fail=9
2026.01.02 17:20:36 1: Forecast DEBUG> Epoche 1400: Train MSE=1000000000.000000, Val MSE=0.012232, Val MAE=0.083784, Val MedAE=0.061600, Bit_Fail=4
2026.01.02 17:21:11 1: Forecast DEBUG> Epoche 1500: Train MSE=1000000000.000000, Val MSE=0.012680, Val MAE=0.084565, Val MedAE=0.061643, Bit_Fail=4
2026.01.02 17:21:46 1: Forecast DEBUG> Epoche 1600: Train MSE=1000000000.000000, Val MSE=0.015343, Val MAE=0.093152, Val MedAE=0.071735, Bit_Fail=5
2026.01.02 17:22:11 1: SMAInverter SB25 -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated
2026.01.02 17:22:21 1: Forecast DEBUG> Epoche 1700: Train MSE=1000000000.000000, Val MSE=0.014281, Val MAE=0.089801, Val MedAE=0.068234, Bit_Fail=4
2026.01.02 17:22:56 1: Forecast DEBUG> Epoche 1800: Train MSE=1000000000.000000, Val MSE=0.012509, Val MAE=0.083748, Val MedAE=0.061437, Bit_Fail=4
2026.01.02 17:23:31 1: Forecast DEBUG> Epoche 1900: Train MSE=1000000000.000000, Val MSE=0.013305, Val MAE=0.086246, Val MedAE=0.064631, Bit_Fail=4
2026.01.02 17:24:07 1: Forecast DEBUG> Epoche 2000: Train MSE=1000000000.000000, Val MSE=0.011594, Val MAE=0.080660, Val MedAE=0.059016, Bit_Fail=2
2026.01.02 17:24:07 1: Forecast DEBUG> Early stopping bei Epoche 2000 (no improvement since 2000 epochs)
2026.01.02 17:24:07 1: === Snapshot-Statistik ===
2026.01.02 17:24:07 1: Metric-Improvement Snapshots: 0 (letzte Epoche: 0)
2026.01.02 17:24:07 1: Bit-Improvement Snapshots:    0 (letzte Epoche: 0)
2026.01.02 17:24:07 1: Bit-Tradeoff Snapshots:       0 (letzte Epoche: 0)
2026.01.02 17:24:07 1: PERL WARNING: Wide character in print at fhem.pl line 1026.
2026.01.02 17:24:07 1: Forecast - WARNING - AI FANN Training has no snapshot with Val-MSE < 0.01 generated – saved last model as fallback
2026.01.02 17:24:07 1: Forecast DEBUG> Best Snapshot reloaded from Epoche 1000000000: Train MSE=1000000000.000000, Val MSE=1000000000.000000, Val MAE=1000000000.000000, Val MedAE=1000000000.000000, Bit_Fail=1000000000,
2026.01.02 17:24:07 1: Forecast DEBUG> Run Validation Test with 20% of Input data ...
2026.01.02 17:24:07 1: Forecast DEBUG> Validation finished - Best Training MSE=1000000000.000000, Validation MSE=0.011594, Validation Bit_Fail=2
2026.01.02 17:24:07 1: Forecast DEBUG> Retrain check ->
-- In Normalization Space: --
Train MSE=1000000000.000000
Val MSE=0.011594
Val Mean=0.0130707321
VAL/TRAIN MSE Ratio=0.000000 (limit=2.5)
Diff=999999999.988406 (limit=0.005)
ValStd=0.0011420384 (limit=0.00326768303160726)
-- At Original Scale: --
MAE=622.11963525462
RMSE/MAE=1.3349 (limit=1.5)
Slope=0.455435 (limit=0.7 .. 1.3)
Bias=681.30 (limit=+-311.05981762731)
R2=0.0667317286451781
P95=1804.1909 (limit=2488.47854101848)
P99=2331.1314 (limit=4976.95708203696)
-- Robustness Indicators: --
RMSE relative=42 (limit=20)
BitFail=2 (limit=5)
BitFailRate=0.0015 (limit=0.1)
-> Retrain
2026.01.02 17:24:07 1: Forecast DEBUG> Retry attempt 1 with Seed=28624857
2026.01.02 17:24:07 1: Forecast DEBUG> AI FANN Training started with Params:
num input datasets=6764,
training algo=FANN_TRAIN_INCREMENTAL,
output AF=LINEAR,
hidden AF=SIGMOID,
hidden Neurons=80,40,20,
hidden steepness=0.9,
Epoches=15000,
mse_error=0.001,
learning rate=0.00500,
learning momentum=0.5,
Data sharing=split after shuffle of training data and use AI internal shuffle (Train=5411, Test=1352),
Data shuffle=2 (period=10)
Leider wieder...:
2026.01.02 17:24:07 1: Forecast DEBUG> Epoche 2000: Train MSE=1000000000.000000, Val MSE=0.011594, Val MAE=0.080660, Val MedAE=0.059016, Bit_Fail=2
2026.01.02 17:24:07 1: Forecast DEBUG> Early stopping bei Epoche 2000 (no improvement since 2000 epochs)
2
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

DS_Starter

Ja, lass erstmal durchlaufen und poste dann das gesamte Log (als File anhängen) + die Metriken mit get ... aiNeuralNetConState
Und dann noch die Rohdaten aus "get ... valDecTree aiRawData" auch am Besten als File angehängt.
Irgendwas stimmt da nicht und das muß ich mir in Ruhe anschauen.

Hatte ich bei mir noch nie gesehen. ;) 
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

A:
Metriken mit get ... aiNeuralNetConState

nformationen zum neuronalen Netz der Verbrauchsvorhersage

letztes KI-Training: 02.01.2026 17:59:33 / Laufzeit in Sekunden: 2829
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 30.92 ms

=== Modellparameter ===

Normierungsgrenzen: PV=17532 W, Hausverbrauch: Min=0 W / Max=7712.9 W
Trainingsdaten: 6764 Datensätze (Training=5411, Validierung=1353)
Architektur: Inputs=34, Hidden Layers=80-40-20, Outputs=1
Hyperparameter: Learning Rate=0.005, Momentum=0.5, BitFail-Limit=0.35
Aktivierungen: Hidden=SIGMOID, Steilheit=0.9, Output=LINEAR
Zufallsgenerator: Mode=2, Periode=10

=== Trainingsmetriken ===

bestes Modell bei Epoche: 1000000000 (von max. 15000)
Training MSE: 1000000000.000000
Validation MSE: 0.014249
Validation MSE Average: 0.013867
Validation MSE Standard Deviation: 0.000222
Validation Bit_Fail: 7
Model Bias: 669 Wh
Model Slope: 0.4
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 683.12 Wh
MedAE: 487.59 Wh
RMSE: 920.67 Wh
RMSE relative: 47 %
RMSE Rating: very bad
MAPE: 30.33 %
MdAPE: 28.98 %
R²: -0.15

=== Drift-Kennzahlen ===

Drift Score: -
Drift RMSE relative: -
Drift Bias: -
Drift Slope: -
Drift Bewertung: -

 Erläuterung der Kennzahlen

Train MSE / Validation MSE → wie gut das Netz trainiert und generalisiert. Daumenregel:
   MSE < 0.01 → sehr gut
   MSE 0.01–0.05 → gut
   MSE > 0.1 → schwach
   Interpretation Verhältnis Train MSE zu Validation MSE:
      Validation ≈ Train → gute Generalisierung
      Validation deutlich größer → Überfitting
      Validation kleiner → Validierungsdaten sind einfacher oder Split begünstigt

Validation Bit_Fail → Anzahl der Ausreißer

MAE (Mean Absolute Error) → mittlere absolute Abweichung in Wh. Richtwerte bei typischem Verbrauch 500–1500 Wh:
   < 100 Wh → sehr gut
   100–300 Wh → gut
   > 300 Wh → schwach

MedAE (Median Absolute Error) → Median der absoluten Fehler in Wh (toleriert einzelne Ausreißer besser)
   < 100 Wh → sehr gut
   100–200 Wh → gut
   200–300 Wh → mittelmäßig
   > 300 Wh → schwach

RMSE relative (Root Mean Squared Error) → mittlere quadratische Abweichung relativ zum Medianverbrauch in %
   Richtwerte:
   < 5% → sehr gut, das Modell trifft fast perfekt
   5–10% → gut, das Modell ist zuverlässig
   10–20% → akzeptabel, das Modell ist brauchbar
   > 20% → schwach, das Modell hat starke Ausreißer
   > 35% → katastrophal, das Modell ist unbrauchbar

MAPE (Mean Absolute Percentage Error) → relative Abweichung in %
   Richtwerte:
   < 10 % → sehr gut - Modell liegt fast immer sehr nah an den echten Werten
   10–20 % → gut - Prognosen sind solide, kleine Abweichungen sind normal
   20–30 % → mittelmäßig / akzeptabel - Modell ist brauchbar, aber nicht präzise – für grobe Trends ok
   > 30 % → schwach - Modell verfehlt die Werte deutlich, oft durch Ausreißer oder fehlende Features
   ⚠️ Vorsicht: bei kleinen Werten (<200 Wh) kann MAPE stark verzerren → MdAPE heranziehen

MdAPE (Median Absolute Percentage Error) → Median der prozentualen Fehler in % (robuster gegenüber kleinen Werten)
   Richtwerte:
   < 10 % → sehr gut
   10–20 % → gut
   20–30 % → mittelmäßig
   > 30 % → schwach

R² (Bestimmtheitsmaß) → Maß für die Erklärungskraft des Modells. Je näher R² an 1 liegt, desto besser.
   R² = 1.0 → perfekte Vorhersage, alle Punkte liegen exakt auf der Regressionslinie
   R² > 0.8 → sehr gut - Modell erfasst den Großteil der Streuung → sehr zuverlässige Prognosen
   R² = 0.6 – 0.8 → gut - Modell erklärt einen soliden Teil der Varianz → brauchbar für viele Anwendungen
   R² = 0.5–0.6 → mäßig / grenzwertig - Modell liegt knapp über ,,zufällig" → Muster erkannt, Prognosen nur eingeschränkt nützlich
   R² < 0.5 → schwach - Modell erklärt weniger als die Hälfte der Varianz → deutlicher Verbesserungsbedarf
   R² = 0.0 → Modell erklärt gar nichts, es ist nicht besser als der Mittelwert der Daten
   R² < 0.0 → Modell ist schlechter als einfach immer den Mittelwert vorherzusagen
   ⚠️ R² ist sehr empfindlich gegenüber Ausreißern und Varianz in den Daten.

                                                                                                                                           

Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

grappa24

#4708
neue Trainingswerte nach einem
set ... reset aiData delValue=con>=5000  (Wert deinem Haushalt anpassen)
Informationen zum neuronalen Netz der Verbrauchsvorhersage
letztes KI-Training: 02.01.2026 18:59:55 / Laufzeit in Sekunden: 8731
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 59.05 ms

=== Modellparameter ===

Normierungsgrenzen: PV=13080 W, Hausverbrauch: Min=0 W / Max=6467.5 W
Trainingsdaten: 7936 Datensätze (Training=6348, Validierung=1588)
Architektur: Inputs=34, Hidden Layers=50-25, Outputs=1
Hyperparameter: Learning Rate=0.005, Momentum=0.5, BitFail-Limit=0.35
Aktivierungen: Hidden=SIGMOID, Steilheit=0.9, Output=LINEAR
Zufallsgenerator: Mode=2, Periode=10

=== Trainingsmetriken ===

bestes Modell bei Epoche: 30 (von max. 15000)
Training MSE: 0.002640
Validation MSE: 0.001756
Validation MSE Average: 0.002335
Validation MSE Standard Deviation: 0.000146
Validation Bit_Fail: 1
Model Bias: 72 Wh
Model Slope: 0.9
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 158.76 Wh
MedAE: 86.91 Wh
RMSE: 271.05 Wh
RMSE relative: 65 %
RMSE Rating: very bad
MAPE: 25.49 %
MdAPE: 19.83 %
R²: 0.84

=== Drift-Kennzahlen ===

Drift Score: -
Drift RMSE relative: -
Drift Bias: -
Drift Slope: -
Drift Bewertung: -

 Erläuterung der Kennzahlen
Train MSE / Validation MSE → wie gut das Netz trainiert und generalisiert. Daumenregel:
   MSE < 0.01 → sehr gut
   MSE 0.01–0.05 → gut
   MSE > 0.1 → schwach
   Interpretation Verhältnis Train MSE zu Validation MSE:
      Validation ≈ Train → gute Generalisierung
      Validation deutlich größer → Überfitting
      Validation kleiner → Validierungsdaten sind einfacher oder Split begünstigt

Validation Bit_Fail → Anzahl der Ausreißer

MAE (Mean Absolute Error) → mittlere absolute Abweichung in Wh. Richtwerte bei typischem Verbrauch 500–1500 Wh:
   < 100 Wh → sehr gut
   100–300 Wh → gut
   > 300 Wh → schwach

MedAE (Median Absolute Error) → Median der absoluten Fehler in Wh (toleriert einzelne Ausreißer besser)
   < 100 Wh → sehr gut
   100–200 Wh → gut
   200–300 Wh → mittelmäßig
   > 300 Wh → schwach

RMSE relative (Root Mean Squared Error) → mittlere quadratische Abweichung relativ zum Medianverbrauch in %
   Richtwerte:
   < 5% → sehr gut, das Modell trifft fast perfekt
   5–10% → gut, das Modell ist zuverlässig
   10–20% → akzeptabel, das Modell ist brauchbar
   > 20% → schwach, das Modell hat starke Ausreißer
   > 35% → katastrophal, das Modell ist unbrauchbar

MAPE (Mean Absolute Percentage Error) → relative Abweichung in %
   Richtwerte:
   < 10 % → sehr gut - Modell liegt fast immer sehr nah an den echten Werten
   10–20 % → gut - Prognosen sind solide, kleine Abweichungen sind normal
   20–30 % → mittelmäßig / akzeptabel - Modell ist brauchbar, aber nicht präzise – für grobe Trends ok
   > 30 % → schwach - Modell verfehlt die Werte deutlich, oft durch Ausreißer oder fehlende Features
   ⚠️ Vorsicht: bei kleinen Werten (<200 Wh) kann MAPE stark verzerren → MdAPE heranziehen

MdAPE (Median Absolute Percentage Error) → Median der prozentualen Fehler in % (robuster gegenüber kleinen Werten)
   Richtwerte:
   < 10 % → sehr gut
   10–20 % → gut
   20–30 % → mittelmäßig
   > 30 % → schwach

R² (Bestimmtheitsmaß) → Maß für die Erklärungskraft des Modells. Je näher R² an 1 liegt, desto besser.
   R² = 1.0 → perfekte Vorhersage, alle Punkte liegen exakt auf der Regressionslinie
   R² > 0.8 → sehr gut - Modell erfasst den Großteil der Streuung → sehr zuverlässige Prognosen
   R² = 0.6 – 0.8 → gut - Modell erklärt einen soliden Teil der Varianz → brauchbar für viele Anwendungen
   R² = 0.5–0.6 → mäßig / grenzwertig - Modell liegt knapp über ,,zufällig" → Muster erkannt, Prognosen nur eingeschränkt nützlich
   R² < 0.5 → schwach - Modell erklärt weniger als die Hälfte der Varianz → deutlicher Verbesserungsbedarf
   R² = 0.0 → Modell erklärt gar nichts, es ist nicht besser als der Mittelwert der Daten
   R² < 0.0 → Modell ist schlechter als einfach immer den Mittelwert vorherzusagen
   ⚠️ R² ist sehr empfindlich gegenüber Ausreißern und Varianz in den Daten.

Und hier bei Bedarf zum Download mein Debug-Log und die Daten von valDecTree aiRawData:
https://1drv.ms/f/c/b03433bb7f8ba74d/IgC-d63e5_yHT7ZFdCPOUdwGAQRgUMOWZPEuCFff-3mnkDo?e=hWdRu8
Gebäudesicherheit/-komfort, PV-Prognose/Verbrauchssteuerung, Heizungssteuerung, Multimedia, ...
KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200, Netatmo, Nuki, SolarForecast, HEOS, Alexa-FHEM, ...
FHEM 6.4, 2 x RasPi 3B+, Debian Bullseye