76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

peterboeckmann

#6435
Hallo Heiko,

Meine Visualisierung anbei.
Das sieht mir im Moment für die Nachtstunden recht niedrig aus und für den Tag tendenziell etwas zu hoch. Aber mal abwarten.
Edit: bei PV-Überschuss laufen im Keller zwei Luftentfeuchter und bei den Temperaturen morgen sicher auch wieder die Klimaanlage. Daher sind die gut 2 kWh/h nicht total unrealistisch.

Die Steepness habe ich tatsächlich in 0.1-Schritten von 0.9 auf 0.1 an abgesenkt.
Und die Hidden Layers habe ich bis 26-16 vergrößert, bis dem Modul die Komplexität zu hoch wurde und dann wieder auf 22-12 verkleinert.
Alles aufgrund der Meldung:
Konvergenz erfolgt früh, Momentum/Lernrate sind bereits konservativ: um mehr nützliche Epochen vor dem Early-Stopping zu ermöglichen, aiConSteepness leicht reduzieren (z.B. um 0.1) für langsamere, feinere Konvergenz - bei zu niedrigen aiConSteepness-Wert kann das Netz komplett aufhören zu lernen (Slope≈0); alternativ Hidden-Layer-Größe/Tiefe (aiConHiddenLayers) leicht erhöhen für mehr Lernkapazität, was aber ggf. mehr Trainingsdaten erfordertDiese kam jetzt beim nächsten Retrain mit unveränderten Parametern übrigens wieder.
Ist es überhaupt sinnvoll, ohne Änderung irgendwelcher Parameter und ohne viele neue Daten aufgezeichnet zu haben, neu zu trainieren?

Das Log habe ich heute nicht mitlaufen lassen, kann ich morgen aber nochmal tun. Welches Flag war das nochmal im attr ctrlDebug? aiProcess?

Viele Grüße,
Peter
MQTT,Modbus,HTTPMod,DbLog,LaCrosse,SolarForecast,TelegramBot,Twilight,vitoconnect,withings
fhem,fhempy,debmatic
Debian
RaspberryPi5,HomeMatic,HomeMaticIP,Shelly,JeeLink,SignalDuino,ZWDongle,SONOS,alexa,Hue,tradfri,MobileAlerts,Siemens Home Connect,Roborock S50,Wallbox,Harmony,Tuya Smartlife

300P

Gruß
300P

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

DS_Starter

Das Problem mit der frühen Konvergenz kann man vllt. auch mit anderen Einstellungen lösen. Muß man sich Trainingslog mal anschauen.

ZitatIst es überhaupt sinnvoll, ohne Änderung irgendwelcher Parameter und ohne viele neue Daten aufgezeichnet zu haben, neu zu trainieren?
Ja, ist es. Es wird kaum beachtet, aber das NN bekommt mit jedem Trainingslauf einen sogenannten Seed, der jedesmal anders ist:

2026.06.22 21:22:08.338 1: openMeteo1 DEBUG> First attempt 0 with Seed=28704

Die Bedeutung kann ich nicht besser beschreiben als das LLM meines Vertrauens:

Bedeutung des wechselnden Seeds beim Trainingsstart
Der Seed steuert den Zufallszahlengenerator, der beim FANN-Training an zwei entscheidenden Stellen wirkt:

1. Gewichtsinitialisierung
Vor dem ersten Epoch werden alle Netzgewichte zufällig initialisiert. Der Seed bestimmt diese Startpositionen im Gewichtsraum. Verschiedene Seeds → verschiedene Startpunkte → potenziell verschiedene lokale Minima, in die der Gradient Descent konvergiert.

2. Trainings-Datenmischung (Shuffling)
Falls dein Training die Samples vor jedem Epoch mischt (bei INCREMENTAL oft implizit), beeinflusst der Seed auch die Reihenfolge der Präsentation.

Was ein wechselnder Seed bedeutet
Pro Lauf unterschiedliche Konvergenz:

- Jeder Trainingslauf startet von einem anderen Punkt im Gewichtsraum
- Das Netz kann in unterschiedliche lokale Minima laufen
- Ergebnisse (R², RMSE, Slope) variieren zwischen Läufen ohne Änderung der Daten oder Hyperparameter


