bluegreencity-ki

AutoML-Feature-Übersicht – Operationelles Modell

Stand: Oktober 2026

Das aktuelle operationelle ML-Modell („Modell Hannover”, train_2018_2024__predict_2025, Zielgröße future_drought_damage_severe_t1, refit_final, 141 394 Trainingszeilen über 2018–2024) verwendet 54 Features aus der Allowlist in config/config.yaml (feature_columns): die 35 Features des 2026_09-Modells plus der 19 Kandidaten aus dem 2026-10-Feature-Bundle. Der aktuelle operationelle Lauf wurde am 2026-10-08 per Force-Refit neu trainiert (siehe unten). Die maßgeblichen Importance-Werte stammen aus explanation_feature_importance_training.csv im Modellverzeichnis.

Top-15 Permutations-Importance (operationelles 2026-10-Modell, Anteil an Summe):

# Feature Anteil
1 kr_durchm (Kronendurchmesser) 66,1 %
2 h3_res8 (H3-Zelle res 8) 19,0 %
3 m_air_temp_14h_value 5,0 %
4 st_umfang (Stammumfang) 3,3 %
5 m_cold_air_kpr_value 2,5 %
6 m_svf_value 1,2 %
7 age_value 0,6 %
8 m_air_temp_04h_value 0,5 %
9 citree_krankheiten_schaedlinge 0,4 %
10 et0_may_oct_mm 0,3 %
11 m_cold_air_kvs_value 0,3 %
12 dwsi_summer_value 0,2 %
13 dist_road_m 0,2 %
14 m_uhi_intensity_value 0,1 %
15 m_sunlit_hours_value 0,1 %

Die restlichen 39 Features liegen je < 0,1 % (Summe der Top 15 = 99,9 %). Zwei Befunde: (a) Die räumliche Information fließt über h3_res8 (Kategorie, 19 %) ein, nicht über die rohen Koordinaten Rechtswert/Hochwert (je ~1e-8, praktisch null) – der Bundling-Kandidat wird also in der gewünschten Form genutzt. (b) kr_durchm dominiert stark (66 %): Kronendurchmesser ist der beste einzelne Gesundheits-/Bestandsproxy und korreliert mit vielen anderen Merkmalen – die starke Konzentration ist bei 54 teilkorrellierten Features erwartet, weil Permutations-Importance die Erklärung auf redundante Prädiktoren aufteilt.

Hinweis zur Versionierung: Die weiter unten detaillierten Importance-Tabellen des 35-Features-2026_09-Modells gelten nicht mehr für das aktuelle operationelle Modell – dort nur noch als Historie. Maßgeblich ist die obere Top-15-Tabelle (54 Features, 2026-10-08).

2026-10-Feature-Bundle (Re-Training 2026_10, gestart 2026-10-07 08:32)

