Sredi haos u podacima: Kako se radi normalizacija za ML [Vodič]
Zašto tvoj model vidi samo velike brojeve, a ignoriše bitno?
Loš set podataka košta kompanije milione, ali tebe kao DIY developera košta živaca i neprospavanih noći. Zamisli da treniraš model gdje je jedna kolona ‘Cijena nekretnine’ (u stotinama hiljada), a druga ‘Broj soba’ (od 1 do 5). Bez normalizacije, tvoj algoritam će tretirati cijenu kao 100.000 puta bitniju informaciju. To nije učenje; to je matematičko sljepilo. Ako ne ispeglaš ove razlike, tvoj gradient descent će vrludati kao pijanac po ledu, pokušavajući da nađe minimum funkcije gubitka. Ti misliš da ti je arhitektura mreže loša, a zapravo su ti ulazni podaci sirovi i neotesani. Morate razumjeti da mašinsko učenje ne vidi kontekst, ono vidi samo magnitudu. Ako želiš da tvoj model zapravo šljaka, moraš sve te brojeve strpati u isti kavez.
Min-Max Scaling: Osnovni alat u tvojoj kutiji
Ovo je najjednostavnija tehnika – bukvalno rastezanje i skupljanje podataka dok svi ne upadnu u opseg od 0 do 1. Formula je prosta, ali moćna: (x – min) / (max – min). Osjećaj je sličan kao kada koristiš stege u radionici; pritiskaš dok sve ne bude u ravni. Ali pazi, Min-Max je osjetljiv na smeće. Ako imaš jedan outlier (npr. kuća od 50 miliona u naselju gdje su sve po 200 hiljada), tvoji normalni podaci će se sabiti u mikroskopski mali prostor blizu nule. To ubija varijansu. Koristi ovo samo kada znaš da su ti granice fiksne i da nemaš ekstremnih odstupanja. Često se koristi u obradi slika jer su pikseli uvijek između 0 i 255. Ako planiraš da radiš k-means clustering, normalizacija je obavezna jer taj algoritam računa udaljenost tačaka, a ne možeš mjeriti udaljenost ako ti je jedna osa u kilometrima, a druga u milimetrima.