ZitatDas Log habe ich heute nicht mitlaufen lassen, kann ich morgen aber nochmal tun. Welches Flag war das nochmal im attr ctrlDebug? aiProcess?
Ja, der ist es.
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

DS_Starter

#6438
@Peter,

die starke Dynamik zwischen Tag und Nacht resultiert eventuell aus dem gesetzten Flag "pv".
Das NN assoziiert damit steigende Verbräuche bei PV bzw. das Gegenteil. Vllt. wird dieser Zusammnhang bei dir überbewertet -> ausprobieren.
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

peterboeckmann

Hallo Heiko, hallo 300P,

anbei das TrainingsLog.

Keine Ahnung, woher die ganzen geskippten Datensätze kommen.
Da sie aber geskippt werden, sollten sie ja keinen Einfluss auf das Training haben, oder?

Viele Grüße,
Peter
MQTT,Modbus,HTTPMod,DbLog,LaCrosse,SolarForecast,TelegramBot,Twilight,vitoconnect,withings
fhem,fhempy,debmatic
Debian
RaspberryPi5,HomeMatic,HomeMaticIP,Shelly,JeeLink,SignalDuino,ZWDongle,SONOS,alexa,Hue,tradfri,MobileAlerts,Siemens Home Connect,Roborock S50,Wallbox,Harmony,Tuya Smartlife

DS_Starter

#6440
Die geskippten DS haben keinen EInfluß. In diesen DS ist "con" nicht gesetzt (con=undef), also kein Verbrauch gespeichert. Vllt. war er negativ, was dazu führt dass das Modul ihn nicht speichert weil unsinnig.

Jetzt die Analyse des Logs mit konkreten Empfehlungen zur Verbesserung:

Analyse des Logs

Warum kein Snap bei Epoche 500–700?
Das ist eine wichtige Beobachtung. Der letzte Snap in Attempt 0 lag bei Epoche 449:

Val MSE = 0.003544, Val MAE = 0.032382, Val MedAE = 0.020755

Bei den 100-Epochen-Reports danach:
E500: Val MSE=0.003481  Val MAE=0.036487  Val MedAE=0.026497
E600: Val MSE=0.003351  Val MAE=0.036766  Val MedAE=0.027002
E700: Val MSE=0.003132  Val MAE=0.036487  Val MedAE=0.026883
Val MSE verbessert sich (0.003544 → 0.003132), aber Val MAE und MedAE verschlechtern sich deutlich (0.032 → 0.036+). Da der Snap-Metric auf einer MAE/MedAE-Composite-Größe basiert, und nicht auf reiner Val MSE, triggert kein Snap.
Was hier passiert: Nach Epoche 449 beginnt das Netz unter INCREMENTAL, Ausreißer stärker zu drücken (MSE-Reduktion), aber auf Kosten der mittleren Fehler (MAE-Anstieg). Das ist ein klassisches Overfitting-auf-Outliers-Muster — das Netz opfert die Median-Qualität für wenige Extrempunkte.

Frühe Konvergenz und Low-Slope-Problem
Slope ~0.60 ist systematisch zu niedrig (Limit 0.7..1.3) — das Modell unterschätzt Peaks konsistent. R²=0.52 ist akzeptabel, aber Slope zeigt eine strukturelle Regression-zur-Mitte.

Parameterempfehlungen

1. Hidden Steepness erhöhen: 0.1 → 0.3
Das ist der wichtigste Hebel. Mit steepness=0.1 ist die SIGMOID_SYMMETRIC extrem flach — die Aktivierung reagiert kaum auf Eingabeunterschiede, Gradienten fließen schwach. Das drückt die Slope nach unten, weil das Netz Extreme nicht lernen kann.
hidden steepness=0.3  # oder 0.5 als zweiter Test

2. Learning Rate leicht erhöhen: 0.001 → 0.003
Alle Attempts stagnieren bei Val MSE ~0.0025. Die extrem niedrige LR in Kombination mit Momentum=0.7 führt zu sehr langsamer Fortbewegung — das Netz bleibt in einem flachen Bereich hängen, der zwar stabil, aber suboptimal ist.
learning rate=0.003

