Weather Shield Breda

Voorspellingssysteem dat de ernst van verkeersincidenten voorspelt op basis van weerdata

📅 Mei - Juli 2023 (Jaar 1 - Block D)
🚗 ANWB Samenwerking
🔧 LSTM, PostgreSQL, Streamlit
👥 Team van 4 studenten (8 weken)

⚠️ Dit project valt onder een NDA met ANWB. Specifieke incidentdata en locaties kunnen niet publiekelijk gedeeld worden.

Project Overzicht

Voorspellingssysteem voor ANWB dat de ernst van verkeersincidenten voorspelt op basis van weerpatronen. Gecombineerd ANWB black box rijgedrag data met real-time weerinformatie via een LSTM deep learning model. Complete webapplicatie gebouwd met PostgreSQL database en interactief Streamlit dashboard voor risico-inschatting en visualisaties.

Uitdagingen

Verschillende databronnen op elkaar afstemmen, waarbij exacte tijdstempels van incidentdata worden gekoppeld aan uurlijkse weermetingen. Tijdreeksen opstellen voor LSTM-training met een terugkijkperiode van 24 uur. Omgaan met een ongelijke verdeling in ernstdata, waarin de meeste incidenten een lage ernst hebben. Betrouwbare API-koppelingen implementeren met caching en retry-logica voor een stabiele dashboardperformance.

Resultaten

LSTM model behaalde 92% totale nauwkeurigheid met 88-96% precisie voor alle vier ernst categorieën. Succesvol weer-incident verbanden gevonden: neerslag verhoogt rem-incidenten, wind veroorzaakt stuur-incidenten en extreme temperaturen verhogen alle risico's. Werkend drie-pagina Streamlit dashboard opgeleverd met live weer API koppeling en 5-daagse uurlijkse voorspellingen.

92%
Model Nauwkeurigheid
2018-24
Data Periode
4
Ernst Categorieën
5 dagen
Voorspelling Periode

Data Combinatie

🔄 Verschillende Databronnen Samenvoegen

Het project combineert twee verschillende data sources in één coherent systeem: Incidentdata van de ANWB gecombineerd met actuele en voorspelde weerdata van de Open-Meteo-API. De uitdaging was om de data goed op elkaar af te stemmen en bruikbare kenmerken te halen voor nauwkeurige voorspellingen.

Data Bronnen

LSTM Model: Voorspellen van Ernst Over Tijd

Waarom LSTM?

LSTM (Long Short-Term Memory) netwerken zijn speciaal ontworpen voor data die over tijd verandert. Verkeersveiligheid hangt af van weerpatronen over tijd, niet alleen het huidige moment. LSTM kan patronen herkennen tussen weer en rijrisico over langere periodes.

Model Opbouw

  • Conv1D laag: 64 filters om patronen te vinden in weerdata over tijd
  • Bidirectional LSTM (laag 1): 128 units die data zowel vooruit als achteruit verwerken voor volledige context
  • Bidirectional LSTM (laag 2): 64 units voor het herkennen van complexere patronen
  • Dropout: Voorkomt dat het model te specifiek wordt op trainingsdata
  • Dense lagen: 100 → 100 → 4 neuronen voor uiteindelijke classificatie
  • Totaal aantal parameters: 377,798 trainbare parameters
  • Output: 4 ernst categorieën (0=Laag, 1=Normaal, 2=Boven Gemiddeld, 3=Hoog Risico)

Training Aanpak

  • Terugkijk periode: 24 uur geschiedenis voor elke voorspelling (vangt dagelijkse weerpatronen)
  • Input kenmerken: Temperatuur, luchtvochtigheid, neerslag, regen, windsnelheid, zonneschijn (6 weervariabelen)
  • Doel variabele: Ernst categorie afgeleid van G-kracht en incident type
  • Data normalisatie: StandardScaler voor weerkenmerken (LSTM werkt beter met genormaliseerde data)
  • Reeks generatie: Glijdend venster voor het maken van tijdreeksen

Model Prestaties & Resultaten

92%
Totale Nauwkeurigheid
88-96%
Precisie per Categorie
90-96%
Recall per Categorie
0.90
Gemiddelde F1-Score

Prestaties per Categorie