Mogu li samo ostaviti podatke kakvi jesu?
Ne. Ako ostaviš neusklađene skale, tvoj model će se fokusirati na pogrešne varijable. To je kao da pokušavaš da izgradiš policu koristeći centimetre na jednoj strani i inče na drugoj. Sve će se raspasti pri prvom testu.
Standardizacija (Z-Score): Kada ti treba preciznost, a ne brzina
Za razliku od Min-Max-a, standardizacija ne gura sve u fiksni opseg. Ona centririra podatke oko nule sa standardnom devijacijom 1. Ovo je ‘Heirloom Craftsman’ pristup. Podaci zadržavaju svoj oblik, ali govore istim jezikom. Ovo je ključno kod algoritama kao što je logistička regresija ili SVM. Standardizacija je robusnija jer outlieri manje krive sliku, mada ih ne eliminiše potpuno. Kada tvoji podaci prate normalnu distribuciju (ono čuveno zvono), Z-score je zakon. Osjetit ćeš pod prstima kako model lakše konvergira. Nema onog ‘trzaja’ u gubitku koji vidiš na grafikonu kada se težine (weights) bore sa ogromnim brojevima. Svaki neuron dobija fer šansu. Ne zaboravi provjeriti kako tvoje activation functions reaguju na ulaze; mnoge od njih, poput Sigmoid ili Tanh, ‘umiru’ ako su ulazi preveliki.
WARNING: Nikada nemoj raditi fit_transform na cijelom datasetu odjednom. Prvo podijeli podatke na trening i test set. Ako normalizuješ sve skupa, tvoj model će ‘vidjeti’ prosjek test seta tokom treninga. To se zove Data Leakage. To je kao da učeniku daš odgovore na testu prije nego što sjedne u klupu.
Anatomija promašaja: Šta se desi kad zaboraviš outlier-e
Jednom sam radio na modelu za detekciju kvarova gdje su podaci dolazili sa senzora koji su povremeno ‘ludovali’ i slali vrijednost 99999. Nisam koristio RobustScaler. Rezultat? Model je mislio da je normalno stanje kad se motor zapali, a ignorisao je stvarne vibracije koje su najavljivale kvar. Ako ne počistiš smeće prije skaliranja, normalizacija će samo pojačati buku. To je onaj osjećaj kad farbaš preko rđe – izgleda okej pet minuta, a onda sve otpadne. Zato uvijek prvo uradi vizualizaciju. Ako vidiš tačke koje ‘lebde’ daleko od ostalih, ili ih briši ili koristi skalere koji ih ignorišu. Izbjegni ove greške na vrijeme jer kasnije, kad deployment krene po zlu, biće kasno za popravke.
Nauka o trenju: Zašto to uopšte radimo?
U mašinskom učenju, optimizacija je sve. Zamisli funkciju gubitka kao udubljenje u metalu. Ako podaci nisu normalizovani, to udubljenje je dugačko i usko kao kanjon. Gradient descent će se odbijati od zidova kanjona milion puta prije nego što stigne do dna. Ako normalizuješ podatke, pretvaraš kanjon u pravilnu zdjelu. Optimizer može direktno ‘skliznuti’ do minimuma. To štedi struju, vrijeme i resurse servera. Bez normalizacije, tvoji neuroni će se mučiti sa ‘zasićenjem’. Jednostavno rečeno, fizika učenja se mijenja kada brojevi postanu pitomi. Koristi moć matematike da smanjiš otpor mašine. Ako radiš u Pythonu, Scikit-learn biblioteka ima sve što ti treba, ali nemoj samo slijepo kucati kod. Razumi šta se dešava ispod haube.
Koji skaler odabrati za moj projekt?
Ako ne znaš odakle početi, probaj StandardScaler. On je najsigurnija opcija za većinu slučajeva. Ako radiš sa neuronskim mrežama i slikama, Min-Max je tvoj prijatelj. Ako su ti podaci prljavi kao pod u garaži subotom popodne, uzmi RobustScaler. On koristi medijanu i kvartile, pa ga outlieri ne dotiču previše. Testiraj, mjeri, pa tek onda odluči. Ne vjeruj tutorijalima na prvu; tvoji podaci su unikatni i zahtijevaju specifičan pristup.
Finansijski šamar: Koliko te košta loša priprema?
Treniranje velikog modela na Azure ili AWS platformi košta po satu. Ako ti model konvergira 10 puta sporije jer su ti podaci haotični, bukvalno bacaš novac kroz prozor. Ušteda od 30% na vremenu treninga može značiti razliku između profita i bankrota za mali biznis. Normalizacija nije ‘šminka’ za tvoj kod; to je inžinjerska nužnost. Sredi taj haos danas, ili ćeš plaćati račune za procesore koji vrte u prazno. Nauči kako da središ Excel tabele prije nego što ih uopšte ubaciš u Python. Čist podatak je pola posla, druga polovina je pametno skaliranje.

![Sredi haos u podacima: Kako se radi normalizacija za ML [Vodič]](https://aiskola.org/wp-content/uploads/2026/02/Sredi-haos-u-podacima-Kako-se-radi-normalizacija-za-ML-Vodic.jpeg)
Ovo je zaista važan post koji često zanemarimo dok radimo na modelima. Lično sam prošao kroz iskustvo kada sam koristio Min-Max scaling na prljavim podacima sa mnogim outlierima i rezultat je bio katastrofalan. Tek kad sam primijenio RobustScaler, situacija je zasvjetlila. Često se čini da je jednostavnije koristiti nešto što je default, ali ovaj post podsjeća koliko je važno razumjeti šta se dešava ispod haube. Mene zanima, da li imate preporuke za automatsko prepoznavanje outliera u datasetovima, prije nego što odlučite koji scaler koristiti? Ponekad, odluka o scaliranju može biti razlika između dobrog i lošeg modela, posebno kada je u pitanju veći projekat.