3. Netzarchitektur: 22-12 → 22-16 oder 24-14
10322 Trainingsdatensätze mit dem v1_heatpump_active_pv_bev-Profil haben viele Feature-Interaktionen (Lag-Features, BEV-Features, Temperature-Features). Die zweite Schicht mit nur 12 Neuronen kann ein Engpass sein.

4. Momentum reduzieren: 0.7 → 0.5
Bei INCREMENTAL mit hohem Momentum und niedriger LR akkumuliert sich der Impuls in Richtungen, die schon erkundet wurden — das erschwert das Verlassen flacher Plateaus.

Zusammenfassung der Prioritäten
# Primärer Test:
hidden steepness=0.3  # war 0.1
learning rate=0.003    # war 0.001

# Sekundärer Test falls unzureichend:
hidden Neurons=22-16  # war 22-12
learning momentum=0.5  # war 0.7

Die Erwartung: Steepness=0.3 + LR=0.003 sollte die Slope von 0.60 in Richtung 0.80–0.90 bringen und das MAE/MedAE-Plateau nach ca. Epoche 450 auflösen.

Ich persönlich würde auch auf SIGMOID umstellen.
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

peterboeckmann

Moin Heiko,

danke für die detaillierte Analyse meines Logs.

Ich habe zunächst die Konfiguration wie folgt angepasst:
Zitat von: DS_Starter am 23 Juni 2026, 23:18:25# Primärer Test:
hidden steepness=0.3  # war 0.1
learning rate=0.003    # war 0.001

Damit habe ich folgende Ergebnisse erzielt:

Bewertungsüberblick:
Trainingsbewertung: Retrain (Retrain)
Lernverhalten: early früh konvergiert (6.7 % Epochenausnutzung)
Einstellhinweise:
Konvergenz erfolgt früh, Momentum/Lernrate sind bereits konservativ: um mehr nützliche Epochen vor dem Early-Stopping zu ermöglichen, aiConSteepness leicht reduzieren (z.B. um 0.1) für langsamere, feinere Konvergenz - bei zu niedrigen aiConSteepness-Wert kann das Netz komplett aufhören zu lernen (Slope≈0); alternativ Hidden-Layer-Größe/Tiefe (aiConHiddenLayers) leicht erhöhen für mehr Lernkapazität, was aber ggf. mehr Trainingsdaten erfordert
Große Datenmenge (10331 Datensätze gesamt): falls saisonale Effekte die Prognosequalität beeinträchtigen, Training auf die neuesten Datensätze begrenzen (z.B. aiControl->aiConTrainLimit=5100) um das Modell auf aktuelle Verbrauchsmuster zu fokussieren. Der Hinweis ist für stochastische Haushalte weniger relevant als für strukturierte.

Rauschen Bewertung: merkliches Rauschen, Interpretation mit Vorsicht (borderline)
Drift Bewertung: -
Empfehlung für Retrain: keine

Modellparameter:
Normierungsgrenzen: PV=13020 Wh, Hausverbrauch: Min=0 Wh / Max=13733 Wh
Trainingsdaten: 10331 Datensätze (Training=8264, Validation=2067)
Architektur: Inputs=119, Hidden Layers=22-12, Outputs=1
Hyperparameter: Learning Rate=0.0030, Momentum=0.7, BitFail-Limit=0.34
Aktivierungen: Hidden=SIGMOID_SYMMETRIC, Steepness=0.3, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Profile=v1_heatpump_active_pv_bev
Zufallsgenerator: Mode=1, Period=10
Modellalter: - h

Trainingsmetriken:
bestes Modell bei Epoche: 1002 (max. 15000)
Training MSE: 0.002246
Validation MSE: 0.002023
Validation MSE Average: 0.002101
Validation MSE Standard Deviation: 0.000029
Validation Bit_Fail: 4
Model Bias: 381 Wh
Model Slope: 0.61
Trainingsbewertung: Retrain

Fehlermaße der Prognosen:
MAE: 326.23 Wh
MedAE: 154.85 Wh
RMSE: 431.73 Wh
RMSE relative: 60 %
RMSE Rating: acceptable
MAPE: 76.28 %
MdAPE: 23.72 %
R²: 0.58