Het LSTM model behaalt goede resultaten voor alle ernst categorieën:

  • Categorie 0 (Laag Risico): 86% precisie, 96% recall, F1=0.91 - Zeer betrouwbare voorspellingen van laag risico
  • Categorie 1 (Normaal Risico): 96% precisie, 90% recall, F1=0.93 - Hoogste precisie, meest voorkomende situatie
  • Categorie 2 (Boven Gemiddeld): 86% precisie, 90% recall, F1=0.88 - Goede vroegtijdige waarschuwing
  • Categorie 3 (Hoog Risico): 83% precisie, 96% recall, F1=0.89 - Herkent bijna alle gevaarlijke situaties

Ontdekte Verbanden: Weer en Verkeersveiligheid

Belangrijkste verbanden tussen weersomstandigheden en incidenten:

  • Neerslag → Hard Remmen: Natte wegen leiden tot meer noodstops (minder grip)
  • Wind → Hard Sturen: Hoge windsnelheden veroorzaken meer stuurincidenten (vooral bij hoge voertuigen)
  • Extreme temperaturen: Zowel heel koud (<0°C, ijs) als heel warm (>30°C, vermoeidheid) verhogen incidenten
  • Tijdspatronen: Meer incidenten tijdens spitsuren (7-9u, 16-18u) ongeacht het weer

Streamlit Dashboard: Complete Webapplicatie

📊 Interactieve Webapp met 3 Pagina's

Volledig werkende Streamlit dashboard met 3 pagina's, actuele weer API koppeling en interactieve grafieken. Gepresenteerd met QR code voor live demo aan docenten en ANWB vertegenwoordigers.

Dashboard Functies per Pagina

📈 Dashboard Pagina

Belangrijkste cijfers (totaal incidenten, gemiddelde ernst), 5-daagse weersvoorspelling, model architectuur en testresultaten

🔍 Data Analyse Pagina

Filter op datum en categorie, histogrammen en box plots, incident heatmaps (uur × categorie), ernst trends (7-daags gemiddelde)

⚠️ Risico Inschatting Pagina

Uurlijkse risico voorspellingen voor 3/7 dagen, huidige status, risicogebieden op kaart, interactieve weersvoorspelling

Technische Implementatie

  • Navigatie: Multi-page app met schakelen tussen Dashboard, Data Analyse en Risico Inschatting
  • Actuele data: Open-Meteo API koppeling met caching voor betrouwbaar ophalen van weerdata
  • Model integratie: Getraind LSTM model (.keras formaat) ingeladen voor voorspellingen
  • Data caching: @st.cache_data voor snellere performance
  • Interactieve grafieken: Matplotlib en Seaborn plots ingebouwd in Streamlit
  • Kaart weergave: Leaflet kaarten voor het tonen van risicogebieden
  • Dynamisch filteren: Gebruikers kunnen datums en categorieën kiezen voor aangepaste weergave

Gebruikte Technologieën

🧠 TensorFlow/Keras
🔄 LSTM Netwerken
🐘 PostgreSQL
🎈 Streamlit
🐼 Pandas
🌤️ Open-Meteo API
📊 Matplotlib
🎨 Seaborn
🗺️ Leaflet Kaarten
🐍 Python
📈 Scikit-Learn
🔧 NumPy

Systeem Componenten

  • Data verwerking: PostgreSQL database met processen voor ANWB incidentdata en weer API koppeling
  • Kenmerken maken: Tijd afstemming (uur blokken), categorieën omzetten naar cijfers, uitschieters verwijderen, normalisatie
  • Model training: LSTM architectuur met Conv1D voorbewerking en bidirectionele lagen voor patroonherkenning
  • Voorspellingen: Direct voorspellen met 24-uur terugkijk voor 5-daagse uurlijkse voorspellingen
  • Dashboard: Streamlit app met meerdere pagina's, interactieve filters, grafieken en geografische kaarten
  • API koppeling: Open-Meteo weersvoorspelling met caching en automatische retry bij fouten
  • Deployment: Tijdelijk gehost tijdens presentatie met QR code toegang voor live demo

Mijn Specifieke Bijdragen

