Translated ['src/AI/AI-Unsupervised-Learning-Algorithms.md'] to sr

This commit is contained in:
Translator 2025-06-08 00:49:51 +00:00
parent 106e92d19e
commit 04f2ea41da

View File

@ -4,24 +4,24 @@
## Nesupervizovano učenje
Nesupervizovano učenje je vrsta mašinskog učenja gde se model obučava na podacima bez označenih odgovora. Cilj je pronaći obrasce, strukture ili odnose unutar podataka. Za razliku od supervizovanog učenja, gde model uči iz označenih primera, algoritmi nesupervizovanog učenja rade sa neoznačenim podacima.
Nesupervizovano učenje je vrsta mašinskog učenja gde se model obučava na podacima bez označenih odgovora. Cilj je pronaći obrasce, strukture ili odnose unutar podataka. Za razliku od supervizovanog učenja, gde model uči iz označenih primera, algoritmi nesupervizovanog učenja rade sa neoznačenim podacima.
Nesupervizovano učenje se često koristi za zadatke kao što su klasterizacija, smanjenje dimenzionalnosti i detekcija anomalija. Može pomoći u otkrivanju skrivenih obrazaca u podacima, grupisanju sličnih stavki ili smanjenju složenosti podataka uz očuvanje njihovih suštinskih karakteristika.
### K-Means klasterizacija
K-Means je algoritam klasterizacije zasnovan na centroidima koji deli podatke u K klastera dodeljujući svaku tačku najbližem srednjem klasteru. Algoritam funkcioniše na sledeći način:
1. **Inicijalizacija**: Izaberite K početnih centara klastera (centroida), često nasumično ili putem pametnijih metoda kao što je k-means++
2. **Dodeljivanje**: Dodelite svaku tačku podataka najbližem centroidu na osnovu metričke udaljenosti (npr. Euklidska udaljenost).
3. **Ažuriranje**: Ponovo izračunajte centre uzimajući prosek svih tačaka podataka dodeljenih svakom klasteru.
K-Means je algoritam klasterizacije zasnovan na centroidima koji deli podatke u K klastera dodeljujući svaku tačku najbližem srednjem klasteru. Algoritam funkcioniše na sledeći način:
1. **Inicijalizacija**: Izaberite K početnih centara klastera (centroida), često nasumično ili putem pametnijih metoda kao što je k-means++
2. **Dodeljivanje**: Dodelite svaku tačku podataka najbližem centroidu na osnovu metričke udaljenosti (npr. Euklidska udaljenost).
3. **Ažuriranje**: Ponovo izračunajte centre uzimajući prosek svih tačaka podataka dodeljenih svakom klasteru.
4. **Ponoviti**: Koraci 23 se ponavljaju dok se dodeljivanje klastera ne stabilizuje (centroidi se više ne pomeraju značajno).
> [!TIP]
> [!TIP]
> *Upotreba u sajber bezbednosti:* K-Means se koristi za detekciju upada klasterizacijom mrežnih događaja. Na primer, istraživači su primenili K-Means na KDD Cup 99 skupu podataka o upadima i otkrili da efikasno deli saobraćaj na normalne i napadačke klastere. U praksi, analitičari bezbednosti mogu klasterizovati unose logova ili podatke o ponašanju korisnika kako bi pronašli grupe sličnih aktivnosti; bilo koje tačke koje ne pripadaju dobro formiranom klasteru mogu ukazivati na anomalije (npr. nova varijanta malvera koja formira svoj mali klaster). K-Means takođe može pomoći u klasifikaciji porodica malvera grupisanjem binarnih datoteka na osnovu profila ponašanja ili vektora karakteristika.
#### Odabir K
#### Odabir K
Broj klastera (K) je hiperparametar koji treba definisati pre pokretanja algoritma. Tehnike poput Elbow metode ili Silhouette skora mogu pomoći u određivanju odgovarajuće vrednosti za K procenom performansi klasterizacije:
- **Elbow metoda**: Prikazivanje sume kvadratnih udaljenosti svake tačke do njenog dodeljenog centroida klastera kao funkcije K. Potražite "lakat" tačku gde se brzina opadanja naglo menja, što ukazuje na odgovarajući broj klastera.
- **Elbow metoda**: Prikazivanje sume kvadratnih udaljenosti svake tačke do njenog dodeljenog centroida klastera kao funkcije K. Potražite "lakat" tačku gde se brzina opadanja naglo menja, što ukazuje na odgovarajući broj klastera.
- **Silhouette skor**: Izračunajte silhouette skor za različite vrednosti K. Viši silhouette skor ukazuje na bolje definisane klastere.
#### Pretpostavke i ograničenja
@ -67,7 +67,7 @@ Hijerarhijsko klasterovanje gradi hijerarhiju klastera koristeći ili pristup od
1. **Aglomerativno (odozdo prema gore)**: Počnite sa svakom tačkom podataka kao posebnim klasterom i iterativno spajajte najbliže klastere dok ne ostane jedan klaster ili se ne ispuni kriterijum zaustavljanja.
2. **Divizivno (odozgo prema dole)**: Počnite sa svim tačkama podataka u jednom klasteru i iterativno delite klastere dok svaka tačka podataka ne postane svoj vlastiti klaster ili se ne ispuni kriterijum zaustavljanja.
Aglomerativno klasterovanje zahteva definiciju međuklaster udaljenosti i kriterijum povezivanja da bi se odlučilo koji klasteri će se spojiti. Uobičajene metode povezivanja uključuju pojedinačno povezivanje (udaljenost najbližih tačaka između dva klastera), potpuno povezivanje (udaljenost najdaljih tačaka), prosečno povezivanje itd., a metrička udaljenost je često euklidska. Izbor povezivanja utiče na oblik proizvedenih klastera. Nema potrebe da se unapred definiše broj klastera K; možete "prerezati" dendrogram na odabranom nivou da biste dobili željeni broj klastera.
Aglomerativno klasterovanje zahteva definiciju međuklaster udaljenosti i kriterijum povezivanja da bi se odlučilo koji klasteri će se spojiti. Uobičajene metode povezivanja uključuju pojedinačno povezivanje (udaljenost najbližih tačaka između dva klastera), potpuno povezivanje (udaljenost najdaljih tačaka), prosečno povezivanje itd., a metrička udaljenost je često euklidska. Izbor povezivanja utiče na oblik klastera koji se proizvode. Nema potrebe da se unapred definiše broj klastera K; možete "prerezati" dendrogram na odabranom nivou da biste dobili željeni broj klastera.
Hijerarhijsko klasterovanje proizvodi dendrogram, strukturu nalik drvetu koja prikazuje odnose između klastera na različitim nivoima granularnosti. Dendrogram se može prerezati na željenom nivou da bi se dobio specifičan broj klastera.
@ -104,7 +104,7 @@ print(f"Cluster sizes for 3 clusters: {np.bincount(clusters_3)}")
### DBSCAN (Klasterovanje na bazi gustine sa šumom)
DBSCAN je algoritam klasterovanja zasnovan na gustini koji grupiše tačke koje su blisko smeštene zajedno, dok označava tačke u oblastima niske gustine kao izuzetke. Posebno je koristan za skupove podataka sa različitim gustinama i nesfernim oblicima.
DBSCAN je algoritam za klasterovanje zasnovan na gustini koji grupiše tačke koje su blisko smeštene zajedno, dok označava tačke u oblastima niske gustine kao izuzetke. Posebno je koristan za skupove podataka sa različitim gustinama i nesfernim oblicima.
DBSCAN funkcioniše definisanjem dva parametra:
- **Epsilon (ε)**: Maksimalna udaljenost između dve tačke da bi se smatrale delom istog klastera.
@ -115,14 +115,14 @@ DBSCAN identifikuje glavne tačke, tačke na granici i tačke šuma:
- **Tačka na granici**: Tačka koja se nalazi unutar ε udaljenosti od glavne tačke, ali ima manje od MinPts suseda.
- **Tačka šuma**: Tačka koja nije ni glavna tačka ni tačka na granici.
Klasterovanje se nastavlja biranjem neposećene glavne tačke, označavanjem kao novog klastera, a zatim rekurzivnim dodavanjem svih tačaka koje su gustinski dostupne od nje (glavne tačke i njihovi susedi, itd.). Tačke na granici se dodaju klasteru obližnje glavne tačke. Nakon proširenja svih dostupnih tačaka, DBSCAN prelazi na drugu neposećenu glavnu tačku da započne novi klaster. Tačke koje nisu dostignute od strane nijedne glavne tačke ostaju označene kao šum.
Klasterovanje se nastavlja biranjem neposećene glavne tačke, označavanjem kao novog klastera, a zatim rekurzivnim dodavanjem svih tačaka koje su dostupne po gustini (glavne tačke i njihovi susedi, itd.). Tačke na granici se dodaju klasteru obližnje glavne tačke. Nakon proširenja svih dostupnih tačaka, DBSCAN prelazi na drugu neposećenu glavnu tačku da započne novi klaster. Tačke koje nisu dostignute od strane nijedne glavne tačke ostaju označene kao šum.
> [!TIP]
> *Upotreba u sajber bezbednosti:* DBSCAN je koristan za detekciju anomalija u mrežnom saobraćaju. Na primer, normalna aktivnost korisnika može formirati jedan ili više gustih klastera u prostoru karakteristika, dok se nove napade ponašanja pojavljuju kao rasute tačke koje će DBSCAN označiti kao šum (izuzetke). Koristi se za klasterovanje zapisa mrežnog toka, gde može detektovati skeniranja portova ili saobraćaj usluga uskraćivanja kao retke oblasti tačaka. Druga primena je grupisanje varijanti malvera: ako se većina uzoraka grupiše po porodicama, ali se nekoliko ne uklapa nigde, tih nekoliko bi moglo biti zero-day malver. Sposobnost označavanja šuma znači da se timovi za bezbednost mogu fokusirati na istraživanje tih izuzetaka.
> *Upotreba u sajber bezbednosti:* DBSCAN je koristan za detekciju anomalija u mrežnom saobraćaju. Na primer, normalna aktivnost korisnika može formirati jedan ili više gustih klastera u prostoru karakteristika, dok se nove napade ponašanja pojavljuju kao rasute tačke koje će DBSCAN označiti kao šum (izuzetke). Koristi se za klasterovanje zapisa mrežnog toka, gde može detektovati skeniranja portova ili saobraćaj usluga uskraćivanja kao retke oblasti tačaka. Druga primena je grupisanje varijanti malvera: ako se većina uzoraka grupiše po porodicama, ali se nekoliko ne uklapa nigde, tih nekoliko bi moglo biti zero-day malver. Sposobnost označavanja šuma znači da se bezbednosni timovi mogu fokusirati na istraživanje tih izuzetaka.
#### Pretpostavke i Ograničenja
**Pretpostavke i Snage:** DBSCAN ne pretpostavlja sferne klastere može pronaći klastere proizvoljnog oblika (čak i lančaste ili susedne klastere). Automatski određuje broj klastera na osnovu gustine podataka i može efikasno identifikovati izuzetke kao šum. Ovo ga čini moćnim za stvarne podatke sa nepravilnim oblicima i šumom. Otporan je na izuzetke (za razliku od K-Means, koji ih prisiljava u klastere). Dobro funkcioniše kada klasteri imaju otprilike uniformnu gustinu.
**Pretpostavke i Snage:** DBSCAN ne pretpostavlja sferne klastere može pronaći klastere proizvoljnog oblika (čak i lančaste ili susedne klastere). Automatski određuje broj klastera na osnovu gustine podataka i može efikasno identifikovati izuzetke kao šum. To ga čini moćnim za stvarne podatke sa nepravilnim oblicima i šumom. Otporan je na izuzetke (za razliku od K-Means, koji ih prisiljava u klastere). Dobro funkcioniše kada klasteri imaju otprilike uniformnu gustinu.
**Ograničenja:** Performanse DBSCAN-a zavise od izbora odgovarajućih ε i MinPts vrednosti. Može imati problema sa podacima koji imaju različite gustine jedna ε ne može obuhvatiti i guste i retke klastere. Ako je ε previše mala, označava većinu tačaka kao šum; prevelika, i klasteri se mogu pogrešno spojiti. Takođe, DBSCAN može biti neefikasan na veoma velikim skupovima podataka (naivno $O(n^2)$, iako prostorno indeksiranje može pomoći). U visokodimenzionalnim prostorima karakteristika, koncept "udaljenosti unutar ε" može postati manje značajan (prokletstvo dimenzionalnosti), i DBSCAN može zahtevati pažljivo podešavanje parametara ili može propasti u pronalaženju intuitivnih klastera. I pored ovoga, proširenja poput HDBSCAN rešavaju neka pitanja (poput varijabilne gustine).
@ -150,21 +150,21 @@ num_noise = np.sum(labels == -1)
print(f"DBSCAN found {num_clusters} clusters and {num_noise} noise points")
print("Cluster labels for first 10 points:", labels[:10])
```
U ovom isječku, prilagodili smo `eps` i `min_samples` da odgovaraju našoj skali podataka (15.0 u jedinicama karakteristika, i zahtevajući 5 tačaka za formiranje klastera). DBSCAN bi trebao pronaći 2 klastera (klastere normalnog saobraćaja) i označiti 5 ubačenih izuzetaka kao šum. Izlazimo broj klastera u odnosu na tačke šuma kako bismo to potvrdili. U stvarnom okruženju, može se iterirati preko ε (koristeći heuristiku grafika k-udaljenosti za odabir ε) i MinPts (često postavljen na oko dimenzionalnosti podataka + 1 kao pravilo prsta) kako bi se pronašli stabilni rezultati klasterovanja. Sposobnost da se eksplicitno označi šum pomaže u odvojenju potencijalnih podataka o napadima za dalju analizu.
U ovom isječku, prilagodili smo `eps` i `min_samples` da odgovaraju našoj skali podataka (15.0 u jedinicama karakteristika, i zahtevajući 5 tačaka za formiranje klastera). DBSCAN bi trebao pronaći 2 klastera (klastere normalnog saobraćaja) i označiti 5 ubačenih izuzetaka kao šum. Izašli smo sa brojem klastera u odnosu na tačke šuma kako bismo to potvrdili. U stvarnom okruženju, može se iterirati preko ε (koristeći heuristiku grafika k-udaljenosti za izbor ε) i MinPts (često postavljen na oko dimenzionalnosti podataka + 1 kao pravilo prsta) kako bi se pronašli stabilni rezultati klasterisanja. Sposobnost da se eksplicitno označi šum pomaže u odvojenju potencijalnih podataka o napadima za dalju analizu.
</details>
### Analiza glavnih komponenti (PCA)
PCA je tehnika za **smanjenje dimenzionalnosti** koja pronalazi novi skup ortogonalnih osa (glavnih komponenti) koje hvataju maksimalnu varijansu u podacima. U jednostavnim terminima, PCA rotira i projektuje podatke na novi koordinatni sistem tako da prva glavna komponenta (PC1) objašnjava najveću moguću varijansu, druga PC (PC2) objašnjava najveću varijansu ortogonalnu na PC1, i tako dalje. Matematički, PCA izračunava sopstvene vektore kovarijantne matrice podataka ovi sopstveni vektori su pravci glavnih komponenti, a odgovarajući sopstveni vrednosti ukazuju na količinu varijanse koju objašnjava svaka. Često se koristi za ekstrakciju karakteristika, vizualizaciju i smanjenje šuma.
PCA je tehnika za **smanjenje dimenzionalnosti** koja pronalazi novi skup ortogonalnih osa (glavnih komponenti) koje hvataju maksimalnu varijansu u podacima. U jednostavnim terminima, PCA rotira i projektuje podatke na novi koordinatni sistem tako da prva glavna komponenta (PC1) objašnjava najveću moguću varijansu, druga PC (PC2) objašnjava najveću varijansu ortogonalnu na PC1, i tako dalje. Matematički, PCA izračunava sopstvene vektore kovarijacione matrice podataka ovi sopstveni vektori su pravci glavnih komponenti, a odgovarajući sopstveni vrednosti ukazuju na količinu varijanse koju objašnjava svaki. Često se koristi za ekstrakciju karakteristika, vizualizaciju i smanjenje šuma.
Napomena da je ovo korisno ako dimenzije skupa podataka sadrže **značajne linearne zavisnosti ili korelacije**.
PCA funkcioniše identifikovanjem glavnih komponenti podataka, koje su pravci maksimalne varijanse. Koraci uključeni u PCA su:
1. **Standardizacija**: Centriranje podataka oduzimanjem srednje vrednosti i skaliranjem na jediničnu varijansu.
2. **Kovarijantna matrica**: Izračunavanje kovarijantne matrice standardizovanih podataka kako bi se razumele veze između karakteristika.
3. **Dezintegracija sopstvenih vrednosti**: Izvršavanje dezintegracije sopstvenih vrednosti na kovarijantnoj matrici kako bi se dobile sopstvene vrednosti i sopstveni vektori.
4. **Odabir glavnih komponenti**: Sortiranje sopstvenih vrednosti u opadajućem redosledu i odabir vrhunskih K sopstvenih vektora koji odgovaraju najvećim sopstvenim vrednostima. Ovi sopstveni vektori formiraju novi prostor karakteristika.
2. **Kovarijaciona matrica**: Izračunavanje kovarijacione matrice standardizovanih podataka kako bi se razumele veze između karakteristika.
3. **Dezintegracija sopstvenih vrednosti**: Izvršavanje dezintegracije sopstvenih vrednosti na kovarijacionoj matrici kako bi se dobile sopstvene vrednosti i sopstveni vektori.
4. **Izbor glavnih komponenti**: Sortiranje sopstvenih vrednosti u opadajućem redosledu i izbor vrhunskih K sopstvenih vektora koji odgovaraju najvećim sopstvenim vrednostima. Ovi sopstveni vektori formiraju novi prostor karakteristika.
5. **Transformacija podataka**: Projektovanje originalnih podataka na novi prostor karakteristika koristeći odabrane glavne komponente.
PCA se široko koristi za vizualizaciju podataka, smanjenje šuma i kao korak predobrada za druge algoritme mašinskog učenja. Pomaže u smanjenju dimenzionalnosti podataka dok zadržava njegovu suštinsku strukturu.
@ -174,37 +174,37 @@ Sopstvena vrednost je skalar koji ukazuje na količinu varijanse koju hvata njen
Zamislite da je A kvadratna matrica, a v je nenulti vektor tako da: `A * v = λ * v`
gde:
- A je kvadratna matrica poput [ [1, 2], [2, 1]] (npr. kovarijantna matrica)
- v je sopstveni vektor (npr. [1, 1])
- A je kvadratna matrica poput [ [1, 2], [2, 1]] (npr., kovarijaciona matrica)
- v je sopstveni vektor (npr., [1, 1])
Tada, `A * v = [ [1, 2], [2, 1]] * [1, 1] = [3, 3]` što će biti sopstvena vrednost λ pomnožena sa sopstvenim vektorom v, čineći sopstvenu vrednost λ = 3.
#### Sopstvene vrednosti i sopstveni vektori u PCA
Objasnimo ovo sa primerom. Zamislite da imate skup podataka sa puno slika lica u sivim tonovima dimenzija 100x100 piksela. Svaki piksel se može smatrati karakteristikom, tako da imate 10,000 karakteristika po slici (ili vektor od 10000 komponenti po slici). Ako želite da smanjite dimenzionalnost ovog skupa podataka koristeći PCA, pratili biste ove korake:
Objasnimo ovo sa primerom. Zamislite da imate skup podataka sa puno slika lica u sivim tonovima dimenzija 100x100 piksela. Svaki piksel se može smatrati karakteristikom, tako da imate 10,000 karakteristika po slici (ili vektor od 10,000 komponenti po slici). Ako želite da smanjite dimenzionalnost ovog skupa podataka koristeći PCA, pratili biste ove korake:
1. **Standardizacija**: Centriranje podataka oduzimanjem srednje vrednosti svake karakteristike (piksela) iz skupa podataka.
2. **Kovarijantna matrica**: Izračunavanje kovarijantne matrice standardizovanih podataka, koja hvata kako se karakteristike (pikseli) zajedno menjaju.
- Napomena da kovarijansa između dve varijable (piksela u ovom slučaju) ukazuje na to koliko se zajedno menjaju, tako da je ideja ovde otkriti koji piksela imaju tendenciju da se povećavaju ili smanjuju zajedno sa linearnom vezom.
- Na primer, ako piksel 1 i piksel 2 imaju tendenciju da se zajedno povećavaju, kovarijansa između njih će biti pozitivna.
- Kovarijantna matrica će biti 10,000x10,000 matrica gde svaki unos predstavlja kovarijansu između dva piksela.
3. **Rešavanje sopstvene vrednosti**: Sopstvena vrednost koju treba rešiti je `C * v = λ * v` gde je C kovarijantna matrica, v je sopstveni vektor, a λ je sopstvena vrednost. Može se rešiti korišćenjem metoda kao što su:
- **Dezintegracija sopstvenih vrednosti**: Izvršavanje dezintegracije sopstvenih vrednosti na kovarijantnoj matrici kako bi se dobile sopstvene vrednosti i sopstveni vektori.
2. **Kovarijaciona matrica**: Izračunavanje kovarijacione matrice standardizovanih podataka, koja hvata kako se karakteristike (pikseli) zajedno menjaju.
- Napomena da kovarijacija između dve varijable (piksela u ovom slučaju) ukazuje na to koliko se zajedno menjaju, tako da je ideja ovde da se otkrije koji pikseli imaju tendenciju da se povećavaju ili smanjuju zajedno sa linearnom vezom.
- Na primer, ako piksel 1 i piksel 2 imaju tendenciju da se zajedno povećavaju, kovarijacija između njih će biti pozitivna.
- Kovarijaciona matrica će biti 10,000x10,000 matrica gde svaki unos predstavlja kovarijaciju između dva piksela.
3. **Rešavanje sopstvene vrednosti**: Sopstvena vrednost koju treba rešiti je `C * v = λ * v` gde je C kovarijaciona matrica, v je sopstveni vektor, a λ je sopstvena vrednost. Može se rešiti korišćenjem metoda kao što su:
- **Dezintegracija sopstvenih vrednosti**: Izvršavanje dezintegracije sopstvenih vrednosti na kovarijacionoj matrici kako bi se dobile sopstvene vrednosti i sopstveni vektori.
- **Dezintegracija singularnih vrednosti (SVD)**: Alternativno, možete koristiti SVD za dekompoziciju matrice podataka u singularne vrednosti i vektore, što takođe može dati glavne komponente.
4. **Odabir glavnih komponenti**: Sortiranje sopstvenih vrednosti u opadajućem redosledu i odabir vrhunskih K sopstvenih vektora koji odgovaraju najvećim sopstvenim vrednostima. Ovi sopstveni vektori predstavljaju pravce maksimalne varijanse u podacima.
4. **Izbor glavnih komponenti**: Sortiranje sopstvenih vrednosti u opadajućem redosledu i izbor vrhunskih K sopstvenih vektora koji odgovaraju najvećim sopstvenim vrednostima. Ovi sopstveni vektori predstavljaju pravce maksimalne varijanse u podacima.
> [!TIP]
> *Upotrebe u sajber bezbednosti:* Uobičajena upotreba PCA u bezbednosti je smanjenje karakteristika za otkrivanje anomalija. Na primer, sistem za otkrivanje upada sa 40+ mrežnih metrika (poput NSL-KDD karakteristika) može koristiti PCA da smanji na nekoliko komponenti, sumirajući podatke za vizualizaciju ili unošenje u algoritme klasterovanja. Analitičari mogu prikazati mrežni saobraćaj u prostoru prvih dve glavne komponente kako bi videli da li se napadi odvajaju od normalnog saobraćaja. PCA takođe može pomoći u eliminaciji redundantnih karakteristika (poput poslatih bajtova u odnosu na primljene bajtove ako su korelisani) kako bi se algoritmi detekcije učinili robusnijim i bržim.
> *Upotrebe u sajber bezbednosti:* Uobičajena upotreba PCA u bezbednosti je smanjenje karakteristika za otkrivanje anomalija. Na primer, sistem za otkrivanje upada sa 40+ mrežnih metrika (poput NSL-KDD karakteristika) može koristiti PCA da smanji na nekoliko komponenti, sumirajući podatke za vizualizaciju ili unošenje u algoritme klasterisanja. Analitičari mogu prikazati mrežni saobraćaj u prostoru prvih dve glavne komponente kako bi videli da li se napadi odvajaju od normalnog saobraćaja. PCA takođe može pomoći u eliminaciji redundantnih karakteristika (poput poslatih bajtova u odnosu na primljene bajtove ako su korelisani) kako bi se algoritmi detekcije učinili robusnijim i bržim.
#### Pretpostavke i ograničenja
PCA pretpostavlja da su **glavne ose varijanse značajne** to je linearna metoda, pa hvata linearne korelacije u podacima. To je nesupervizovana metoda jer koristi samo kovarijansu karakteristika. Prednosti PCA uključuju smanjenje šuma (komponente male varijanse često odgovaraju šumu) i dekorelaciju karakteristika. Efikasna je u računski umerenim dimenzijama i često je koristan korak predobrada za druge algoritme (da ublaži prokletstvo dimenzionalnosti). Jedno ograničenje je to što je PCA ograničen na linearne odnose neće uhvatiti složenu nelinearnu strukturu (dok autoenkoderi ili t-SNE mogu). Takođe, komponente PCA mogu biti teške za interpretaciju u smislu originalnih karakteristika (one su kombinacije originalnih karakteristika). U sajber bezbednosti, treba biti oprezan: napad koji uzrokuje samo suptilnu promenu u karakteristici male varijanse možda se neće pojaviti u vrhunskim PC-ima (pošto PCA prioritizuje varijansu, a ne nužno "zanimljivost").
PCA pretpostavlja da su **glavne ose varijanse značajne** to je linearna metoda, pa hvata linearne korelacije u podacima. To je nesupervizovana metoda jer koristi samo kovarijaciju karakteristika. Prednosti PCA uključuju smanjenje šuma (komponente male varijanse često odgovaraju šumu) i dekorelaciju karakteristika. Efikasna je u računski za umereno visoke dimenzije i često je koristan korak predobrada za druge algoritme (da ublaži prokletstvo dimenzionalnosti). Jedno ograničenje je to što je PCA ograničen na linearne odnose neće uhvatiti složenu nelinearnu strukturu (dok autoenkoderi ili t-SNE mogu). Takođe, komponente PCA mogu biti teške za interpretaciju u smislu originalnih karakteristika (one su kombinacije originalnih karakteristika). U sajber bezbednosti, treba biti oprezan: napad koji uzrokuje samo suptilnu promenu u karakteristici male varijanse možda se neće pojaviti u vrhunskim PC-ima (pošto PCA prioritizuje varijansu, a ne nužno "zanimljivost").
<details>
<summary>Primer -- Smanjenje dimenzija mrežnih podataka
</summary>
Pretpostavimo da imamo logove mrežnih konekcija sa više karakteristika (npr. trajanja, bajtova, brojeva). Generisaćemo sintetički 4-dimenzionalni skup podataka (sa nekim korelacijama između karakteristika) i koristiti PCA da ga smanjimo na 2 dimenzije za vizualizaciju ili dalju analizu.
Pretpostavimo da imamo logove mrežnih konekcija sa više karakteristika (npr., trajanja, bajtova, brojeva). Generisaćemo sintetički 4-dimenzionalni skup podataka (sa nekim korelacijama između karakteristika) i koristiti PCA da ga smanjimo na 2 dimenzije za vizualizaciju ili dalju analizu.
```python
from sklearn.decomposition import PCA
@ -231,7 +231,7 @@ Ovde smo uzeli ranije normalne klastere saobraćaja i proširili svaku tačku po
### Gaussian Mixture Models (GMM)
Gaussian Mixture Model pretpostavlja da su podaci generisani iz mešavine **several Gaussian (normal) distributions with unknown parameters**. U suštini, to je probabilistički model klasterisanja: pokušava da blago dodeli svaku tačku jednom od K Gaussian komponenti. Svaka Gaussian komponenta k ima vektor srednje vrednosti (μ_k), kovarijantnu matricu (Σ_k) i težinu mešanja (π_k) koja predstavlja koliko je taj klaster prisutan. Za razliku od K-Means koji vrši "tvrde" dodele, GMM daje svakoj tački verovatnoću pripadnosti svakom klasteru.
Gaussian Mixture Model pretpostavlja da su podaci generisani iz mešavine **several Gaussian (normal) distributions with unknown parameters**. U suštini, to je probabilistički model klasterisanja: pokušava da blago dodeli svaku tačku jednom od K Gaussian komponenti. Svaka Gaussian komponenta k ima vektor srednje vrednosti (μ_k), kovarijantnu matricu (Σ_k) i težinu mešanja (π_k) koja predstavlja koliko je taj klaster prisutan. Za razliku od K-Means koji vrši "tvrde" dodeljivanje, GMM daje svakoj tački verovatnoću pripadnosti svakom klasteru.
GMM prilagođavanje se obično vrši putem algoritma Expectation-Maximization (EM):
@ -255,11 +255,11 @@ gde:
Rezultat je skup Gaussian distribucija koje kolektivno modeliraju ukupnu distribuciju podataka. Možemo koristiti prilagođeni GMM za klasterisanje dodeljivanjem svake tačke Gaussian-u sa najvišom verovatnoćom, ili zadržati verovatnoće za nesigurnost. Takođe se može proceniti verovatnoća novih tačaka da vide da li se uklapaju u model (korisno za otkrivanje anomalija).
> [!TIP]
> *Upotrebe u sajber bezbednosti:* GMM se može koristiti za otkrivanje anomalija modelovanjem distribucije normalnih podataka: svaka tačka sa vrlo niskom verovatnoćom pod naučenom mešavinom se označava kao anomalija. Na primer, mogli biste obučiti GMM na karakteristikama legitimnog mrežnog saobraćaja; napadna veza koja se ne sliči nijednom naučenom klasteru imala bi nisku verovatnoću. GMM-ovi se takođe koriste za klasterisanje aktivnosti gde klasteri mogu imati različite oblike npr. grupisanje korisnika prema profilima ponašanja, gde karakteristike svakog profila mogu biti slične Gaussian-u, ali sa sopstvenom strukturom varijanse. Drugi scenario: u otkrivanju phishing-a, legitimne karakteristike e-pošte mogu formirati jedan Gaussian klaster, poznati phishing drugi, a nove phishing kampanje mogu se pojaviti kao ili odvojeni Gaussian ili kao tačke sa niskom verovatnoćom u odnosu na postojeću mešavinu.
> *Upotreba u sajber bezbednosti:* GMM se može koristiti za otkrivanje anomalija modelovanjem distribucije normalnih podataka: svaka tačka sa vrlo niskom verovatnoćom pod naučenom mešavinom se označava kao anomalija. Na primer, mogli biste obučiti GMM na karakteristikama legitimnog mrežnog saobraćaja; napadna veza koja se ne sliči nijednom naučenom klasteru imala bi nisku verovatnoću. GMM-ovi se takođe koriste za klasterisanje aktivnosti gde klasteri mogu imati različite oblike npr., grupisanje korisnika prema profilima ponašanja, gde karakteristike svakog profila mogu biti slične Gaussian-u, ali sa sopstvenom strukturom varijanse. Drugi scenario: u otkrivanju phishing-a, legitimne karakteristike e-pošte mogu formirati jedan Gaussian klaster, poznati phishing drugi, a nove phishing kampanje mogu se pojaviti kao ili odvojeni Gaussian ili kao tačke sa niskom verovatnoćom u odnosu na postojeću mešavinu.
#### Pretpostavke i Ograničenja
GMM je generalizacija K-Means koja uključuje kovarijansu, tako da klasteri mogu biti elipsoidni (ne samo sferni). Rukuje klasterima različitih veličina i oblika ako je kovarijansa puna. Mekano klasterisanje je prednost kada su granice klastera nejasne npr. u sajber bezbednosti, događaj može imati osobine više tipova napada; GMM može odražavati tu nesigurnost sa verovatnoćama. GMM takođe pruža procenu gustine verovatnoće podataka, korisnu za otkrivanje outliera (tačaka sa niskom verovatnoćom pod svim komponentama mešavine).
GMM je generalizacija K-Means koja uključuje kovarijansu, tako da klasteri mogu biti elipsoidni (ne samo sferni). Rukuje klasterima različitih veličina i oblika ako je kovarijansa puna. Mekano klasterisanje je prednost kada su granice klastera nejasne npr., u sajber bezbednosti, događaj može imati osobine više tipova napada; GMM može odražavati tu nesigurnost sa verovatnoćama. GMM takođe pruža procenu gustine verovatnoće podataka, korisnu za otkrivanje outliera (tačaka sa niskom verovatnoćom pod svim komponentama mešavine).
S druge strane, GMM zahteva da se specificira broj komponenti K (iako se mogu koristiti kriterijumi poput BIC/AIC za njegovu selekciju). EM ponekad može sporo konvergirati ili do lokalnog optimuma, tako da je inicijalizacija važna (često se EM pokreće više puta). Ako podaci zapravo ne prate mešavinu Gaussian-a, model može biti loše prilagođen. Takođe postoji rizik da jedan Gaussian smanji da pokrije samo outlier (iako regularizacija ili minimalne granice kovarijanse mogu to ublažiti).
@ -285,7 +285,7 @@ log_likelihood = gmm.score_samples(sample_attack)
print("Cluster membership probabilities for sample attack:", probs)
print("Log-likelihood of sample attack under GMM:", log_likelihood)
```
U ovom kodu, obučavamo GMM sa 3 Gaussiana na normalnom saobraćaju (pretpostavljajući da znamo 3 profila legitimnog saobraćaja). Srednje vrednosti i kovarijanse koje se ispisuju opisuju ove klastere (na primer, jedna srednja vrednost može biti oko [50,500] koja odgovara centru jednog klastera, itd.). Zatim testiramo sumnjivu vezu [duration=200, bytes=800]. predict_proba daje verovatnoću da ova tačka pripada svakom od 3 klastera očekivali bismo da su ove verovatnoće vrlo niske ili veoma iskrivljene, pošto [200,800] leži daleko od normalnih klastera. Ukupni score_samples (log-verovatnoća) se ispisuje; vrlo niska vrednost ukazuje na to da tačka ne odgovara modelu dobro, označavajući je kao anomaliju. U praksi, može se postaviti prag na log-verovatnoću (ili na maksimalnu verovatnoću) da se odluči da li je tačka dovoljno malo verovatna da se smatra malicioznom. GMM tako pruža principijelan način za otkrivanje anomalija i takođe daje meke klastere koji priznaju nesigurnost.
U ovom kodu, obučavamo GMM sa 3 Gaussiana na normalnom saobraćaju (pretpostavljajući da znamo 3 profila legitimnog saobraćaja). Srednje vrednosti i kovarijanse koje se ispisuju opisuju ove klastere (na primer, jedna srednja vrednost može biti oko [50,500] koja odgovara centru jednog klastera, itd.). Zatim testiramo sumnjivu vezu [duration=200, bytes=800]. predict_proba daje verovatnoću da ova tačka pripada svakom od 3 klastera očekivali bismo da su ove verovatnoće vrlo niske ili veoma iskrivljene, pošto [200,800] leži daleko od normalnih klastera. Ukupni score_samples (log-verovatnoća) se ispisuje; vrlo niska vrednost ukazuje da tačka ne odgovara modelu dobro, označavajući je kao anomaliju. U praksi, može se postaviti prag na log-verovatnoću (ili na maksimalnu verovatnoću) da se odluči da li je tačka dovoljno malo verovatna da se smatra malicioznom. GMM tako pruža principijelan način za otkrivanje anomalija i takođe daje meke klastere koji priznaju nesigurnost.
### Isolation Forest
@ -294,11 +294,11 @@ U ovom kodu, obučavamo GMM sa 3 Gaussiana na normalnom saobraćaju (pretpostavl
Otkrivanje anomalija se vrši posmatranjem dužine puta svake tačke u ovim nasumičnim stablima broj razdvajanja potrebnih za izolovanje tačke. Intuitivno, anomalije (izuzeci) se obično brže izoluju jer je nasumično razdvajanje verovatnije da će odvojiti izuzetak (koji se nalazi u retkoj oblasti) nego normalnu tačku u gustoj grupi. Isolation Forest izračunava skor anomalije na osnovu prosečne dužine puta preko svih stabala: kraća prosečna dužina puta → više anomalno. Skorovi se obično normalizuju na [0,1] gde 1 znači vrlo verovatna anomalija.
> [!TIP]
> *Upotrebe u sajber bezbednosti:* Isolation Forests su uspešno korišćeni u otkrivanju upada i prevara. Na primer, obučite Isolation Forest na logovima mrežnog saobraćaja koji većinom sadrže normalno ponašanje; šuma će proizvesti kratke puteve za čudan saobraćaj (kao što je IP koji koristi nečuvenu portu ili neobičan obrazac veličine paketa), označavajući ga za inspekciju. Pošto ne zahteva označene napade, pogodna je za otkrivanje nepoznatih tipova napada. Takođe se može primeniti na podatke o prijavljivanju korisnika za otkrivanje preuzimanja naloga (anomalna vremena ili lokacije prijavljivanja se brzo izoluju). U jednom slučaju upotrebe, Isolation Forest može zaštititi preduzeće praćenjem sistemskih metrika i generisanjem upozorenja kada kombinacija metrika (CPU, mreža, promene fajlova) izgleda veoma drugačije (kratki putevi izolacije) od istorijskih obrazaca.
> *Upotrebe u sajber bezbednosti:* Isolation Forests su uspešno korišćeni u otkrivanju upada i prevara. Na primer, obučite Isolation Forest na logovima mrežnog saobraćaja koji većinom sadrže normalno ponašanje; šuma će proizvesti kratke puteve za čudan saobraćaj (kao što je IP koji koristi nečuvenu portu ili neobičan obrazac veličine paketa), označavajući ga za inspekciju. Pošto ne zahteva označene napade, pogodna je za otkrivanje nepoznatih tipova napada. Takođe se može primeniti na podatke o prijavama korisnika za otkrivanje preuzimanja naloga (anomalna vremena ili lokacije prijave se brzo izoluju). U jednom slučaju upotrebe, Isolation Forest može zaštititi preduzeće praćenjem sistemskih metrika i generisanjem upozorenja kada kombinacija metrika (CPU, mreža, promene fajlova) izgleda veoma drugačije (kratki putevi izolacije) od istorijskih obrazaca.
#### Pretpostavke i Ograničenja
**Prednosti**: Isolation Forest ne zahteva pretpostavku o distribuciji; direktno cilja izolaciju. Efikasan je na podacima visoke dimenzionalnosti i velikim skupovima podataka (linearna složenost $O(n\log n)$ za izgradnju šume) pošto svako stablo izoluje tačke samo sa podskupom karakteristika i razdvajanja. Obično dobro obrađuje numeričke karakteristike i može biti brži od metoda zasnovanih na udaljenosti koje mogu biti $O(n^2)$. Takođe automatski daje skor anomalije, tako da možete postaviti prag za upozorenja (ili koristiti parametar kontaminacije da automatski odlučite o prekidu na osnovu očekivane frakcije anomalija).
**Prednosti**: Isolation Forest ne zahteva pretpostavku o distribuciji; direktno cilja izolaciju. Efikasan je na podacima visoke dimenzionalnosti i velikim skupovima podataka (linearno složenost $O(n\log n)$ za izgradnju šume) pošto svako stablo izoluje tačke samo sa podskupom karakteristika i razdvajanja. Obično dobro obrađuje numeričke karakteristike i može biti brži od metoda zasnovanih na udaljenosti koje mogu biti $O(n^2)$. Takođe automatski daje skor anomalije, tako da možete postaviti prag za upozorenja (ili koristiti parametar kontaminacije da automatski odlučite o prekidu na osnovu očekivane frakcije anomalija).
**Ograničenja**: Zbog svoje nasumične prirode, rezultati se mogu malo razlikovati između pokretanja (iako je to minorno sa dovoljno mnogo stabala). Ako podaci imaju mnogo irelevantnih karakteristika ili ako se anomalije ne razlikuju snažno u bilo kojoj karakteristici, izolacija možda neće biti efikasna (nasumična razdvajanja bi mogla izolovati normalne tačke slučajno međutim, prosečno uzimanje mnogih stabala ublažava ovo). Takođe, Isolation Forest obično pretpostavlja da su anomalije mala manjina (što je obično tačno u scenarijima sajber bezbednosti).
@ -324,17 +324,17 @@ print("Example anomaly scores (lower means more anomalous):", anomaly_scores[:5]
```
U ovom kodu, instanciramo `IsolationForest` sa 100 stabala i postavljamo `contamination=0.15` (što znači da očekujemo oko 15% anomalija; model će postaviti svoj prag ocene tako da ~15% tačaka bude označeno). Prilagođavamo ga na `X_test_if` koji sadrži mešavinu normalnih i napadnih tačaka (napomena: obično biste prilagodili na podacima za obuku, a zatim koristili predikciju na novim podacima, ali ovde, radi ilustracije, prilagođavamo i predviđamo na istom skupu kako bismo direktno posmatrali rezultate).
Izlaz prikazuje predviđene oznake za prvih 20 tačaka (gde -1 označava anomaliju). Takođe štampamo koliko je anomalija ukupno otkriveno i neke primerke ocena anomalija. Očekivali bismo otprilike 18 od 120 tačaka da budu označene kao -1 (pošto je kontaminacija bila 15%). Ako su naših 20 uzoraka napada zaista najizolovaniji, većina njih bi trebala da se pojavi u tim -1 predikcijama. Ocena anomalije (funkcija odluke Isolation Forest-a) je viša za normalne tačke i niža (više negativna) za anomalije štampamo nekoliko vrednosti da bismo videli razdvajanje. U praksi, neko bi mogao da sortira podatke po oceni da bi video najistaknutije izuzetke i istražio ih. Isolation Forest tako pruža efikasan način da se pretražuju veliki neoznačeni bezbednosni podaci i izdvoje najnepravilnije instance za ljudsku analizu ili dalju automatsku proveru.
Izlaz prikazuje predviđene oznake za prvih 20 tačaka (gde -1 označava anomaliju). Takođe štampamo koliko je anomalija ukupno otkriveno i neke primerke ocena anomalija. Očekivali bismo otprilike 18 od 120 tačaka da bude označeno -1 (pošto je kontaminacija bila 15%). Ako su naših 20 uzoraka napada zaista najizolovaniji, većina njih bi trebala da se pojavi u tim -1 predikcijama. Ocena anomalije (funkcija odluke Isolation Forest-a) je viša za normalne tačke i niža (više negativna) za anomalije štampamo nekoliko vrednosti da bismo videli razdvajanje. U praksi, neko bi mogao da sortira podatke po oceni da bi video najistaknutije izuzetke i istražio ih. Isolation Forest tako pruža efikasan način da se pretražuju veliki neoznačeni bezbednosni podaci i izdvoje najnepravilnije instance za ljudsku analizu ili dalju automatsku proveru.
### t-SNE (t-Distribuirano Stohastičko Ugrađivanje Suseda)
**t-SNE** je nelinearna tehnika smanjenja dimenzionalnosti posebno dizajnirana za vizualizaciju podataka visoke dimenzionalnosti u 2 ili 3 dimenzije. Ona pretvara sličnosti između tačaka podataka u zajedničke verovatnoće i pokušava da sačuva strukturu lokalnih komšiluka u projekciji sa nižom dimenzionalnošću. Jednostavnije rečeno, t-SNE postavlja tačke u (recimo) 2D tako da slične tačke (u originalnom prostoru) završe blizu jedna druge, a neslične tačke daleko jedna od druge sa visokom verovatnoćom.
**t-SNE** je nelinearna tehnika smanjenja dimenzionalnosti posebno dizajnirana za vizualizaciju podataka visoke dimenzionalnosti u 2 ili 3 dimenzije. Ona pretvara sličnosti između tačaka podataka u zajedničke verovatnosne raspodele i pokušava da sačuva strukturu lokalnih komšiluka u projekciji sa nižom dimenzionalnošću. Jednostavnije rečeno, t-SNE postavlja tačke u (recimo) 2D tako da slične tačke (u originalnom prostoru) završe blizu jedna druge, a neslične tačke daleko jedna od druge sa visokom verovatnoćom.
Algoritam ima dve glavne faze:
1. **Izračunavanje parnih afiniteta u visoko-dimenzionalnom prostoru:** Za svaki par tačaka, t-SNE izračunava verovatnoću da bi neko izabrao taj par kao komšije (to se radi centriranjem Gaussove distribucije na svakoj tački i merenjem udaljenosti parametar perplexity utiče na efektivan broj komšija koji se razmatraju).
2. **Izračunavanje parnih afiniteta u nisko-dimenzionalnom (npr. 2D) prostoru:** U početku, tačke se nasumično postavljaju u 2D. t-SNE definiše sličnu verovatnoću za udaljenosti na ovoj mapi (koristeći Studentovu t-distribuciju, koja ima teže repove od Gaussove kako bi omogućila udaljenim tačkama više slobode).
3. **Gradientni spust:** t-SNE zatim iterativno pomera tačke u 2D kako bi minimizovao KullbackLeibler (KL) divergenciju između visoko-D afinitetske distribucije i nisko-D. Ovo uzrokuje da raspored u 2D odražava visoko-D strukturu koliko god je to moguće tačke koje su bile blizu u originalnom prostoru će se privlačiti, a one daleko će se odbijati, dok se ne pronađe ravnoteža.
1. **Izračunavanje parnih afiniteta u prostoru visoke dimenzionalnosti:** Za svaki par tačaka, t-SNE izračunava verovatnoću da bi neko izabrao taj par kao komšije (to se radi centriranjem Gaussove raspodele na svakoj tački i merenjem udaljenosti parametar perplexity utiče na efektivan broj komšija koje se razmatraju).
2. **Izračunavanje parnih afiniteta u prostoru niske dimenzionalnosti (npr. 2D):** U početku, tačke se nasumično postavljaju u 2D. t-SNE definiše sličnu verovatnoću za udaljenosti na ovoj mapi (koristeći Studentovu t-raspodelu, koja ima teže repove od Gaussove kako bi omogućila udaljenim tačkama više slobode).
3. **Gradientni spust:** t-SNE zatim iterativno pomera tačke u 2D kako bi minimizovao KullbackLeibler (KL) divergenciju između visoko-D afinitetske raspodele i nisko-D. To uzrokuje da raspored u 2D odražava strukturu visoke dimenzionalnosti koliko god je to moguće tačke koje su bile blizu u originalnom prostoru će se privlačiti, a one daleko će se odbijati, sve dok se ne pronađe ravnoteža.
Rezultat je često vizuelno značajan dijagram raspršenja gde klasteri u podacima postaju očigledni.
@ -345,7 +345,7 @@ Rezultat je često vizuelno značajan dijagram raspršenja gde klasteri u podaci
t-SNE je odličan za vizuelno otkrivanje obrazaca. Može otkriti klastere, subklastere i izuzetke koje druge linearne metode (kao što je PCA) možda ne bi mogle. Koristi se u istraživanju sajber bezbednosti za vizualizaciju složenih podataka kao što su profili ponašanja malvera ili obrasci mrežnog saobraćaja. Pošto čuva lokalnu strukturu, dobar je za prikazivanje prirodnih grupisanja.
Međutim, t-SNE je računski zahtevniji (približno $O(n^2)$) pa može zahtevati uzorkovanje za veoma velike skupove podataka. Takođe ima hiperparametre (perplexity, brzina učenja, iteracije) koji mogu uticati na izlaz npr., različite vrednosti perplexity mogu otkriti klastere na različitim skalama. t-SNE dijagrami se ponekad mogu pogrešno interpretirati udaljenosti na mapi nisu direktno značajne globalno (fokusira se na lokalno komšiluko, ponekad klasteri mogu izgledati veštački dobro odvojeni). Takođe, t-SNE je uglavnom za vizualizaciju; ne pruža jednostavan način za projektovanje novih tačaka podataka bez ponovnog izračunavanja, i nije namenjen da se koristi kao predobrada za prediktivno modelovanje (UMAP je alternativa koja rešava neka od ovih pitanja bržom brzinom).
Međutim, t-SNE je računski zahtevniji (približno $O(n^2)$) pa može zahtevati uzorkovanje za veoma velike skupove podataka. Takođe ima hiperparametre (perplexity, brzina učenja, iteracije) koji mogu uticati na izlaz npr., različite vrednosti perplexity mogu otkriti klastere na različitim skalama. t-SNE dijagrami se ponekad mogu pogrešno interpretirati udaljenosti na mapi nisu direktno značajne globalno (fokusira se na lokalno komšiluko, ponekad klasteri mogu izgledati veštački dobro odvojeni). Takođe, t-SNE je uglavnom za vizualizaciju; ne pruža jednostavan način za projektovanje novih tačaka podataka bez ponovnog izračunavanja, i nije namenjen da se koristi kao predobrada za prediktivno modelovanje (UMAP je alternativa koja rešava neka od ovih problema bržom brzinom).
<details>
<summary>Primer -- Vizualizacija Mrežnih Veza