TrainingsLog anbei.
Da der Slope bei 0,61 geblieben ist, habe ich nun zunächst das aiConProfile=v1,active,bev,heatpump geändert, also das pv rausgenommen.

Mein aiControl habe ich ansonsten noch so gelassen:
aiTrainStart=3 aiStorageDuration=18250 aiTreesPV=30
aiConActivate=1
aiConProfile=v1,active,bev,heatpump
aiConHiddenLayers=22-12
aiConShuffleMode=1
aiConBitFailLimit=0.34
aiConAlpha=0.7
aiConMomentum=0.7
aiConLearnRate=0.0030
aiConSteepness=0.3
aiConActFunc=SIGMOID_SYMMETRIC

Ergebnis dann gleich im nächsten Post...

Viele Grüße,
Peter
MQTT,Modbus,HTTPMod,DbLog,LaCrosse,SolarForecast,TelegramBot,Twilight,vitoconnect,withings
fhem,fhempy,debmatic
Debian
RaspberryPi5,HomeMatic,HomeMaticIP,Shelly,JeeLink,SignalDuino,ZWDongle,SONOS,alexa,Hue,tradfri,MobileAlerts,Siemens Home Connect,Roborock S50,Wallbox,Harmony,Tuya Smartlife

300P

Guten Morgen!

Gestern Abend hatte ich noch desaströse Ergebnisse 😤
Irgenwas mit unerklärlicher steiler Kurve neu trainieren......


Ich hab aber einfach laufen lassen - nach mehr als ca. 15 Stunden Laufzeit hat sich alles eingespielt. 😉🥳👍

letztes KI-Training: 23.06.2026 14:40:50 / Laufzeit in Sekunden: 716
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 129.96 ms
Alpha: 0.8
Verbrauchernummer Wärmepumpe: 08

Bewertungsüberblick
Trainingsbewertung: Retrain (Retrain)
Lernverhalten: early früh konvergiert (9.9 % Epochenausnutzung)
Einstellhinweise:
Konvergenz erfolgt früh, Momentum/Lernrate sind bereits konservativ: um mehr nützliche Epochen vor dem Early-Stopping zu ermöglichen, aiConSteepness leicht reduzieren (z.B. um 0.1) für langsamere, feinere Konvergenz - bei zu niedrigen aiConSteepness-Wert kann das Netz komplett aufhören zu lernen (Slope≈0); alternativ Hidden-Layer-Größe/Tiefe (aiConHiddenLayers) leicht erhöhen für mehr Lernkapazität, was aber ggf. mehr Trainingsdaten erfordert
Große Datenmenge (10412 Datensätze gesamt): falls saisonale Effekte die Prognosequalität beeinträchtigen, Training auf die neuesten Datensätze begrenzen (z.B. aiControl->aiConTrainLimit=5200) um das Modell auf aktuelle Verbrauchsmuster zu fokussieren. Der Hinweis ist für stochastische Haushalte weniger relevant als für strukturierte.

Rauschen Bewertung: merkliches Rauschen, Interpretation mit Vorsicht (borderline)
Drift Bewertung: stable
Empfehlung für Retrain: keine keine

Modellparameter
Normierungsgrenzen: PV=9975 Wh, Hausverbrauch: Min=0 Wh / Max=6970 Wh
Trainingsdaten: 10412 Datensätze (Training=8329, Validation=2083)
Architektur: Inputs=112, Hidden Layers=14-8, Outputs=1
Hyperparameter: Learning Rate=0.0001, Momentum=0.5, BitFail-Limit=0.34
Aktivierungen: Hidden=SIGMOID_SYMMETRIC, Steepness=0.9, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Profile=v1_heatpump_active_pv
Zufallsgenerator: Mode=1, Period=20
Modellalter: 15 h

Trainingsmetriken
bestes Modell bei Epoche: 1481 (max. 15000)
Training MSE: 0.008647
Validation MSE: 0.007070
Validation MSE Average: 0.007131
Validation MSE Standard Deviation: 0.000028
Validation Bit_Fail: 11
Model Bias: 524 Wh
Model Slope: 0.61
Trainingsbewertung: Retrain