In het team van 4 studenten lag mijn focus op:

  • LSTM model ontwikkeling: Opzet architectuur, training proces en afstemming voor 92% nauwkeurigheid
  • PostgreSQL database: Opzet schema, data schoonmaak queries, koppelingen en views maken
  • Complete Streamlit applicatie: Alle 3 pagina's (Dashboard, Data Analyse, Risico Inschatting) inclusief navigatie, caching en API koppeling

Uitdagingen & Geleerde Lessen

  • Data afstemming is cruciaal bij meerdere bronnen: ANWB incidenten hebben exacte tijdstempels, weerdata is per uur - time_rounded kolom gemaakt voor goede koppelingen
  • LSTM reeksen maken vraagt zorgvuldigheid: 24-uur terugkijk geeft genoeg context zonder te veel ruis. Kortere periodes missen patronen, langere periodes geven te veel ruis
  • Ongelijke verdeling in ernst data: Meeste incidenten zijn lage ernst (categorie 1 dominant) - model evaluatie ging verder dan alleen nauwkeurigheid
  • API koppelingen kunnen falen: Weer API calls kunnen mislukken - caching en retry logica geïmplementeerd voor stabiel dashboard
  • PostgreSQL snelheid voor grote datasets: Indexes op tijd kolommen en goede JOIN strategieën waren essentieel voor snelle queries
  • Streamlit heeft geen geheugen: Elke klik start opnieuw - caching strategieën belangrijk voor snelheid met zware model voorspellingen
  • Kaarten vereisen precieze coördinaten: Leaflet kaart koppeling met correcte lat/lon formatting voor nauwkeurige risicogebied markers

EU AI Wet Naleving

Het project bevatte uitgebreide juridische naleving als verplicht onderdeel van de opdracht:

  • Risicobeheer (Artikel 9): Mogelijke risico's gedocumenteerd en maatregelen voor veiligheid-kritisch AI systeem
  • Data Kwaliteit (Artikel 10): Training data nauwkeurigheid gewaarborgd, vooroordelen verwijderd, voorspellingen gevalideerd
  • Technische Documentatie (Artikel 11): Volledige documentatie van model opbouw, training proces en prestaties
  • Administratie (Artikel 12): Gedetailleerde logs van ontwerpbeslissingen en model updates
  • Transparantie (Artikel 13): Dashboard bevat disclaimer "Voorspellingen zijn gebaseerd op AI systeem dat fouten kan maken"
  • Menselijk Toezicht (Artikel 14): Systeem ontworpen voor ondersteuning van beslissingen, niet voor automatische actie

Wat Zou Ik Anders Doen?

  • Attention mechanismen toevoegen voor betere uitleg welke kenmerken belangrijk zijn per voorspelling
  • Aparte modellen per incident type (HC/HB/HA) trainen voor gespecialiseerde voorspellingen
  • Meerdere methoden combineren (LSTM + GRU + Transformer) voor sterkere voorspellingen
  • Automatisch opnieuw trainen met nieuwe incidentdata
  • Cloud deployment: Productie deployment op Azure/AWS met CI/CD in plaats van tijdelijke hosting

Opgeleverde Resultaten

Project Deliverables

  • Getraind LSTM Model: 92% nauwkeurigheid voor 4-categorie ernst voorspelling, opgeslagen als .keras bestand
  • Streamlit Dashboard: 3-pagina webapplicatie met navigatie, actuele voorspellingen en interactieve grafieken
  • Code Repository: Complete codebase met model training scripts, data verwerking en dashboard implementatie
  • Presentatie: Professionele slides met model architectuur, resultaten, juridische naleving en live demo

Presentatie & Feedback

"Eindpresentatie aan docenten en ANWB vertegenwoordigers met live dashboard demo via QR code. Het systeem toonde aan dat deep learning praktisch toegepast kan worden voor verkeersveiligheid met goede technische uitvoering in database ontwikkeling, model training en deployment."

Mogelijke Toepassingen in de Echte Wereld

Hoewel dit een schoolproject was, heeft het concept duidelijke praktische toepassingen:

  • Veiligheidswaarschuwingen: Burgers waarschuwen voor gevaarlijke momenten/locaties voordat ze de weg opgaan
  • Planning middelen: Gemeentes kunnen preventieve maatregelen nemen (strooien, snelheid aanpassen) tijdens voorspelde risicoperiodes

Bekijk Ook Mijn Andere Projecten