Maj 2026, ažurirano nakon uvođenja 11-modelskog ansambla
Ovo je lokalni sistem za korekciju vremenske prognoze za Budvu. Ne pokušavam da zamijenim ECMWF, GFS, ICON ili regionalne modele. Ideja je drugačija: uzeti njihove prognoze, uporediti ih sa stvarnim mjerenjima u Budvi, naučiti gdje sistematski griješe, pa napraviti korekciju za jednu konkretnu lokaciju.
Budva je nezgodna tačka za modele. More je odmah ispred stanice, planine su odmah iza grada, a lokalni pljuskovi i bura često zavise od detalja koje globalna mreža ne vidi. Zato sirova prognoza može biti odlična za opšti region, ali promašiti temperaturu, vjetar ili završetak kiše baš u Budvi.
Sistem danas koristi 11 modela, mjerenja sa Weather Underground stanice IBUDVA5, istorijske bias tabele, prethodne runs, temperaturu mora i XGBoost korekciju po parametru. Rezultat se zapisuje u forecast_48h.json, a sajt ga prikazuje kao live prognozu.
Svaki run prolazi kroz isti tok: preuzimanje prognoza, spajanje modela, kreiranje feature-a, primjena korekcionih modela i izvoz rezultata za sajt. Najvažnije je da se sve radi u lokalnom vremenu Europe/Podgorica. Bez toga se lako desi da gledaš 17:00 u UTC, a misliš da gledaš 17:00 u Budvi.
Europe/Podgorica vremenu.Globalni meteorološki modeli rade ogroman posao: simuliraju atmosferu za cijelu planetu ili veliki region. Ali nijedan od njih nije treniran za jednu tačku između Jadrana i Lovćena. Ako model ima grid od 9, 13 ili 25 kilometara, Budva nije samo Budva, nego prosjek ćelije koja uključuje more, obalu i planinu.
Tu nastaje sistematska greška, odnosno bias. Neki modeli Budvu hlade previše noću, neki precjenjuju vjetar, neki kasne sa završetkom padavina, a neki od 0.10 mm naprave utisak da će sigurno padati kiša. Poenta ovog projekta je da te ponavljajuće greške ne ignorišemo, nego da ih izmjerimo i iskoristimo.
Najvažnija metrika je MAE, srednja apsolutna greška. Za svaki sat uzmem razliku između prognoze i stvarnog mjerenja, uklonim znak, pa izračunam prosjek.
Ako je MAE temperature 0.86°C, to znači da korigovana prognoza u prosjeku promašuje temperaturu za manje od jednog stepena. To je metrika koja se lako čita jer ostaje u istoj jedinici kao originalna varijabla: °C, m/s, hPa, %, mm.
MSE kvadrira grešku, pa velike promašaje kažnjava mnogo jače. RMSE je korijen iz MSE-a i vraća rezultat u originalnu jedinicu.
Ako su MAE i RMSE blizu, greške su uglavnom stabilne veličine. Ako je RMSE mnogo veći od MAE, to znači da model povremeno napravi velike promašaje.
Bias mjeri smjer greške. Pozitivan bias znači da model precjenjuje vrijednost, negativan da je potcjenjuje.
Ovo je posebno korisno za Budvu jer su greške često sistematske. Ako jedan model stalno pothlađuje obalnu temperaturu uveče, XGBoost može naučiti da ga u tim uslovima pomjeri naviše.
Trenutna produkcija koristi 11 izvora. Neki su globalni, neki regionalni, neki bolje hvataju sinoptičku sliku, a neki lokalnije obalne i planinske efekte.
Za većinu parametara ansambl koristi sve modele. Za padavine trenutno eksperimentišem sa jednim trusted signalom: ItaliaMeteo. KNMI i DMI ostaju u ansamblu i feature-ima, ali za sada ne mogu sami otvoriti rain gate. Ako ItaliaMeteo ne vidi barem 0.10 mm, korekcioni model prikazuje suvo.
XGBoost je ansambl stabala odlučivanja. Konačna predikcija je suma doprinosa mnogo malih stabala. Svako novo stablo pokušava da popravi greške prethodnih.
U praksi, model ne dobija samo jednu sirovu prognozu. Dobija više od hiljadu feature-a: vrijednosti svih modela, njihove razlike, ansambl statistike, sat i sezonu, istorijski bias, SST, prethodne runs i interakcije između parametara.
Trening minimizira loss funkciju uz regularizaciju. Prvi dio kaže koliko model griješi, a drugi dio kažnjava previše kompleksna stabla.
Kada XGBoost odlučuje da li da podijeli čvor u stablu, računa dobitak za split. Split se pravi samo ako je gain dovoljno koristan.
Za neke parametre model direktno predviđa finalnu vrijednost. Za neke je bolje da predviđa rezidual, odnosno koliko ansambl treba pomjeriti. Za neke parametre se koristi blend: dio XGBoost, dio sirovi ansambl.
Rezidualni pristup je često prirodniji za temperaturu, tačku rose i pritisak, jer sirovi modeli već imaju dobru fiziku. XGBoost tada ne izmišlja atmosferu od nule, nego uči lokalnu korekciju: plus 0.6°C u jednom režimu, minus 0.4°C u drugom.
Huber loss je kompromis između MSE i MAE. Male greške tretira glatko kao MSE, a velike greške tretira robusnije kao MAE. To pomaže da rijetki ekstremi ne preuzmu cijeli trening.
Kiša nije kao temperatura. Većina sati je potpuno suva, a kada padavine postoje, često su lokalne i kratke. Zato običan prosjek svih modela može razvodniti signal, ali i jedan sitan model signal može napraviti lažnu kišu.
Trenutno pravilo za prikaz je strože nego prije: ako je korigovana padavina ispod 0.20 mm, sajt je tretira kao 0.0. To direktno rješava situacije gdje se prikazivala ikonica kiše zbog 0.10 ili 0.15 mm, iako modeli praktično govore da je suvo.
Na osnovu validacionog seta, XGBoost korekcija najviše pomaže na parametrima koji imaju stabilan bias: temperaturi, pritisku, vjetru, oblačnosti i vlažnosti. Padavine se čitaju opreznije, jer su često lokalne, nelinearne i vremenski pomjerene za sat-dva.
Učitavanje podataka o tačnosti...
Na kraju, sve ovo postoji da bi live stranica bila korisnija. Korisnik ne mora da zna XGBoost, gain ili Huber loss. On treba da vidi: koliko će biti stepeni, da li ima realne kiše, kakav je vjetar, i koliko se korigovana prognoza razlikuje od sirovog ansambla.
Ovo nije novi fizički vremenski model. Ovo je korekcija postojećih modela. Ako nijedan ulazni model ne vidi pljusak, XGBoost može prepoznati uslove koji favorizuju padavine, ali ne može pouzdano odrediti tačan položaj, početak i kraj lokalne konvektivne ćelije.
Najveća poboljšanja su tamo gdje postoji stabilan, ponavljajući bias. Najveći rizik ostaje kod konvektivnih padavina, kratkih pljuskova i situacija kada je granica kiše baš preko Budve. Zato je za padavine važno čuvati i raw signale, trusted modele i lokalni nowcast kada je dostupan.
Ove slike ostaju korisne jer pokazuju zašto je korekcija uopšte potrebna.
Najbolja prognoza za Budvu ne dolazi iz slijepog vjerovanja jednom modelu. Dolazi iz mjerenja, poređenja, učenja grešaka i stalnog provjeravanja. Modeli daju fiziku atmosfere; lokalna stanica daje istinu na terenu; XGBoost povezuje jedno i drugo.
Produkcijska verzija je dostupna na live prognozi. Kod je otvoren na GitHubu.