Fehlermaße der Prognosen
MAE: 405.15 Wh
MedAE: 273.88 Wh
RMSE: 501.54 Wh
RMSE relative: 49 %
RMSE Rating: acceptable
MAPE: 35.11 %
MdAPE: 25.88 %
R²: 0.48

Rauschen
Rauschen Bewertung: borderline
Empfehlung für Bit_Fail: 0.34 (Einstellung von aiControl->aiConBitFailLimit)

Drift-Kennzahlen (berechnet ab Modellalter > 6 h)
Analysefenster: 96 h
Drift RMSE Ratio: 0.72
Semantic Ratio: 0.50
Slope Reference: 1.00
Slope Live: 0.82
Slope Drift: 0.818
Bias Reference: 0
Bias Live: 175.44
Bias Drift: 175.44
Score: 1.04
Index: 0.71
Drift Bewertung: stable
Empfehlung für Retrain: keine keine
letzte Rekalibrierung: -

Auch visuell alles IMHO augenscheinlich okay 👌
Gruß
300P

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

DS_Starter

Moin,

@Peter, ich habe dein Log wieder analysieren lassen:

Was deutlich besser ist
Die Parameteränderung hat messbar gewirkt. Val MSE, MAE, R², Bias und Konvergenzgeschwindigkeit haben sich alle substantiell verbessert. Der Sprung von "weak" auf "acceptable" beim RMSE-Rating ist die wichtigste qualitative Verbesserung.
Die frühe Konvergenz ist ebenfalls gelöst: Das Netz lernt jetzt schon ab Epoche ~40–50 aggressiv (Val MSE fällt von 0.004 auf 0.003 innerhalb weniger Epochen), statt wie vorher bis Epoche 350+ zu stagnieren.

Was weiterhin problematisch ist
Slope = 0.61 — das ist die zentrale verbleibende Schwäche. Trotz verdreifachter Steepness und LR hat sich die Slope um nur +0.01 bewegt. Das signalisiert, dass das Problem nicht mehr durch diese Hyperparameter allein lösbar ist.
Die Ursache liegt strukturell: Das Netz lernt den Mittelbereich gut (MAE gesunken, MedAE sehr niedrig bei ~155 Wh), aber Verbrauchsspitzen (Wärmepumpen-Lastphasen, Morgenspitzen) werden systematisch unterschätzt. Das ist ein klassisches Regressionsphänomen bei unbalancierten Targets.
Nächste Schritte für die Slope

Option 1: Netzarchitektur erweitern
hidden Neurons=24-16  # war 22-12
Die zweite Schicht mit 12 Neuronen ist für das v1_heatpump_active_pv_bev-Profil wahrscheinlich zu schmal, um die nichtlinearen Wärmepumpen-Interaktionen abzubilden.

Option 2: Aktivierungsfunktion wechseln
SIGMOID_SYMMETRIC sättigt bei Extremwerten stark. ELLIOT_SYMMETRIC hat ein flacheres Sättigungsverhalten und könnte Peaks besser durchleiten — als paralleler Testlauf mit identischen anderen Parametern.
Option 3: Periodisches Schwingen analysieren
Auffällig im neuen Log: Bei den 100-Epochen-Reports (E200, E300, E400) springt Val MSE jeweils nach oben (z.B. E300: 0.002378 statt zuvor ~0.002169). Das ist der Shuffle-Effekt, aber die Amplitude ist sehr groß. Das deutet auf ein hohes Momentum (0.7) hin, das bei Shuffle-Events zu Overshooting führt. Momentum auf 0.5 reduzieren könnte das stabilisieren und die Slope indirekt verbessern.

Fazit
Das Retraining ist ein klarer Fortschritt. Die Parameterempfehlung hat sich bewährt. Die verbleibende Slope-Schwäche von 0.61 ist nun das einzige kritische Problem und erfordert eine Architektur- oder Aktivierungsfunktionsänderung, keine weiteren LR/Steepness-Anpassungen.
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

peterboeckmann

#6444
Hallo zusammen,

Zitat von: peterboeckmann am 24 Juni 2026, 07:25:26Ergebnis dann gleich im nächsten Post...