Validierungsstand (abgeschlossen 2026-10-07 10:39): Externer 2024-Holdout ROC-AUC 0,9697 (OOF-Gap +0,016, Brier 0,041, Precision 0,944 / Recall 0,795 @ Schwelle 0,5) — erfüllt die Acceptance (Baseline 0,9647, Ablation A 0,9697). Das operationelle 2018–2024-Modell wird im Anschluss per Force-Refit neu trainiert (2026-10-08; der automatische Refit hatte das alte 2026_09-Modell still wiederverwendet — Fix: Feature-Fingerprint im Manifest, issue #258; Repair: scripts/ml/force_refit_operational.py).

Meta-Plan vom 2026-10-06: räumliche Information, SWBM-Bodenwasser (Hebel 2 aus #228) und A/B-Wiederkehrer in einem Re-Training (Präzedenz D17). Die Permutations-Importance des Trainingslaufs entscheidet, welche Kandidaten im finalen Modell bleiben (Muster aus #217). Implementiert in bluegreencity_ki/features/ (spatial.py, swbm.py), Konfiguration unter ml.training in config/config.yaml.

Platt-Kalibrierung des ML-Scores (2026-10-08, Issue #253)

Die Validierung 2026-10 zeigte mittlere Kalibrierung des AutoGluon-Probabilities-Scores: Das Modell sagte bei ~24% vorhergesagter Wahrscheinlichkeit ~10% beobachtete Absterberate voraus (und bei ~45% vorhergesagt ~62% beobachtet). Die Rangfolge (AUC) war korrekt – nur die Stärkeaussage war verzerrt. Fix: eine Platt-Kalibrierung (Sigmoid-Mapping cal = 1 / (1 + exp(−(a·raw + b)))), die auf dem externen 2024-Holdout der jeden Monat laufenden Validierung gefittet wird und beim Scoring auf den Rohscore angewendet wird.

Warum Platt statt Isotonic: Platt ist parametrisch (2 Parameter), glatt und robust bei ~3,9k Positiven im Holdout; Isotonic würde das Holdout-Muster zu stark memorisieren und zwischen den Monatsläufen unstabil springen. AUC bleibt per Monotonität unangetastet; Brier-Score sinkt auf dem 2024-Holdout von 0,0413 auf 0,0290.

Aktuelle Parameter (2026-10, gefittet auf 2024-Holdout, n=25.334, pos=3.912): a = 2,2831, b = 0,6840. Beispiel-Mapping:

Rohscore Kalibriert Bedeutung
0,002 0,001 tiefe Low-Klasse kaum verändert
0,097 (Median) 0,012 Mittelband wird ehrlich „weniger kritisch“
0,33 0,06 oberes Medium → knapp unter High-Schwelle
0,66 (90. Perzentil) 0,90 hochbelegtes oberes Band → wird kritisch
0,95 1,00 Top-Band saturiert

Konsequenzen (Entscheidung „Option A“, 2026-10-08): Alle risikorelevanten Ableitungen laufen auf dem kalibrierten Score – Klassen-Schwellen (ml.thresholds: low < 0,10 ≤ medium < 0,30 ≤ high < 0,85 ≤ critical), ml_damage_score_t1, Confidence/Margin, reclassify_risk und damit auch das Lagebild. Der Rohscore bleibt als drought_risk_ml (Modell-Artefakt, SHAP-Forensik) erhalten, der kalibrierte als neue Spalte drought_risk_ml_calibrated. Die Schwellen wurden einmalig von (0,15/0,30/0,85) auf (0,10/0,30/0,85) neu ausgerichtet – der Medium-Anteil bleibt damit referenzstabil (~20% der Bäume auf 2024-Bezugsklasse), High/Critical sind auf dem kalibrierten Maßstab seltener, aber präzisere Aussagen.

Erwarteter Effekt im Lagebild (2026-Operationelle Daten, Backfill 2026-10-08): low 64,1 → 73,0k, medium 13,0 → 5,5k, high 11,4 → 6,3k, critical 0,7 → 4,4k. Die Verschiebung ist die Absicht der Kalibrierung (honest probabilities), kein Modell-Wechsel – kommunizieren vor der nächsten LHH-Runde.

Wartung: Die Kalibrierung wird bei jedem Validierungs-Refresh neu gefittet und in den operationellen Modell-Ordner kopiert (calibration.json). Fehlt die Datei (z. B. älterer Lauf), degradiert der Predictor mit Warnung auf den Rohscore. Einmaliger Backfill bestehender Runs: scripts/ml/backfill_run_calibration.py.

Raumliche Features (7)

Feature Typ Herleitung Mechanismus / Erwartung
H3-Zelle res 7 h3_res7 (Kategorie, 54 belegte Zellen im 365.059-Panel) UTM → WGS84 → h3.latlng_to_cell(res 7) (~5,2 km²/Zelle) Lage-Kategorie: erfasst Standortseffekte, die nicht in den Punkt-Rastern stecken (Pflegepraxis, Beplanungslogik); zu grob für Punktnähe, zu fein wäre Memorization
H3-Zelle res 8 h3_res8 (Kategorie, 276 Zellen) wie res 7, ~0,74 km²/Zelle feinere Lage-Kategorie (Ablation gegen res 7)
UTM-Ostwert Rechtswert (Float, m, EPSG:25832) Trainings-Panel: aus der Inventory-CSV; operationell: abgeleitet aus der Geometrie (spatial_features.coordinates) Rohkoordinate: extrapoliert besser bei neuen Standorten; Bäume können axis-parallele Splits darauf setzen
UTM-Nordwert Hochwert (Float, m, EPSG:25832) wie Rechtswert wie Rechtswert
Baumzahl im Ring ring8_tree_count (Float) Zelle + 6 H3-Nachbarzellen (res 8), self inkludiert Bepflanzungsdichte im ~2,4-km-Umfeld (Wettbewerbs-/Standortkontext)
SVF-Ringmittel ring8_mean_m_svf_value (Float) Mittel über Zelle + Ring, self-exkludiert räumlicher SVF-Kontext; dämpft Punkt-Ausreißer der Rasterabfrage
Lufttemp-14h-Ringmittel ring8_mean_m_air_temp_14h_value (Float) wie SVF-Ringmittel räumlicher Wärme-Kontext (FITNAH-Zellstruktur vs. Punkt)

Spatial Block (Gruppierungs-Schlüssel, kein Modell-Feature)

spatial_block (Float 0–5) teilt die Stadt in ein festes 2×3-Grid (UTM 32N, Rechtswert 541,000–560,000 / Hochwert 5,795,000–5,812,000, Block = Reihe×2+Spalte; Punkte außerhalb werden auf den Rand-Block geclamped). Es ist bewusst keine modellierte Zone und kein Modell-Feature, sondern ein deterministischer Gruppierungs-Schlüssel für räumlich ehrliches Training:

SWBM-Bodenwasser-Features (6)

Alle strikt aus dem Snapshot-Jahr t (Label t+1 → kein Lookahead), Trockenfenster 01.05.–31.10. plus Jahresend-State. Quelle: bgcki.swbm_daily_state (Backfill v0.4, Szenario irrigation-lower); Mehr-Varianten-Bäume (unknown-age-Szenarien) via konservative Envelope (Stress/Bedarf = max, Fraktionen = min/trockenste Variante), identisch zur wfs_trees_current-Konvention.

Feature Herleitung Mechanismus / Erwartung  
Maximaler Bodenwasserstress swbm_stress_max_dry (0–1) Max von soil_water_stress_today im Trockenfenster von Jahr t Wie trocken es im kritischen Zeitraum wirklich war – das fehlende Boden-Signal (#228 Hebel 2)
Stresstage swbm_stress_days_dry (0–184) Tage im Trockenfenster mit Stress ≥ 0,5 „anhaltend trocken” vs. „kurztrocken” trennen
Kumulierter Gießbedarf swbm_irrigation_demand_sum_dry (L) Summe von irrigation_demand_liters im Trockenfenster modellierter, nicht durch Regen gedeckter Wasserbedarf
Bodenwasser 15. Juli swbm_awc_jul15 (0–1) soil_water_fraction_total am letzten verfügbaren Tag ≤ 15.07. von t verfügbares Wasser in der kritischen Sommerphase
Bodenwasser 15. August swbm_awc_aug15 (0–1) wie swbm_awc_jul15, Referenz 15.08. Hochsommer-Verfügbarkeit
Jahresend-State swbm_awc_year_end (0–1) letzter Tag ≤ 31.12. von t (historisch: 31.12., aktueller Lauf: Stand heute) Winterversorgung/Ausgangslage für Folgejahr t+1

A/B-Kandidaten (6, Wiederaufnahme in die Allowlist)

Feature Wiederaufnahme-Grund
subway_tunnel_dist_m war Importance #1 im 48f-Modell (A/B #228, 2026-09-28); Exklusion kostete Recall (#253)
citree_krankheiten_schaedlinge war Importance #2 im 48f-Modell (A/B #228); LHH-Fehlwertrisiko bleibt zu prüfen
m_uhi_intensity_value Doku-Korrektur 2026-10: kein ΔT Tag−Nacht, sondern eigenständiges GEONET-Wärmeinsel-Raster (issue #171) – unabhängige Messquelle, alte Drop-Begründung (r=0,841 „herleitbar”) war falsch
age_value r=0,705 mit st_umfang lässt ~50 % unkorrelierte Varianz: Umfang sinkt (Schnitt/Sturm), Alter nicht – zwei unabhängige Messungen
m_sunlit_hours_summer Vegetationsmittel (0,995 mit Frühling/Herbst) drückt das Sommer-Signals; Sommer = kritische Stressperiode
m_cold_air_kpr_value eigenes FITNAH-Raster (Rate vs. KVS-Volumen); Rest über {KVS, T04} erwartet dünn – niedrigste Erwartung im Set

Vorgängermodell: Das April-2026-Modell (17 Features, ROC-AUC 0.9872) ist in archive/automl_features_snapshot_april_2026.md archiviert.

Legende Aktualität:

¹ Perm.-Importance steht für Permutations-Importance: Die Werte eines Features werden zufällig durchgemischt (permutiert), wodurch sein Zusammenhang mit der Zielgröße gezielt zerstört wird. Der darauffolgende Rückgang im ROC-AUC-Score misst, wie stark das Modell auf dieses Feature angewiesen ist. Großer Verlust → Feature wichtig; kein Verlust → Feature trägt nichts bei. stddev = Standardabweichung über mehrere Permutationsdurchläufe. p = Wahrscheinlichkeit, dass der beobachtete Wert rein zufällig entstanden ist (p < 0.05 = statistisch signifikant ✓; p ≥ 0.05 = nicht signifikant ✗). Alle Werte aus explanation_feature_importance_training.csv. Werte sind Ranghinweise, keine kausalen Effektgrößen.

² Richtung: ↑ = höherer Feature-Wert → höheres Trockenstress-Risiko; ↓ = höherer Feature-Wert → niedrigeres Risiko; ↑↓ = nicht-lineare oder artspezifisch variable Beziehung.


Verwendete Features (35)

Feature (ausführlich) Code-Bezeichnung Perm.-Importance¹ (Rang · Wert · ±stddev · p) Richtung² Mechanismus / Einfluss auf Trockenstress Herkunft / Ableitung Aktualität
Himmelsöffnungsgrad (Sky View Factor) m_svf_value #1 · 0.002823 · ±0.0000882 · p<0.001 ✓ ↑ Hoher SVF = geringe Gebäudebeschattung = mehr direkte Sonneneinstrahlung und thermische Belastung; stärkster Einzelprädiktor im Modell Raster-Punktabfrage; SVF aus DGM1 (1 m) + LOD2-Gebäuden berechnet Statisch
Kronendurchmesser (m) kr_durchm #2 · 0.001939 · ±0.0000597 · p<0.001 ✓ ↑ Größere Krone = höheres Transpirationsvolumen und größerer Wasserbedarf; OBSkH-LiDAR-Ableitung OBSkH-LiDAR; Kronendurchmesser aus 3D-Punktwolke Inventurstand
Lufttemperatur Tag (FITNAH 3D, 14 h) m_air_temp_14h_value #3 · 0.001061 · ±0.0000315 · p<0.001 ✓ ↑ Höhere Nachmittagstemperatur = stärkere Evapotranspiration und Bodenwasserentzug; FITNAH 3D-Modellierung Raster-Punktabfrage; FITNAH 3D 2022 Statisch
Stammumfang (cm) st_umfang #4 · 0.001045 · ±0.0000366 · p<0.001 ✓ ↑↓ Proxy für Baumalter und Wurzelsystem-Entwicklung; junge Bäume (<5 J.) und sehr alte Bäume gleichermaßen gefährdet (U-förmig) Direktattribut aus Baumkataster Inventurstand
Kaltluftvolumenstrom (KVS) m_cold_air_kvs_value #5 · 0.000422 · ±0.0000102 · p<0.001 ✓ ↑ Hoher KVS = gute nächtliche Abkühlung = geringerer nächtlicher Wasserstress; FITNAH 3D Raster-Punktabfrage; FITNAH 3D 2022 Statisch
Lufttemperatur Nacht (FITNAH 3D, 04 h) m_air_temp_04h_value #6 · 0.000392 · ±0.00000456 · p<0.001 ✓ ↑ Höhere Nachttemperatur = geringere nächtliche Regeneration und höherer Grundwasserbedarf Raster-Punktabfrage; FITNAH 3D 2022 Statisch
Pflanzstandort-Fläche (m²) planting_site_area_m2 #7 · 0.000166 · ±0.00000469 · p<0.001 ✓ ↓ Größerer Wurzelraum = mehr pflanzenverfügbares Wasser; aus Baumumfeld-Polygonen Räumlicher Join: Baum → Baumumfeld-Polygon Statisch
Besonnungsdauer (h/Tag, Vegetationsperiode) m_sunlit_hours_value #8 · 0.0000628 · ±0.00000247 · p<0.001 ✓ ↑ Mehr Besonnung = höhere Evapotranspiration; Mittel über Frühling/Sommer/Herbst Raster-Punktabfrage; DGM + LOD2-Gebäude Statisch
Grundwassertiefe – aktuellster Jahreswert (m) groundwater_level_latest #9 · 0.0000470 · ±0.00000574 · p<0.001 ✓ ↑ Aktuellster Flurabstand; tiefer GW = kein kapillarer Aufstieg = höherer Trockenstress IDW-Interpolation von Messstellen auf Baumpunkte Jährlich
Straßenabstand (m) dist_road_m #10 · 0.0000248 · ±0.000000763 · p<0.001 ✓ ↓ Größerer Abstand = geringere Kompaktion, weniger Tausalzeintrag und Versiegelung Euklidische Distanz zum nächsten OSM-Straßensegment Statisch
Niederschlag (Nov–Apr, mm) precip_nov_apr_mm #11 · 0.0000184 · ±0.00000151 · p<0.001 ✓ ↓ Winter-/Frühjahrsniederschlag füllt den Bodenwasserspeicher vor der Vegetationsperiode DWD-Klimadaten; jahresspezifisch Jährlich
UrbanGreenEye Vitalitätsindex (Sommer) dwsi_summer_value #12 · 0.0000181 · ±0.000000840 · p<0.001 ✓ ↑ Höherer DWI = stärkerer Blattwasserstress; UrbanGreenEye-Remote-Sensing-Proxy Raster-Punktabfrage; UrbanGreenEye (2016–2018 Referenz) Statisch
Referenz-Evapotranspiration (Mai–Okt, mm) et0_may_oct_mm #13 · 0.0000176 · ±0.00000109 · p<0.001 ✓ ↑ Höhere ET₀ = größerer atmosphärischer Wasserbedarf in der Vegetationsperiode DWD-Klimadaten; jahresspezifisch Jährlich
Baumzahl im Pflanzstandort planting_site_tree_count #14 · 0.0000163 · ±0.00000123 · p<0.001 ✓ ↑ Mehr Bäume pro Standort = stärkere Konkurrenz um Wasser und Nährstoffe Zählung der Bäume innerhalb des Baumumfeld-Polygons Inventurstand
Art (binominal) species_binomial #15 · 0.0000119 · ±0.00000137 · p<0.001 ✓ ↑↓ Baumart kodiert artspezifische Trockenheits- und Hitzeverträglichkeit, Wurzelmorphologie und Hydraulik Direktattribut aus Baumkataster; normalisiert Inventurstand
Landnutzung (10 Klassen) land_use_value #16 · 0.00000728 · ±0.00000102 · p<0.001 ✓ ↑ Versiegelte Standorte (Ebenerdig versiegelt, Baum über Versiegelung) = höheres Risiko Räumlicher Join: Baum → ALKIS-Landnutzungspolygon Statisch
CiTree: Bodeneigenschaft citree_bodeneigenschaft #17 · 0.00000511 · ±0.000000974 · p<0.001 ✓ ↑↓ Präferenz für bestimmte Bodentypen; artspezifisch CiTree-Datenbank; Artenprofil Statisch
Temperaturmittel (Mai–Okt, °C) temp_mean_may_oct_c #18 · 0.00000362 · ±0.000000512 · p<0.001 ✓ ↑ Höheres Sommermittel = stärkere Evapotranspiration über die gesamte Vegetationsperiode DWD-Klimadaten; jahresspezifisch Jährlich
P/ET₀-Anomalie (Mai–Okt) p_et0_ratio_anomaly_may_oct #19 · 0.00000244 · ±0.000000387 · p<0.001 ✓ ↓ Abweichung des P/ET₀-Index vom Langzeitmittel 1991–2020 (pro Gitterzelle); negativ = trockener/hitzer als Normal p_et0_ratio_may_oct − p_et0_climatology_1991_2020 (HYRAS pr / FAO-ET₀) Jährlich
Niederschlag (Mai–Okt, mm) precip_may_oct_mm #20 · 0.00000239 · ±0.000000248 · p<0.001 ✓ ↓ Sommer-Niederschlag reduziert Trockenstress direkt DWD-Klimadaten; jahresspezifisch Jährlich
CiTree: Kronenform citree_kronenform #21 · 0.00000239 · ±0.000000416 · p<0.001 ✓ ↑↓ Kronenform beeinflusst Transpirationsfläche und Lichtnutzung; artspezifisch CiTree-Datenbank; Artenprofil Statisch
Salzbelastung (Winterdienst-Klasse) salt_value #22 · 0.00000145 · ±0.000000226 · p<0.001 ✓ ↑ Chlorid-Ionen erhöhen osmotisches Potenzial, hemmen Feinwurzelwachstum Räumlicher Join: Baum → Winterdienst-Straßengeometrie Statisch
Straßentyp (OSM-Klasse) street_type_value #23 · 0.00000128 · ±0.000000260 · p<0.001 ✓ ↑ Hauptstraßen akkumulieren mehr Bodenversiegelung, Verdichtung und Tausalzeintrag Attribut-Join: Baumstandort → OSM-Straßennetz Statisch
Ariditätsindex P/ET₀ (Mai–Okt) p_et0_ratio_may_oct #24 · 0.000000215 · ±0.000000063 · p<0.001 ✓ ↓ Verhältnis Niederschlag/ET₀ (UNCCD-Aridity-Index); niedrigerer Index = aridere Sommerbedingungen Abgeleitet aus DWD-Klimadaten (HYRAS pr / FAO-ET₀); jahresspezifisch Jährlich
Pflanzstandort-Oberflächentyp planting_site_surface_type #25 · 0.0000000198 · ±0.00000000295 · p<0.001 ✓ ↑ Versiegelte Oberflächentypen (Pflaster, Asphalt) = höheres Risiko als Rasen oder Erde Räumlicher Join: Baum → Baumumfeld-Polygon Statisch
Gattung species_genus #26 · 0.000000000431 · ±0.000000000393 · p=0.035 ✗ ↑↓ Gattungsebene als robusterer Prädiktor bei unvollständiger Artdaten; ersetzt ga_lang Direktattribut aus Baumkataster Inventurstand
CiTree: Salzverträglichkeit citree_salzvertraeglichkeit #27 · 0.0 · ±0.0 · p=0.187 ✗ ↓ Toleranz gegenüber Tausalz; artspezifisch CiTree-Datenbank; Artenprofil Statisch
CiTree: Bodenverdichtungstoleranz citree_bodenverdichtungstoleranz #28 · 0.0 · ±0.0 · p=0.5 ✗ ↓ Toleranz gegenüber Bodenverdichtung in urbanen Standorten; artspezifisch CiTree-Datenbank; Artenprofil Statisch
CiTree: Lichtanspruch citree_lichtanspruch #29 · 0.0 · ±0.0 · p=0.5 ✗ ↑ Lichtbedürftige Arten reagieren stärker auf Beschattung und Strahlungsbelastung CiTree-Datenbank; Artenprofil Statisch
CiTree: Trockenheitstoleranz citree_trockenheitstoleranz #30 · 0.0 · ±0.0 · p=0.5 ✗ ↓ Direkte artspezifische Trockenheitstoleranz; ersetzt drought_tolerance_value CiTree-Datenbank; Artenprofil Statisch
CiTree: Gründigkeit citree_grundigkeit #31 · 0.0 · ±0.0 · p=0.5 ✗ ↓ Tiefgründige Arten erreichen tieferes Wasser; artspezifisch CiTree-Datenbank; Artenprofil Statisch
CiTree: Staunässetoleranz citree_staunaessetoleranz #32 · 0.0 · ±0.0 · p=0.5 ✗ ↓ Höhere Staunässetoleranz = geringeres Risiko bei Staunässe, aber artspezifisch variabler Trockenstress CiTree-Datenbank (Roloff et al.); Artenprofil Statisch
CiTree: Oberflächennahe Wurzeln citree_oberflaechennahe_wurzeln #33 · 0.0 · ±0.0 · p=0.5 ✗ ↑ Oberflächennahe Wurzeln = geringere Zugriffsiefe auf Wasser; artspezifisch CiTree-Datenbank; Artenprofil Statisch
CiTree: Bodenfeuchtetoleranz citree_bodenfeuchtetoleranz #34 · 0.0 · ±0.0 · p=0.5 ✗ ↓ Toleranz gegenüber wechselnder Bodenfeuchte; artspezifisch CiTree-Datenbank; Artenprofil Statisch
CiTree: Hitzeverträglichkeit citree_hitzevertraeglichkeit #35 · 0.0 · ±0.0 · p=0.5 ✗ ↓ Direkte artspezifische Hitzetoleranz; ersetzt heat_tolerance_value CiTree-Datenbank; Artenprofil Statisch

Nicht verwendete Kriterien-Features

Folgende Kriterienscores und -features stehen in der Pipeline zur Verfügung, werden im AutoML-Modell jedoch nicht als Features verwendet.

Durch korrelationsgereinigte Auswahl entfernt („Modell Hannover”, August 2026)

Feature Code-Bezeichnung Begründung
Bestandsalter (Jahre) age_value r = 0.705 mit st_umfang; Stammumfang als robusterer Proxy für Alter und Wurzelsystem
UHI-Intensität (GEONET-Wärmeinsel) m_uhi_intensity_value r = 0.841 mit m_air_temp_04h_value. Doku-Korrektur 2026-10: Kein ΔT Tag−Nacht, sondern eigenständiges GEONET-Raster (issue #171): Abweichung der modellierten Nacht-Temperatur vom Grünflächen-Mittel, complementary Raster Siedlungsraum + Verkehr. Unabhängige Messung, nicht herleitbar aus T14/T04 – die ursprüngliche Drop-Begründung war veraltet; Kandidat für Wiederaufnahme im Re-Training 2026_10
Kaltluftproduktion KPR m_cold_air_kpr_value r = −0.765 mit m_air_temp_04h_value; nur KVS im Modell, KPR redundant
Grundwasser – Median / Max / Std groundwater_level_median, groundwater_level_max, groundwater_level_std r ≥ 0.96 mit groundwater_level_latest; nur aktuellster Wert im Modell
Besonnungsdauer – saisonal m_sunlit_hours_spring, m_sunlit_hours_summer, m_sunlit_hours_autumn r = 0.995 (Frühling ↔ Herbst); ein Vegetationsperiode-Mittel (m_sunlit_hours_value) statt drei Saisons

Stand 2026-10: age_value, m_uhi_intensity_value, m_cold_air_kpr_value und m_sunlit_hours_summer wurden im 2026-10-Feature-Bundle als A/B-Kandidaten wieder aufgenommen (jeweils mit eigenständiger Messinformation bzw. korrigierter UHI-Doku); die Permutations-Importance des 2026_10-Laufs entscheidet. | GK25-Materialklasse | gk25_material_class | Ungenau (1:25 000); räumliche Auflösung zu grob für Einzelbaumdiskriminierung | | CiTree: Krankheiten/Schädlinge | citree_krankheiten_schaedlinge | Aus LHH-Kataster; hohe Fehlwertrate, keine robuste Signalbasis | | Stadtbahn-Tunnel-Distanz | subway_tunnel_dist_m | Nur regelbasiert; kein signifikanter Beitrag im ML-Modell |

Aus dem Modell entfernt (2026-09-15, Issue #217)

Folgende Features wurden aus der Allowlist entfernt, weil das 2026_09-Re-Training keine messbare Importance lieferte (Modell splittet praktisch nie darauf).

Feature Code-Bezeichnung Begründung
Sorte (Kultivar) species_cultivar Permutations-Importance ≈ 0 (p = 0.155); geringe Varianz im Datensatz
CiTree: Wuchsgeschwindigkeit citree_wuchsgeschwindigkeit Permutations-Importance ≈ 0 (p = 0.187); geringe Varianz
CiTree: Kronendurchlässigkeit citree_kronendurchlaessigkeit Permutations-Importance ≈ 0 (p = 0.187); geringe Varianz
Platzhalter-Flag (Art unvollständig) species_is_placeholder Permutations-Importance = 0 (p = 0.5); kein messbarer Beitrag

Nicht in der Allowlist (Datenqualität / Redundanz / Ablation)

Feature Code-Bezeichnung Begründung
Pflanzstruktur (Nachbardichte 25-m-Radius) planting_structure_score, neighbor_count Ablationsexperiment: keine ROC-AUC-Verbesserung; Überlappung mit dist_road_m und species_binomial
Oberflächenalbedo albedo_value, albedo_score Sentinel-2-Snapshot 2024; nicht jahresauflösend; hohe Korrelation mit Landnutzung und SVF
Besonnungsdauer Winter (h/Tag) m_sunlit_hours_winter Winterbesonnung irrelevant für Vegetationsperiode; nur Vegetationsperiode-Mittel im Modell
Feldkapazität / NFKWe nfkwe_value, field_capacity_score BK50-Bodenpolygone (1:50 000); räumliche Auflösung zu grob für Einzelbaumdiskriminierung
Baumscheibengröße / Wurzelraum pit_size_value, pit_size_score Unvollständige Datenerfassung im Kataster; Fehlwertrate zu hoch
Baumscheibenbedeckung (12 Kategorien) tree_disc_value, tree_disc_score Unvollständige Datenerfassung; zu viele fehlende Werte im Trainingsdatensatz
Trockenheitstoleranz (5 Stufen, direkt) drought_tolerance_value, drought_tolerance_score Ersetzt durch citree_trockenheitstoleranz (CiTree-Profil, informativer als direkte Art-ID)
Hitzeverträglichkeit (3 Klassen, direkt) heat_tolerance_value, heat_tolerance_score Ersetzt durch citree_hitzevertraeglichkeit (CiTree-Profil)
Art (Langform) ga_lang Ersetzt durch species_binomial + species_genus (normalisiert, robuster bei unvollständigen Artdaten)
Baumhöhe (m) m_baumhoehe Korrelation mit st_umfang/Alter; kein eigenständiger Beitrag nach Kontrolle für Baumart
Kronenfläche (m²) m_kronflaeche Proxy für Transpirationsvolumen; bereits durch kr_durchm abgedeckt
NDVI-Änderung 2020→2024 ndvi_change_2020to2024 Nicht für zukünftige Snapshots verfügbar (kein Zeitreihenfeature); nur in Ablationsvarianten genutzt

Hinweise zur zeitlichen Konsistenz im Paneldatensatz

Beim Aufbau des Längsschnittdatensatzes (Snapshots 2018–2024) werden die zeitvarianten Features für jeden Snapshot jahresspezifisch berechnet:


Mögliche Erweiterungen zur Modell-Erklärbarkeit

1. Erklärbarkeit auf Einzelbaum-Niveau

Die Permutations-Importance liefert eine globale Rangfolge über alle Bäume, erklärt aber nicht, warum das Modell für diesen Baum ein hohes Risiko vorhersagt. SHAP-Werte stehen in aktuellen AutoGluon-Versionen nicht mehr nativ zur Verfügung. Als praktikable Alternative bietet AutoGluon predictor.feature_importance() auch auf gefilterten Teilmengen an – damit lassen sich gruppenspezifische Importance-Profile erzeugen, die dem Nutzer zumindest Hinweise auf Subgruppen-Unterschiede liefern (siehe Punkt 2).

2. Artspezifische Feature-Importance

Motivation: Die globale Importance ist über alle 250+ Baumarten gemittelt. Für einzelne Arten kann sich die Rangfolge stark unterscheiden – z. B. könnte groundwater_level_latest für Tilia cordata deutlich wichtiger sein als für Robinia pseudoacacia, die tiefgründige Wurzeln ausbildet und Trockenheit besser toleriert.

Umsetzung:

for art in ["Tilia cordata", "Acer platanoides", "Robinia pseudoacacia"]:
    subset = test_data[test_data["species_binomial"] == art]
    fi = predictor.feature_importance(data=subset, num_shuffle_sets=5)
    print(art, fi.head(10))

Erkenntnisgewinn: Vergleichstabelle der Top-5-Features je Art → Grundlage für artspezifische Pflegehinweise und Stakeholder-Kommunikation.

3. Spatiale-CV-Diagnostik (implementiert 2026-10)

Motivation: Globale Metriken können zwei Probleme verdecken: (a) der Modellunterschied zwischen Innenstadt und Außenstadt, und (b) räumlich geclusterte Vorhersagefehler (Moran’s I > 0), die auf fehlende räumliche Kontextfeatures hinweisen – z. B. Bodentyp, Pflegebezirk oder Quartierstruktur.

Umsetzung: scripts/analysis/spatial_cv_diagnostics.py arbeitet auf dem oof_predictions.csv der h3_res8-Grouped-CV (Zeile = Baum×Jahr, Spalten y_true, y_proba, h3_res8) und benötigt keine Geometrie-Joins:

  1. Zonen-AUC (Innenstadt/Außenstadt): Jede Zeile wird über den Centroid ihrer H3-res8-Zelle einem Zentrum (Standard: Rathaus, ml.grouped_cv.diagnostics.zone_center) zugeordnet; innerhalb von zone_radius_m (Standard 5000 m, ≈ A37-Deckel) = inner, sonst outer. Pro Zone: n, Positive-Rate, ROC-AUC, PR-AUC, Brier.
  2. Moran’s I auf OOF-Residuen (z = y_true − y_proba, zentriert) mit H3-res8-Ring-Gewichten (Zelle + 6 Nachbarzellen). Effiziente Zellsummen-Formulierung (O(Zellen×7) statt O(Bäume²)); Signifikanz über Permutations-Test (Standard 999 Permutationen).
conda run -n bgcki_wesemann python scripts/analysis/spatial_cv_diagnostics.py `
    --oof-csv data/models/autogluon/annual_validation/<lauf>/grouped_cv/h3_res8/oof_predictions.csv `
    --config config/config.yaml

Erkenntnisgewinn: Zonen-AUC-Gap → Hinweis auf Transferprobleme zwischen Stadtteilen (z. B. Pflegepraxis-Unterschiede). Moran’s I ≈ 0 → Modell räumlich robust. Signifikant positives I → räumlich geclusterte Fehler → fehlende räumliche Features.

Ergebnis 2026_10 (h3_res8-Grouped-CV, OOF über 141.394 Baum×Jahre)

Grouped-CV-Folds (5 je Gruppierung, best_quality, 1 h/Fold):

Gruppierung AUC (Folds 1–5) Precision Recall
objectid (neue Bäume) 0,8928 / 0,8869 / 0,8788 / 0,8926 / 0,8903 0,704 0,435
h3_res8 (neue Viertel) 0,8199 / 0,8152 / 0,7878 / 0,8117 / 0,7911 0,655 0,177

Der AUC-Abstand (~0,08) zwischen „neue Bäume” und „neue Viertel” ist das gemessene Maß für den räumlichen Transfer-Effekt: Bäume aus gänzlich unerkannten H3-Zellen sind schwerer zu treffen. Der niedrige Recall (0,177) bei stabilem Precision (0,655) heißt: auf unbekannten Vierteln alarmiert das Modell seltener, aber sicherer – ein vertretbares Profil für ein Bewässerungs-Ranking. Zum Vergleich: externer 2024-Holdout (gleiche Stadt, neues Jahr) = 0,9697.

Zonen-AUC + Moran’s I auf den h3_res8-OOF-Residuen:

Zone n Positiv-Rate ROC-AUC PR-AUC Brier
inner (≤5 km Rathaus) 80.956 0,132 0,8081 0,4327 0,0942
outer 60.438 0,215 0,7788 0,5091 0,1401
gesamt 141.394 0,168 0,8032 0,4764 0,1138