Wie versprochen, hier das Ergebnis "mit ohne" Flag pv.

Bewertungsüberblick:
Trainingsbewertung: Retrain (Retrain)
Lernverhalten: early früh konvergiert (6.6 % Epochenausnutzung)
Einstellhinweise:
Konvergenz erfolgt früh, Momentum/Lernrate sind bereits konservativ: um mehr nützliche Epochen vor dem Early-Stopping zu ermöglichen, aiConSteepness leicht reduzieren (z.B. um 0.1) für langsamere, feinere Konvergenz - bei zu niedrigen aiConSteepness-Wert kann das Netz komplett aufhören zu lernen (Slope≈0); alternativ Hidden-Layer-Größe/Tiefe (aiConHiddenLayers) leicht erhöhen für mehr Lernkapazität, was aber ggf. mehr Trainingsdaten erfordert
Große Datenmenge (10331 Datensätze gesamt): falls saisonale Effekte die Prognosequalität beeinträchtigen, Training auf die neuesten Datensätze begrenzen (z.B. aiControl->aiConTrainLimit=5100) um das Modell auf aktuelle Verbrauchsmuster zu fokussieren. Der Hinweis ist für stochastische Haushalte weniger relevant als für strukturierte.

Rauschen Bewertung: merkliches Rauschen, Interpretation mit Vorsicht (borderline)
Drift Bewertung: fresh_model
Empfehlung für Retrain: keine

Modellparameter:
Normierungsgrenzen: PV=13020 Wh, Hausverbrauch: Min=0 Wh / Max=13733 Wh
Trainingsdaten: 10331 Datensätze (Training=8264, Validation=2067)
Architektur: Inputs=102, Hidden Layers=22-12, Outputs=1
Hyperparameter: Learning Rate=0.0030, Momentum=0.7, BitFail-Limit=0.34
Aktivierungen: Hidden=SIGMOID_SYMMETRIC, Steepness=0.3, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Profile=v1_heatpump_active_bev
Zufallsgenerator: Mode=1, Period=10
Modellalter: 0 h

Trainingsmetriken:
bestes Modell bei Epoche: 990 (max. 15000)
Training MSE: 0.002269
Validation MSE: 0.001972
Validation MSE Average: 0.002041
Validation MSE Standard Deviation: 0.000017
Validation Bit_Fail: 4
Model Bias: 402 Wh
Model Slope: 0.64
Trainingsbewertung: Retrain

Fehlermaße:
MAE: 330.08 Wh
MedAE: 160.59 Wh
RMSE: 436.98 Wh
RMSE relative: 61 %
RMSE Rating: acceptable
MAPE: 81.46 %
MdAPE: 25.29 %
R²: 0.59

TrainingsLog wieder anbei.
Als nächstes versuche ich "hidden Neurons=24-16".

Melde mich wieder. ;-)

Edit: Screenshot der Prognose ergänzt. Sieht noch recht ähnlich aus zu gestern abend.
MQTT,Modbus,HTTPMod,DbLog,LaCrosse,SolarForecast,TelegramBot,Twilight,vitoconnect,withings
fhem,fhempy,debmatic
Debian
RaspberryPi5,HomeMatic,HomeMaticIP,Shelly,JeeLink,SignalDuino,ZWDongle,SONOS,alexa,Hue,tradfri,MobileAlerts,Siemens Home Connect,Roborock S50,Wallbox,Harmony,Tuya Smartlife

DS_Starter

Ja, dann war meine Vermutung bzgl. pv eher nicht richtig -> würde ich wieder aktivieren, war ein Versuch.
Wenn ich mir die Grafik / Verlauf so anschaue sieht das nicht so abwegig aus.
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

peterboeckmann

Hallo Heiko,

Zitat von: DS_Starter am 24 Juni 2026, 08:22:06Ja, dann war meine Vermutung bzgl. pv eher nicht richtig -> würde ich wieder aktivieren, war ein Versuch.

habe ich dann jetzt gemacht.

Bewertungsüberblick:
Trainingsbewertung: Retrain (Retrain)
Lernverhalten: early früh konvergiert (6.6 % Epochenausnutzung)
Einstellhinweise:
Konvergenz erfolgt früh, Momentum/Lernrate sind bereits konservativ: um mehr nützliche Epochen vor dem Early-Stopping zu ermöglichen, aiConSteepness leicht reduzieren (z.B. um 0.1) für langsamere, feinere Konvergenz - bei zu niedrigen aiConSteepness-Wert kann das Netz komplett aufhören zu lernen (Slope≈0); alternativ Hidden-Layer-Größe/Tiefe (aiConHiddenLayers) leicht erhöhen für mehr Lernkapazität, was aber ggf. mehr Trainingsdaten erfordert
Architektur möglicherweise zu komplex für die Datenmenge: Verhältnis Trainingsdaten zu Netzparametern beträgt nur 2.5 (Zielwert: 8–20) - das Netz hat mehr Freiheitsgrade als die Daten zuverlässig füllen können; kleinere Architektur wie z.B. 14-8 versuchen (aiControl->aiConHiddenLayers)
Empfohlene Lernrate für die vorgeschlagene Architektur 14-8 mit 119 Inputs: 0.0050 (aiControl->aiConLearnRate)
Große Datenmenge (10332 Datensätze gesamt): falls saisonale Effekte die Prognosequalität beeinträchtigen, Training auf die neuesten Datensätze begrenzen (z.B. aiControl->aiConTrainLimit=5100) um das Modell auf aktuelle Verbrauchsmuster zu fokussieren. Der Hinweis ist für stochastische Haushalte weniger relevant als für strukturierte.

Rauschen Bewertung: merkliches Rauschen, Interpretation mit Vorsicht (borderline)
Drift Bewertung: -
Empfehlung für Retrain: keine

Modellparameter:
Normierungsgrenzen: PV=13020 Wh, Hausverbrauch: Min=0 Wh / Max=13733 Wh
Trainingsdaten: 10332 Datensätze (Training=8265, Validation=2067)
Architektur: Inputs=119, Hidden Layers=24-16, Outputs=1
Hyperparameter: Learning Rate=0.0030, Momentum=0.7, BitFail-Limit=0.34
Aktivierungen: Hidden=SIGMOID_SYMMETRIC, Steepness=0.3, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Profile=v1_heatpump_active_pv_bev
Zufallsgenerator: Mode=1, Period=10
Modellalter: - h

Trainingsmetriken:
bestes Modell bei Epoche: 990 (max. 15000)
Training MSE: 0.002261
Validation MSE: 0.002028
Validation MSE Average: 0.002140
Validation MSE Standard Deviation: 0.000035
Validation Bit_Fail: 4
Model Bias: 385 Wh
Model Slope: 0.61
Trainingsbewertung: Retrain

Fehlermaße:
MAE: 327.39 Wh
MedAE: 153.66 Wh
RMSE: 434.66 Wh
RMSE relative: 60 %
RMSE Rating: acceptable
MAPE: 73.47 %
MdAPE: 24.10 %
R²: 0.58
MQTT,Modbus,HTTPMod,DbLog,LaCrosse,SolarForecast,TelegramBot,Twilight,vitoconnect,withings
fhem,fhempy,debmatic
Debian
RaspberryPi5,HomeMatic,HomeMaticIP,Shelly,JeeLink,SignalDuino,ZWDongle,SONOS,alexa,Hue,tradfri,MobileAlerts,Siemens Home Connect,Roborock S50,Wallbox,Harmony,Tuya Smartlife

DS_Starter

Schau mal in #6443. Dort waren noch ein paar Anregungen drin (ELLIOT). Hast du das bereits gemacht?
Wenn du das schon gemacht hast, füttere ich das LLM nochmal mit dem Log.
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

peterboeckmann

Zitat von: DS_Starter am 24 Juni 2026, 09:13:53Schau mal in #6443. Dort waren noch ein paar Anregungen drin (ELLIOT). Hast du das bereits gemacht?
Wenn du das schon gemacht hast, füttere ich das LLM nochmal mit dem Log.

Nein, ich komm nicht so schnell hinterher. Immer nur eine Änderung pro Neutraining...
MQTT,Modbus,HTTPMod,DbLog,LaCrosse,SolarForecast,TelegramBot,Twilight,vitoconnect,withings
fhem,fhempy,debmatic
Debian
RaspberryPi5,HomeMatic,HomeMaticIP,Shelly,JeeLink,SignalDuino,ZWDongle,SONOS,alexa,Hue,tradfri,MobileAlerts,Siemens Home Connect,Roborock S50,Wallbox,Harmony,Tuya Smartlife

peterboeckmann

Hallo Heiko,

hier jetzt das Trainingsergebnis mit ELLIOT_SYMMETRIC:

Bewertungsüberblick:
Trainingsbewertung: Retrain (Retrain)
Lernverhalten: early früh konvergiert (4.3 % Epochenausnutzung)
Einstellhinweise:
Konvergenz erfolgt früh, Momentum/Lernrate sind bereits konservativ: um mehr nützliche Epochen vor dem Early-Stopping zu ermöglichen, aiConSteepness leicht reduzieren (z.B. um 0.1) für langsamere, feinere Konvergenz - bei zu niedrigen aiConSteepness-Wert kann das Netz komplett aufhören zu lernen (Slope≈0); alternativ Hidden-Layer-Größe/Tiefe (aiConHiddenLayers) leicht erhöhen für mehr Lernkapazität, was aber ggf. mehr Trainingsdaten erfordert
Architektur möglicherweise zu komplex für die Datenmenge: Verhältnis Trainingsdaten zu Netzparametern beträgt nur 2.5 (Zielwert: 8–20) - das Netz hat mehr Freiheitsgrade als die Daten zuverlässig füllen können; kleinere Architektur wie z.B. 14-8 versuchen (aiControl->aiConHiddenLayers)
Empfohlene Lernrate für die vorgeschlagene Architektur 14-8 mit 119 Inputs: 0.0050 (aiControl->aiConLearnRate)
Große Datenmenge (10333 Datensätze gesamt): falls saisonale Effekte die Prognosequalität beeinträchtigen, Training auf die neuesten Datensätze begrenzen (z.B. aiControl->aiConTrainLimit=5100) um das Modell auf aktuelle Verbrauchsmuster zu fokussieren. Der Hinweis ist für stochastische Haushalte weniger relevant als für strukturierte.

Rauschen Bewertung: merkliches Rauschen, Interpretation mit Vorsicht (borderline)
Drift Bewertung: fresh_model
Empfehlung für Retrain: keine

Modellparameter:
Normierungsgrenzen: PV=13020 Wh, Hausverbrauch: Min=0 Wh / Max=13733 Wh
Trainingsdaten: 10333 Datensätze (Training=8266, Validation=2067)
Architektur: Inputs=119, Hidden Layers=24-16, Outputs=1
Hyperparameter: Learning Rate=0.0030, Momentum=0.7, BitFail-Limit=0.34
Aktivierungen: Hidden=ELLIOT_SYMMETRIC, Steepness=0.3, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Profile=v1_heatpump_active_pv_bev
Zufallsgenerator: Mode=1, Period=10
Modellalter: 0 h

Trainingsmetriken:
bestes Modell bei Epoche: 638 (max. 15000)
Training MSE: 0.002266
Validation MSE: 0.001994
Validation MSE Average: 0.002067
Validation MSE Standard Deviation: 0.000034
Validation Bit_Fail: 4
Model Bias: 401 Wh
Model Slope: 0.64
Trainingsbewertung: Retrain

Fehlermaße:
MAE: 330.11 Wh
MedAE: 162.83 Wh
RMSE: 435.34 Wh
RMSE relative: 60 %
RMSE Rating: acceptable
MAPE: 80.70 %
MdAPE: 25.11 %
R²: 0.59

Anbei das Log und der Screenshot.

Was würdest Du jetzt empfehlen?
MQTT,Modbus,HTTPMod,DbLog,LaCrosse,SolarForecast,TelegramBot,Twilight,vitoconnect,withings
fhem,fhempy,debmatic
Debian
RaspberryPi5,HomeMatic,HomeMaticIP,Shelly,JeeLink,SignalDuino,ZWDongle,SONOS,alexa,Hue,tradfri,MobileAlerts,Siemens Home Connect,Roborock S50,Wallbox,Harmony,Tuya Smartlife