mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['src/AI/AI-Unsupervised-Learning-Algorithms.md'] to sw
This commit is contained in:
		
							parent
							
								
									e1b916095d
								
							
						
					
					
						commit
						0e9c6efe5b
					
				@ -4,29 +4,29 @@
 | 
			
		||||
 | 
			
		||||
## Unsupervised Learning
 | 
			
		||||
 | 
			
		||||
Kujifunza bila usimamizi ni aina ya kujifunza kwa mashine ambapo mfano unafundishwa kwa data bila majibu yaliyoandikwa. Lengo ni kutafuta mifumo, muundo, au uhusiano ndani ya data. Tofauti na kujifunza kwa usimamizi, ambapo mfano unajifunza kutoka kwa mifano iliyoandikwa, algorithimu za kujifunza bila usimamizi hufanya kazi na data isiyo na lebo.
 | 
			
		||||
Kujifunza bila usimamizi ni aina ya kujifunza kwa mashine ambapo mfano unafundishwa kwa data bila majibu yaliyoandikwa. Lengo ni kupata mifumo, muundo, au uhusiano ndani ya data. Tofauti na kujifunza kwa usimamizi, ambapo mfano unajifunza kutoka kwa mifano iliyoandikwa, algorithimu za kujifunza bila usimamizi hufanya kazi na data isiyo na lebo. 
 | 
			
		||||
Kujifunza bila usimamizi mara nyingi hutumika kwa kazi kama vile kuunganisha, kupunguza vipimo, na kugundua anomali. Inaweza kusaidia kugundua mifumo iliyofichika katika data, kuunganisha vitu vinavyofanana pamoja, au kupunguza ugumu wa data huku ikihifadhi sifa zake muhimu.
 | 
			
		||||
 | 
			
		||||
### K-Means Clustering
 | 
			
		||||
 | 
			
		||||
K-Means ni algorithimu ya kuunganisha inayotegemea centroid ambayo inagawanya data katika makundi K kwa kupeana kila nukta kwa maana ya kundi iliyo karibu zaidi. Algorithimu inafanya kazi kama ifuatavyo:
 | 
			
		||||
1. **Initialization**: Chagua K vitu vya kuanzia vya kundi (centroids), mara nyingi kwa bahati nasibu au kupitia mbinu bora kama k-means++
 | 
			
		||||
1. **Initialization**: Chagua K vituo vya awali vya kundi (centroids), mara nyingi kwa bahati nasibu au kupitia mbinu bora kama k-means++
 | 
			
		||||
2. **Assignment**: Peana kila nukta ya data kwa centroid iliyo karibu zaidi kulingana na kipimo cha umbali (mfano, umbali wa Euclidean).
 | 
			
		||||
3. **Update**: Hesabu upya centroids kwa kuchukua maana ya nukta zote za data zilizopewa kila kundi.
 | 
			
		||||
4. **Repeat**: Hatua za 2–3 zinarudiwa hadi ugawaji wa makundi uwe thabiti (centroids hazihamishwi kwa kiasi kikubwa).
 | 
			
		||||
4. **Repeat**: Hatua za 2–3 zinajirudia hadi ugawaji wa makundi uwe thabiti (centroids hazihamaki kwa kiasi kikubwa).
 | 
			
		||||
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* K-Means inatumika kwa kugundua uvamizi kwa kuunganisha matukio ya mtandao. Kwa mfano, watafiti walitumia K-Means kwenye seti ya data ya uvamizi ya KDD Cup 99 na kugundua kuwa iligawanya trafiki kwa ufanisi katika makundi ya kawaida dhidi ya mashambulizi. Katika mazoezi, wachambuzi wa usalama wanaweza kuunganisha entries za logi au data ya tabia ya mtumiaji ili kupata makundi ya shughuli zinazofanana; nukta zozote ambazo hazihusiani na kundi lililo na muundo mzuri zinaweza kuashiria anomali (mfano, toleo jipya la malware linalounda kundi lake dogo). K-Means pia inaweza kusaidia katika uainishaji wa familia za malware kwa kuunganisha binaries kulingana na profaili za tabia au vektori vya sifa.
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* K-Means inatumika kwa kugundua uvamizi kwa kuunganisha matukio ya mtandao. Kwa mfano, watafiti walitumia K-Means kwenye seti ya data ya uvamizi ya KDD Cup 99 na waligundua kuwa inagawanya trafiki kwa ufanisi katika makundi ya kawaida dhidi ya mashambulizi. Katika mazoezi, wachambuzi wa usalama wanaweza kuunganisha entries za logi au data ya tabia ya mtumiaji ili kupata makundi ya shughuli zinazofanana; nukta zozote ambazo hazihusiani na kundi lililo na muundo mzuri zinaweza kuashiria anomali (mfano, toleo jipya la malware linalounda kundi lake dogo). K-Means pia inaweza kusaidia katika uainishaji wa familia za malware kwa kuunganisha binaries kulingana na profaili za tabia au vektori vya sifa.
 | 
			
		||||
 | 
			
		||||
#### Selection of K
 | 
			
		||||
Idadi ya makundi (K) ni hyperparameter ambayo inahitaji kufafanuliwa kabla ya kuendesha algorithimu. Mbinu kama vile Njia ya Elbow au Alama ya Silhouette zinaweza kusaidia kubaini thamani inayofaa kwa K kwa kutathmini utendaji wa kuunganisha:
 | 
			
		||||
 | 
			
		||||
- **Elbow Method**: Piga picha ya jumla ya umbali wa mraba kutoka kila nukta hadi centroid ya kundi lake kama kazi ya K. Tafuta nukta ya "elbow" ambapo kiwango cha kupungua kinabadilika kwa haraka, ikionyesha idadi inayofaa ya makundi.
 | 
			
		||||
- **Elbow Method**: Piga picha ya jumla ya umbali wa mraba kutoka kila nukta hadi centroid ya kundi lake kama kazi ya K. Tafuta "ncha" ambapo kiwango cha kupungua kinabadilika kwa haraka, ikionyesha idadi inayofaa ya makundi.
 | 
			
		||||
- **Silhouette Score**: Hesabu alama ya silhouette kwa thamani tofauti za K. Alama ya silhouette ya juu inaonyesha makundi yaliyoainishwa vizuri zaidi.
 | 
			
		||||
 | 
			
		||||
#### Assumptions and Limitations
 | 
			
		||||
 | 
			
		||||
K-Means inadhani kwamba **makundi ni ya mviringo na yana ukubwa sawa**, ambayo huenda isiwe kweli kwa seti zote za data. Inahisi mabadiliko ya awali ya centroids na inaweza kuishia kwenye minima za ndani. Zaidi ya hayo, K-Means si sahihi kwa seti za data zenye wiani tofauti au sura zisizo za globular na sifa zenye viwango tofauti. Hatua za preprocessing kama vile normalization au standardization zinaweza kuwa muhimu ili kuhakikisha kwamba sifa zote zinachangia sawa katika hesabu za umbali.
 | 
			
		||||
K-Means inadhani kwamba **makundi ni ya mviringo na yana ukubwa sawa**, ambayo huenda isiwe kweli kwa seti zote za data. Inahisi mabadiliko ya awali ya centroids na inaweza kuishia kwenye minima za ndani. Zaidi ya hayo, K-Means si sahihi kwa seti za data zenye wiani tofauti au sura zisizo za globu na sifa zenye viwango tofauti. Hatua za preprocessing kama vile normalization au standardization zinaweza kuwa muhimu ili kuhakikisha kwamba sifa zote zinachangia sawa katika hesabu za umbali.
 | 
			
		||||
 | 
			
		||||
<details>
 | 
			
		||||
<summary>Example -- Clustering Network Events
 | 
			
		||||
@ -57,31 +57,31 @@ print("Cluster centers (duration, bytes):")
 | 
			
		||||
for idx, center in enumerate(kmeans.cluster_centers_):
 | 
			
		||||
print(f"  Cluster {idx}: {center}")
 | 
			
		||||
```
 | 
			
		||||
Katika mfano huu, K-Means inapaswa kupata makundi 4. Kundi dogo la shambulio (lenye muda wa kawaida wa ~200) litaunda kundi lake mwenyewe kutokana na umbali wake kutoka kwa makundi ya kawaida. Tunachapisha saizi za makundi na vituo ili kutafsiri matokeo. Katika hali halisi, mtu anaweza kuweka lebo kundi lenye alama chache kama anomali zinazoweza kutokea au kuchunguza wanachama wake kwa shughuli mbaya.
 | 
			
		||||
Katika mfano huu, K-Means inapaswa kupata makundi 4. Kundi dogo la shambulio (lenye muda wa kawaida wa juu ~200) litaunda kundi lake mwenyewe kutokana na umbali wake kutoka kwa makundi ya kawaida. Tunachapisha saizi za makundi na vituo ili kutafsiri matokeo. Katika hali halisi, mtu anaweza kuweka lebo kundi lenye alama chache kama anomali zinazoweza kutokea au kuchunguza wanachama wake kwa shughuli mbaya.
 | 
			
		||||
 | 
			
		||||
### Kundi la Kihierarchiki
 | 
			
		||||
### Kuweka Makundi kwa Njia ya Hali ya Juu
 | 
			
		||||
 | 
			
		||||
Kundi la kihierarchiki linaunda hierarchi ya makundi kwa kutumia njia ya chini-kuenda (agglomerative) au juu-kushuka (divisive):
 | 
			
		||||
Kuweka makundi kwa njia ya hali ya juu kunajenga hiyerarhii ya makundi kwa kutumia njia ya chini juu (agglomerative) au juu chini (divisive):
 | 
			
		||||
 | 
			
		||||
1. **Agglomerative (Chini-Kuenda)**: Anza na kila kipengele cha data kama kundi tofauti na kuunganishwa kwa makundi ya karibu hadi kundi moja linabaki au kigezo cha kusimamisha kinatimizwa.
 | 
			
		||||
2. **Divisive (Juu-Kushuka)**: Anza na vipengele vyote vya data katika kundi moja na kugawanya makundi hadi kila kipengele cha data kiwe kundi lake mwenyewe au kigezo cha kusimamisha kinatimizwa.
 | 
			
		||||
1. **Agglomerative (Chini Juu)**: Anza na kila kipengele cha data kama kundi tofauti na kuunganishwa kwa hatua kwa hatua makundi ya karibu hadi kundi moja linabaki au kigezo cha kusimamisha kinakamilika.
 | 
			
		||||
2. **Divisive (Juu Chini)**: Anza na vipengele vyote vya data katika kundi moja na kugawanya makundi kwa hatua hadi kila kipengele cha data kiwe kundi lake mwenyewe au kigezo cha kusimamisha kinakamilika.
 | 
			
		||||
 | 
			
		||||
Kundi la agglomerative linahitaji ufafanuzi wa umbali kati ya makundi na kigezo cha kuunganisha ili kuamua ni makundi gani ya kuunganisha. Njia za kawaida za kuunganisha ni pamoja na kuunganisha moja (umbali wa alama za karibu zaidi kati ya makundi mawili), kuunganisha kamili (umbali wa alama za mbali zaidi), kuunganisha wastani, n.k., na kipimo cha umbali mara nyingi ni Euclidean. Chaguo la kuunganisha linaathiri umbo la makundi yanayozalishwa. Hakuna haja ya kuweka idadi ya makundi K mapema; unaweza "kukata" dendrogram katika kiwango kilichochaguliwa ili kupata idadi inayotakiwa ya makundi.
 | 
			
		||||
Kuweka makundi kwa njia ya agglomerative kunahitaji ufafanuzi wa umbali kati ya makundi na kigezo cha kuunganisha ili kuamua ni makundi gani ya kuunganisha. Njia za kawaida za kuunganisha ni pamoja na kuunganisha moja (umbali wa pointi za karibu zaidi kati ya makundi mawili), kuunganisha kamili (umbali wa pointi za mbali zaidi), kuunganisha wastani, n.k., na kipimo cha umbali mara nyingi ni Euclidean. Chaguo la kuunganisha linaathiri umbo la makundi yanayozalishwa. Hakuna haja ya kuweka idadi ya makundi K mapema; unaweza "kukata" dendrogram katika kiwango kilichochaguliwa ili kupata idadi inayotakiwa ya makundi.
 | 
			
		||||
 | 
			
		||||
Kundi la kihierarchiki linaweza kutoa dendrogram, muundo kama mti unaoonyesha uhusiano kati ya makundi katika viwango tofauti vya undani. Dendrogram inaweza kukatwa katika kiwango kinachotakiwa ili kupata idadi maalum ya makundi.
 | 
			
		||||
Kuweka makundi kwa njia ya hali ya juu kunazalisha dendrogram, muundo kama mti unaoonyesha uhusiano kati ya makundi katika viwango tofauti vya undani. Dendrogram inaweza kukatwa katika kiwango kinachotakiwa ili kupata idadi maalum ya makundi.
 | 
			
		||||
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* Kundi la kihierarchiki linaweza kuandaa matukio au vitu katika mti ili kubaini uhusiano. Kwa mfano, katika uchambuzi wa malware, kundi la agglomerative linaweza kuunganisha sampuli kwa kufanana kwa tabia, kuonyesha hierarchi ya familia za malware na toleo. Katika usalama wa mtandao, mtu anaweza kuunganisha mtiririko wa trafiki ya IP na kutumia dendrogram kuona makundi ya trafiki (kwa mfano, kwa itifaki, kisha kwa tabia). Kwa sababu huwezi kuchagua K mapema, ni muhimu unapochunguza data mpya ambayo idadi ya makundi ya shambulio haijulikani.
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* Kuweka makundi kwa njia ya hali ya juu kunaweza kuandaa matukio au vitu katika mti ili kubaini uhusiano. Kwa mfano, katika uchambuzi wa malware, kuweka makundi kwa njia ya agglomerative kunaweza kuunganisha sampuli kwa kufanana kwa tabia, ikifunua hiyerarhii ya familia za malware na toleo. Katika usalama wa mtandao, mtu anaweza kuunganisha mtiririko wa trafiki ya IP na kutumia dendrogram kuona makundi ya trafiki (kwa mfano, kwa itifaki, kisha kwa tabia). Kwa sababu huwezi kuchagua K mapema, ni muhimu unapochunguza data mpya ambayo idadi ya makundi ya shambulio haijulikani.
 | 
			
		||||
 | 
			
		||||
#### Dhana na Mipaka
 | 
			
		||||
 | 
			
		||||
Kundi la kihierarchiki halikubali umbo fulani la kundi na linaweza kunasa makundi yaliyo ndani. Ni muhimu kwa kugundua taxonomy au uhusiano kati ya vikundi (kwa mfano, kuunganisha malware kwa familia za makundi). Ni ya kutabirika (hakuna masuala ya kuanzisha kwa bahati nasibu). Faida kuu ni dendrogram, ambayo inatoa mwanga juu ya muundo wa kundi wa data katika viwango vyote – wachambuzi wa usalama wanaweza kuamua kiwango sahihi cha kukata ili kubaini makundi yenye maana. Hata hivyo, ni ghali kwa hesabu (kawaida $O(n^2)$ muda au mbaya zaidi kwa utekelezaji wa kawaida) na si rahisi kwa seti kubwa za data. Pia ni utaratibu wa greedy – mara tu muungano au kugawanya kumefanyika, haiwezi kubadilishwa, ambayo inaweza kusababisha makundi yasiyo bora ikiwa kosa litafanyika mapema. Vitu vya nje pia vinaweza kuathiri baadhi ya mikakati ya kuunganisha (kuunganisha moja kunaweza kusababisha athari ya "mnyororo" ambapo makundi yanaunganishwa kupitia vitu vya nje).
 | 
			
		||||
Kuweka makundi kwa njia ya hali ya juu hakudhani umbo fulani la kundi na inaweza kushika makundi yaliyo ndani. Ni muhimu kwa kugundua taxonomy au uhusiano kati ya vikundi (kwa mfano, kuunganisha malware kwa familia za makundi). Ni ya kutabirika (hakuna masuala ya kuanzisha kwa bahati). Faida kuu ni dendrogram, ambayo inatoa mwanga juu ya muundo wa kuunganisha wa data katika viwango vyote – wachambuzi wa usalama wanaweza kuamua kiwango sahihi cha kukata ili kubaini makundi yenye maana. Hata hivyo, ni ghali kwa hesabu (kawaida $O(n^2)$ muda au mbaya zaidi kwa utekelezaji wa kawaida) na si rahisi kwa seti kubwa za data. Pia ni utaratibu wa greedy – mara tu muungano au kugawanya kumefanyika, haiwezi kubadilishwa, ambayo inaweza kusababisha makundi yasiyo bora ikiwa kosa litafanyika mapema. Vitu vya nje pia vinaweza kuathiri baadhi ya mikakati ya kuunganisha (kuunganisha moja kunaweza kusababisha athari ya "mnyororo" ambapo makundi yanaunganishwa kupitia vitu vya nje).
 | 
			
		||||
 | 
			
		||||
<details>
 | 
			
		||||
<summary>Mfano -- Kundi la Agglomerative la Matukio
 | 
			
		||||
<summary>Mfano -- Kuweka Makundi kwa Njia ya Agglomerative ya Matukio
 | 
			
		||||
</summary>
 | 
			
		||||
 | 
			
		||||
Tutatumia tena data ya bandia kutoka kwa mfano wa K-Means (makundi 3 ya kawaida + kundi 1 la shambulio) na kutumia kundi la agglomerative. Kisha tunaonyesha jinsi ya kupata dendrogram na lebo za kundi.
 | 
			
		||||
Tutatumia tena data ya bandia kutoka kwa mfano wa K-Means (makundi 3 ya kawaida + kundi 1 la shambulio) na kutumia kuweka makundi kwa njia ya agglomerative. Kisha tunaonyesha jinsi ya kupata dendrogram na lebo za makundi.
 | 
			
		||||
```python
 | 
			
		||||
from sklearn.cluster import AgglomerativeClustering
 | 
			
		||||
from scipy.cluster.hierarchy import linkage, dendrogram
 | 
			
		||||
@ -114,14 +114,14 @@ DBSCAN inatambua pointi kuu, pointi za mpaka, na pointi za kelele:
 | 
			
		||||
- **Pointi za Mpakani**: Pointi ambayo iko ndani ya umbali wa ε wa pointi kuu lakini ina majirani wachache kuliko MinPts.
 | 
			
		||||
- **Pointi za Kelele**: Pointi ambayo si pointi kuu wala pointi za mpaka.
 | 
			
		||||
 | 
			
		||||
Kukusanya kunendelea kwa kuchagua pointi kuu ambazo hazijatembelewa, kuziita kama kundi jipya, kisha kuongeza pointi zote zinazoweza kufikiwa kwa wingi kutoka kwake (pointi kuu na majirani zao, nk). Pointi za mpaka zinaongezwa kwenye kundi la pointi kuu zilizo karibu. Baada ya kupanua pointi zote zinazoweza kufikiwa, DBSCAN inahamia kwenye pointi kuu nyingine ambayo haijatembelewa ili kuanza kundi jipya. Pointi ambazo hazijafikiwa na pointi kuu yoyote zinabaki zikitambulika kama kelele.
 | 
			
		||||
Kukusanya kunendelea kwa kuchagua pointi kuu ambazo hazijatembelewa, kuziandikisha kama kundi jipya, kisha kuongeza pointi zote zinazoweza kufikiwa kwa wingi kutoka kwake (pointi kuu na majirani zao, nk). Pointi za mpaka zinaongezwa kwenye kundi la pointi kuu zilizo karibu. Baada ya kupanua pointi zote zinazoweza kufikiwa, DBSCAN inahamia kwenye pointi kuu nyingine ambazo hazijatembelewa ili kuanza kundi jipya. Pointi ambazo hazijafikiwa na pointi kuu zinabaki zikitambulika kama kelele.
 | 
			
		||||
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* DBSCAN ni muhimu kwa kugundua anomali katika trafiki ya mtandao. Kwa mfano, shughuli za kawaida za mtumiaji zinaweza kuunda kundi moja au zaidi zenye wingi katika nafasi ya sifa, wakati tabia mpya za shambulio zinaonekana kama pointi zilizotawanyika ambazo DBSCAN itazitambulisha kama kelele (nje ya kawaida). Imekuwa ikitumika kukusanya rekodi za mtiririko wa mtandao, ambapo inaweza kugundua skana za bandari au trafiki ya kukatiza huduma kama maeneo ya pointi zisizo na wingi. Maombi mengine ni kuunganisha aina za malware: ikiwa sampuli nyingi zinakusanyika kwa familia lakini chache hazifai mahali popote, hizo chache zinaweza kuwa malware ya siku sifuri. Uwezo wa kutambua kelele unamaanisha timu za usalama zinaweza kuzingatia kuchunguza hizo nje ya kawaida.
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* DBSCAN ni muhimu kwa kugundua anomali katika trafiki ya mtandao. Kwa mfano, shughuli za kawaida za mtumiaji zinaweza kuunda kundi moja au zaidi zenye wingi katika nafasi ya sifa, wakati tabia mpya za shambulio zinaonekana kama pointi zilizotawanyika ambazo DBSCAN itazitambulisha kama kelele (nje ya kawaida). Imekuwa ikitumika kukusanya rekodi za mtiririko wa mtandao, ambapo inaweza kugundua skana za bandari au trafiki ya kukatiza huduma kama maeneo ya pointi zisizo na wingi. Maombi mengine ni kuunganisha aina za malware: ikiwa sampuli nyingi zinakusanyika kwa familia lakini chache hazifai popote, hizo chache zinaweza kuwa malware ya siku sifuri. Uwezo wa kutambua kelele unamaanisha timu za usalama zinaweza kuzingatia kuchunguza hizo nje ya kawaida.
 | 
			
		||||
 | 
			
		||||
#### Dhana na Mipaka
 | 
			
		||||
 | 
			
		||||
**Dhana & Nguvu:** DBSCAN haidhani makundi ya mpira – inaweza kupata makundi yenye sura yoyote (hata makundi ya mnyororo au jirani). Inajitenga kiotomatiki idadi ya makundi kulingana na wingi wa data na inaweza kutambua kwa ufanisi nje ya kawaida kama kelele. Hii inafanya kuwa na nguvu kwa data halisi zenye sura zisizo za kawaida na kelele. Ni thabiti kwa nje ya kawaida (kinyume na K-Means, ambayo inawalazimisha kuwa katika makundi). Inafanya kazi vizuri wakati makundi yana wingi sawa.
 | 
			
		||||
**Dhana & Nguvu:** DBSCAN haidhani makundi ya mpira – inaweza kupata makundi yenye sura yoyote (hata makundi ya mnyororo au jirani). Inajitenga kiotomatiki idadi ya makundi kulingana na wingi wa data na inaweza kutambua kwa ufanisi nje ya kawaida kama kelele. Hii inafanya kuwa na nguvu kwa data halisi zenye sura zisizo za kawaida na kelele. Ni thabiti kwa nje ya kawaida (kinyume na K-Means, ambayo inawalazimisha kuwa katika makundi). Inafanya kazi vizuri wakati makundi yana wingi wa karibu sawa.
 | 
			
		||||
 | 
			
		||||
**Mipaka**: Utendaji wa DBSCAN unategemea kuchagua thamani sahihi za ε na MinPts. Inaweza kuwa na shida na data yenye wingi tofauti – ε moja haiwezi kukidhi makundi yenye wingi na yasiyo na wingi. Ikiwa ε ni ndogo sana, inatambua pointi nyingi kama kelele; ikiwa ni kubwa sana, makundi yanaweza kuungana vibaya. Pia, DBSCAN inaweza kuwa na ufanisi mdogo kwenye seti kubwa za data (kwa urahisi $O(n^2)$, ingawa uainishaji wa nafasi unaweza kusaidia). Katika nafasi za sifa zenye vipimo vingi, dhana ya "umbali ndani ya ε" inaweza kuwa na maana kidogo (laana ya vipimo), na DBSCAN inaweza kuhitaji urekebishaji wa vigezo kwa makini au inaweza kushindwa kupata makundi ya kueleweka. Licha ya haya, nyongeza kama HDBSCAN zinashughulikia baadhi ya masuala (kama vile wingi tofauti).
 | 
			
		||||
 | 
			
		||||
@ -149,21 +149,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])
 | 
			
		||||
```
 | 
			
		||||
Katika kipande hiki, tulirekebisha `eps` na `min_samples` ili kuendana na kiwango chetu cha data (15.0 katika vitengo vya kipengele, na inahitaji pointi 5 kuunda kundi). DBSCAN inapaswa kupata makundi 2 (makundi ya trafiki ya kawaida) na kuashiria 5 ya nje iliyoongezwa kama kelele. Tunatoa idadi ya makundi dhidi ya pointi za kelele ili kuthibitisha hili. Katika mazingira halisi, mtu anaweza kurudia ε (akitumika mbinu ya grafu ya k-distance kuchagua ε) na MinPts (ambayo mara nyingi huwekwa karibu na ukubwa wa data + 1 kama kanuni ya kidole) ili kupata matokeo ya makundi thabiti. Uwezo wa kuweka wazi lebo za kelele husaidia kutenganisha data za mashambulizi zinazoweza kuwa kwa uchambuzi zaidi.
 | 
			
		||||
Katika kipande hiki, tulirekebisha `eps` na `min_samples` ili kuendana na kiwango chetu cha data (15.0 katika vitengo vya kipengele, na inahitaji pointi 5 kuunda kundi). DBSCAN inapaswa kupata makundi 2 (makundi ya trafiki ya kawaida) na kuashiria nje ya kawaida 5 zilizoongezwa kama kelele. Tunatoa idadi ya makundi dhidi ya pointi za kelele ili kuthibitisha hili. Katika mazingira halisi, mtu anaweza kurudia ε (akitumika mbinu ya grafu ya k-distance kuchagua ε) na MinPts (ambayo mara nyingi huwekwa karibu na ukubwa wa data + 1 kama sheria ya vidole) ili kupata matokeo ya makundi thabiti. Uwezo wa kuweka wazi lebo za kelele husaidia kutenganisha data za mashambulizi zinazoweza kutokea kwa uchambuzi zaidi.
 | 
			
		||||
 | 
			
		||||
### Uchambuzi wa Vipengele Msingi (PCA)
 | 
			
		||||
 | 
			
		||||
PCA ni mbinu ya **kupunguza vipimo** inayopata seti mpya ya axisi za orthogonal (vipengele vya msingi) ambavyo vinakamata tofauti kubwa zaidi katika data. Kwa maneno rahisi, PCA inageuza na kupeleka data kwenye mfumo mpya wa kuratibu ili vipengele vya msingi vya kwanza (PC1) viweze kuelezea tofauti kubwa zaidi, PC ya pili (PC2) inaelezea tofauti kubwa zaidi isiyo ya orthogonal kwa PC1, na kadhalika. Kihesabu, PCA inakadiria eigenvectors ya matrix ya covariance ya data – hizi eigenvectors ni mwelekeo wa vipengele vya msingi, na eigenvalues zinazohusiana zinaonyesha kiasi cha tofauti kinachofafanuliwa na kila moja. Mara nyingi hutumiwa kwa uchimbaji wa vipengele, uonyeshaji, na kupunguza kelele.
 | 
			
		||||
PCA ni mbinu ya **kupunguza ukubwa** inayopata seti mpya ya axes za orthogonal (vipengele vya msingi) ambavyo vinakamata tofauti kubwa zaidi katika data. Kwa maneno rahisi, PCA inageuza na kupeleka data kwenye mfumo mpya wa kuratibu ili vipengele vya msingi vya kwanza (PC1) kuelezea tofauti kubwa zaidi inayowezekana, PC ya pili (PC2) kuelezea tofauti kubwa zaidi isiyo ya orthogonal kwa PC1, na kadhalika. Kihesabu, PCA inakadiria eigenvectors ya matrix ya covariance ya data – hizi eigenvectors ni mwelekeo wa vipengele vya msingi, na eigenvalues zinazohusiana zinaonyesha kiasi cha tofauti kinachofafanuliwa na kila moja. Mara nyingi hutumiwa kwa uchimbaji wa vipengele, uonyeshaji, na kupunguza kelele.
 | 
			
		||||
 | 
			
		||||
Kumbuka kwamba hii ni muhimu ikiwa vipimo vya dataset vina **mategemeo au uhusiano wa moja kwa moja**.
 | 
			
		||||
Kumbuka kwamba hii ni muhimu ikiwa vipimo vya dataset vina **mategemeo makubwa ya mstari au uhusiano**.
 | 
			
		||||
 | 
			
		||||
PCA inafanya kazi kwa kutambua vipengele vya msingi vya data, ambavyo ni mwelekeo wa tofauti kubwa zaidi. Hatua zinazohusika katika PCA ni:
 | 
			
		||||
1. **Kiwango**: Kituo cha data kwa kupunguza wastani na kuipima kwa tofauti ya kitengo.
 | 
			
		||||
1. **Kiwango**: Kituisha data kwa kupunguza wastani na kuipima kwa tofauti ya kitengo.
 | 
			
		||||
2. **Matrix ya Covariance**: Kadiria matrix ya covariance ya data iliyopimwa ili kuelewa uhusiano kati ya vipengele.
 | 
			
		||||
3. **Ufunguo wa Eigenvalue**: Fanya ufunguo wa eigenvalue kwenye matrix ya covariance ili kupata eigenvalues na eigenvectors.
 | 
			
		||||
4. **Chagua Vipengele Msingi**: Panga eigenvalues kwa mpangilio wa kushuka na uchague eigenvectors bora K zinazohusiana na eigenvalues kubwa zaidi. Hizi eigenvectors zinaunda nafasi mpya ya vipengele.
 | 
			
		||||
4. **Chagua Vipengele vya Msingi**: Panga eigenvalues kwa mpangilio wa kushuka na uchague eigenvectors bora K zinazohusiana na eigenvalues kubwa zaidi. Hizi eigenvectors zinaunda nafasi mpya ya vipengele.
 | 
			
		||||
5. **Badilisha Data**: Peleka data ya asili kwenye nafasi mpya ya vipengele kwa kutumia vipengele vya msingi vilivyochaguliwa.
 | 
			
		||||
PCA inatumika sana kwa uonyeshaji wa data, kupunguza kelele, na kama hatua ya awali kwa algorithimu nyingine za kujifunza mashine. Inasaidia kupunguza vipimo vya data huku ikihifadhi muundo wake muhimu.
 | 
			
		||||
PCA inatumika sana kwa uonyeshaji wa data, kupunguza kelele, na kama hatua ya awali kwa algorithimu nyingine za kujifunza mashine. Inasaidia kupunguza ukubwa wa data huku ikihifadhi muundo wake muhimu.
 | 
			
		||||
 | 
			
		||||
#### Eigenvalues na Eigenvectors
 | 
			
		||||
 | 
			
		||||
@ -178,24 +178,24 @@ Basi, `A * v = [ [1, 2], [2, 1]] * [1, 1] = [3, 3]` ambayo itakuwa eigenvalue λ
 | 
			
		||||
 | 
			
		||||
#### Eigenvalues na Eigenvectors katika PCA
 | 
			
		||||
 | 
			
		||||
Hebu tueleze hii kwa mfano. Fikiria una dataset yenye picha nyingi za rangi ya kijivu za nyuso za 100x100 pixels. Kila pixel inaweza kuonekana kama kipengele, hivyo una vipengele 10,000 kwa picha (au vector ya vipengele 10000 kwa picha). Ikiwa unataka kupunguza vipimo vya dataset hii kwa kutumia PCA, ungetakiwa kufuata hatua hizi:
 | 
			
		||||
Hebu tueleze hii kwa mfano. Fikiria una dataset yenye picha nyingi za rangi ya kijivu za nyuso za 100x100 pixels. Kila pixel inaweza kuzingatiwa kama kipengele, hivyo una vipengele 10,000 kwa picha (au vector ya vipengele 10000 kwa picha). Ikiwa unataka kupunguza ukubwa wa dataset hii kwa kutumia PCA, ungetakiwa kufuata hatua hizi:
 | 
			
		||||
 | 
			
		||||
1. **Kiwango**: Kituo cha data kwa kupunguza wastani wa kila kipengele (pixel) kutoka kwenye dataset.
 | 
			
		||||
1. **Kiwango**: Kituisha data kwa kupunguza wastani wa kila kipengele (pixel) kutoka kwenye dataset.
 | 
			
		||||
2. **Matrix ya Covariance**: Kadiria matrix ya covariance ya data iliyopimwa, ambayo inakamata jinsi vipengele (pixels) vinavyobadilika pamoja.
 | 
			
		||||
- Kumbuka kwamba covariance kati ya variables mbili (pixels katika kesi hii) inaonyesha jinsi zinavyobadilika pamoja hivyo wazo hapa ni kugundua ni pixels zipi zinaweza kuongezeka au kupungua pamoja kwa uhusiano wa moja kwa moja.
 | 
			
		||||
- Kwa mfano, ikiwa pixel 1 na pixel 2 zinaweza kuongezeka pamoja, covariance kati yao itakuwa chanya.
 | 
			
		||||
- Kumbuka kwamba covariance kati ya variables mbili (pixels katika kesi hii) inaonyesha jinsi zinavyobadilika pamoja hivyo wazo hapa ni kugundua ni pixels zipi zinazoonekana kuongezeka au kupungua pamoja kwa uhusiano wa mstari.
 | 
			
		||||
- Kwa mfano, ikiwa pixel 1 na pixel 2 zinaonekana kuongezeka pamoja, covariance kati yao itakuwa chanya.
 | 
			
		||||
- Matrix ya covariance itakuwa matrix ya 10,000x10,000 ambapo kila ingizo linawakilisha covariance kati ya pixels mbili.
 | 
			
		||||
3. **Suluisha Msingi wa Eigenvalue**: Msingi wa eigenvalue wa kutatua ni `C * v = λ * v` ambapo C ni matrix ya covariance, v ni eigenvector, na λ ni eigenvalue. Inaweza kutatuliwa kwa kutumia mbinu kama:
 | 
			
		||||
- **Ufunguo wa Eigenvalue**: Fanya ufunguo wa eigenvalue kwenye matrix ya covariance ili kupata eigenvalues na eigenvectors.
 | 
			
		||||
- **Ufunguo wa Thamani ya Kipekee (SVD)**: Vinginevyo, unaweza kutumia SVD kutenganisha matrix ya data katika thamani za kipekee na vectors, ambazo pia zinaweza kutoa vipengele vya msingi.
 | 
			
		||||
4. **Chagua Vipengele Msingi**: Panga eigenvalues kwa mpangilio wa kushuka na uchague eigenvectors bora K zinazohusiana na eigenvalues kubwa zaidi. Hizi eigenvectors zinawakilisha mwelekeo wa tofauti kubwa zaidi katika data.
 | 
			
		||||
4. **Chagua Vipengele vya Msingi**: Panga eigenvalues kwa mpangilio wa kushuka na uchague eigenvectors bora K zinazohusiana na eigenvalues kubwa zaidi. Hizi eigenvectors zinawakilisha mwelekeo wa tofauti kubwa zaidi katika data.
 | 
			
		||||
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* Matumizi ya kawaida ya PCA katika usalama ni kupunguza vipengele kwa ajili ya kugundua anomali. Kwa mfano, mfumo wa kugundua uvamizi wenye metriki 40+ za mtandao (kama vile vipengele vya NSL-KDD) unaweza kutumia PCA kupunguza hadi vipengele vichache, kujumlisha data kwa ajili ya uonyeshaji au kupeleka kwenye algorithimu za makundi. Wachambuzi wanaweza kuchora trafiki ya mtandao katika nafasi ya vipengele viwili vya msingi vya kwanza ili kuona ikiwa mashambulizi yanatenganishwa na trafiki ya kawaida. PCA inaweza pia kusaidia kuondoa vipengele vya ziada (kama vile bytes zilizotumwa dhidi ya bytes zilizopokelewa ikiwa zina uhusiano) ili kufanya algorithimu za kugundua kuwa thabiti zaidi na haraka.
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* Matumizi ya kawaida ya PCA katika usalama ni kupunguza vipengele kwa ajili ya kugundua anomali. Kwa mfano, mfumo wa kugundua uvamizi wenye metriki 40+ za mtandao (kama vile vipengele vya NSL-KDD) unaweza kutumia PCA kupunguza hadi vipengele vichache, kujumlisha data kwa ajili ya uonyeshaji au kupeleka kwenye algorithimu za makundi. Wachambuzi wanaweza kuchora trafiki ya mtandao katika nafasi ya vipengele vya msingi viwili vya kwanza ili kuona ikiwa mashambulizi yanatenganishwa na trafiki ya kawaida. PCA inaweza pia kusaidia kuondoa vipengele vya ziada (kama vile bytes zilizotumwa dhidi ya bytes zilizopokelewa ikiwa zina uhusiano) ili kufanya algorithimu za kugundua kuwa thabiti zaidi na haraka.
 | 
			
		||||
 | 
			
		||||
#### Matarajio na Mipaka
 | 
			
		||||
#### Mategemeo na Mipaka
 | 
			
		||||
 | 
			
		||||
PCA inatarajia kwamba **mifumo ya msingi ya tofauti ni ya maana** – ni mbinu ya moja kwa moja, hivyo inakamata uhusiano wa moja kwa moja katika data. Ni isiyo na uangalizi kwani inatumia tu covariance ya vipengele. Faida za PCA ni pamoja na kupunguza kelele (vipengele vya tofauti ndogo mara nyingi vinahusiana na kelele) na kupunguza uhusiano wa vipengele. Ni yenye ufanisi wa hesabu kwa vipimo vya kati na mara nyingi ni hatua ya awali inayofaa kwa algorithimu nyingine (ili kupunguza laana ya vipimo). Mipaka moja ni kwamba PCA inategemea uhusiano wa moja kwa moja – haitakamata muundo mgumu wa kisasa (ambapo autoencoders au t-SNE inaweza). Pia, vipengele vya PCA vinaweza kuwa vigumu kufasiri kwa kuzingatia vipengele vya asili (ni mchanganyiko wa vipengele vya asili). Katika usalama wa mtandao, mtu anapaswa kuwa makini: shambulizi ambalo linaweza kusababisha mabadiliko madogo katika kipengele chenye tofauti ndogo linaweza kutokuwepo katika PCs za juu (kwa kuwa PCA inapa kipaumbele tofauti, si lazima "kuvutia").
 | 
			
		||||
PCA inategemea kwamba **mwelekeo wa msingi wa tofauti ni wa maana** – ni mbinu ya mstari, hivyo inakamata uhusiano wa mstari katika data. Ni isiyo na uangalizi kwani inatumia tu covariance ya vipengele. Faida za PCA ni pamoja na kupunguza kelele (vipengele vya tofauti ndogo mara nyingi vinahusiana na kelele) na kuondoa uhusiano kati ya vipengele. Ni yenye ufanisi wa hesabu kwa vipimo vya kati na mara nyingi ni hatua ya awali inayofaa kwa algorithimu nyingine (ili kupunguza laana ya ukubwa). Mipaka moja ni kwamba PCA inategemea uhusiano wa mstari – haitakamata muundo mgumu wa isiyo ya mstari (ambapo autoencoders au t-SNE inaweza). Pia, vipengele vya PCA vinaweza kuwa vigumu kufasiri kwa kuzingatia vipengele vya asili (ni mchanganyiko wa vipengele vya asili). Katika usalama wa mtandao, mtu anapaswa kuwa makini: shambulizi linalosababisha mabadiliko madogo tu katika kipengele chenye tofauti ndogo linaweza kutokuwepo katika PCs za juu (kwa kuwa PCA inapa kipaumbele tofauti, si lazima "kuvutia").
 | 
			
		||||
 | 
			
		||||
<details>
 | 
			
		||||
<summary>Mfano -- Kupunguza Vipimo vya Data ya Mtandao
 | 
			
		||||
@ -225,13 +225,13 @@ Hapa tulichukua makundi ya awali ya trafiki ya kawaida na kupanua kila kipengele
 | 
			
		||||
 | 
			
		||||
### Gaussian Mixture Models (GMM)
 | 
			
		||||
 | 
			
		||||
Mfano wa Mchanganyiko wa Gaussian unadhani data inazalishwa kutoka mchanganyiko wa **usambazaji kadhaa wa Gaussian (kawaida) wenye vigezo visivyojulikana**. Kwa msingi, ni mfano wa makundi ya uwezekano: inajaribu kwa upole kupeana kila pointi kwa moja ya vipengele K vya Gaussian. Kila kipengele cha Gaussian k kina vector ya wastani (μ_k), matrix ya covariance (Σ_k), na uzito wa mchanganyiko (π_k) unaowrepresenta jinsi kundi hilo lilivyo maarufu. Tofauti na K-Means ambayo inafanya "ugawaji" mgumu, GMM inampa kila pointi uwezekano wa kuwa katika kila kundi.
 | 
			
		||||
Mfano wa Mchanganyiko wa Gaussian unadhani data inazalishwa kutoka mchanganyiko wa **distributions kadhaa za Gaussian (za kawaida) zenye vigezo visivyojulikana**. Kwa msingi, ni mfano wa makundi ya uwezekano: inajaribu kwa upole kupeana kila pointi moja ya K vipengele vya Gaussian. Kila kipengele cha Gaussian kina vector ya wastani (μ_k), matrix ya covariance (Σ_k), na uzito wa mchanganyiko (π_k) unaowrepresenta jinsi kundi hilo lilivyo maarufu. Tofauti na K-Means ambayo inafanya "ugawaji mgumu", GMM inampa kila pointi uwezekano wa kuhusika na kila kundi.
 | 
			
		||||
 | 
			
		||||
Ulinganifu wa GMM kawaida hufanywa kupitia algorithm ya Expectation-Maximization (EM):
 | 
			
		||||
Ufunguo wa GMM kawaida hufanywa kupitia algorithm ya Expectation-Maximization (EM):
 | 
			
		||||
 | 
			
		||||
- **Kuanza**: Anza na makadirio ya awali ya wastani, covariances, na coefficients za mchanganyiko (au tumia matokeo ya K-Means kama hatua ya mwanzo).
 | 
			
		||||
 | 
			
		||||
- **E-step (Matarajio)**: Iwapo vigezo vya sasa, hesabu jukumu la kila kundi kwa kila pointi: kimsingi `r_nk = P(z_k | x_n)` ambapo z_k ni variable ya siri inayoashiria uanachama wa kundi kwa pointi x_n. Hii inafanywa kwa kutumia nadharia ya Bayes, ambapo tunahesabu uwezekano wa nyuma wa kila pointi kuwa katika kila kundi kulingana na vigezo vya sasa. Majukumu yanahesabiwa kama:
 | 
			
		||||
- **E-step (Matarajio)**: Iwapo vigezo vya sasa, hesabu jukumu la kila kundi kwa kila pointi: kimsingi `r_nk = P(z_k | x_n)` ambapo z_k ni variable ya siri inayoashiria uanachama wa kundi kwa pointi x_n. Hii inafanywa kwa kutumia nadharia ya Bayes, ambapo tunahesabu uwezekano wa nyuma wa kila pointi kuhusika na kila kundi kulingana na vigezo vya sasa. Majukumu yanahesabiwa kama:
 | 
			
		||||
```math
 | 
			
		||||
r_{nk} = \frac{\pi_k \mathcal{N}(x_n | \mu_k, \Sigma_k)}{\sum_{j=1}^{K} \pi_j \mathcal{N}(x_n | \mu_j, \Sigma_j)}
 | 
			
		||||
```
 | 
			
		||||
@ -244,18 +244,18 @@ ambapo:
 | 
			
		||||
- Sasisha kila covariance Σ_k kama covariance ya uzito wa pointi zilizotengwa kwa kundi k.
 | 
			
		||||
- Sasisha coefficients za mchanganyiko π_k kama wastani wa jukumu kwa kundi k.
 | 
			
		||||
 | 
			
		||||
- **Rudia** hatua za E na M hadi kufikia muafaka (vigezo vinapojisimamia au kuboresha uwezekano uko chini ya kigezo).
 | 
			
		||||
- **Rudia** hatua za E na M hadi kufikia muafaka (vigezo vinastabilika au kuboresha uwezekano kunakuwa chini ya kigezo).
 | 
			
		||||
 | 
			
		||||
Matokeo ni seti ya usambazaji wa Gaussian ambayo kwa pamoja inasimamia usambazaji wa data kwa ujumla. Tunaweza kutumia GMM iliyofanywa kuunda makundi kwa kupeana kila pointi kwa Gaussian yenye uwezekano mkubwa, au kuweka uwezekano kwa ajili ya kutokuwa na uhakika. Mtu anaweza pia kutathmini uwezekano wa pointi mpya ili kuona kama zinafaa katika mfano (inayofaa kwa kugundua kasoro).
 | 
			
		||||
Matokeo ni seti ya distributions za Gaussian ambazo kwa pamoja zinaiga usambazaji wa data kwa ujumla. Tunaweza kutumia GMM iliyofanywa kuunda makundi kwa kupeana kila pointi kwa Gaussian yenye uwezekano mkubwa, au kuweka uwezekano kwa ajili ya kutokuwa na uhakika. Mtu pia anaweza kutathmini uwezekano wa pointi mpya ili kuona kama zinafaa katika mfano (inayofaa kwa kugundua kasoro).
 | 
			
		||||
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* GMM inaweza kutumika kwa kugundua kasoro kwa kuunda mfano wa usambazaji wa data ya kawaida: pointi yoyote yenye uwezekano mdogo sana chini ya mchanganyiko uliojifunza inatambuliwa kama kasoro. Kwa mfano, unaweza kufundisha GMM juu ya vipengele vya trafiki halali ya mtandao; muunganisho wa shambulio ambao haufanani na kundi lolote lililojifunzwa utakuwa na uwezekano mdogo. GMM pia hutumiwa kuunda makundi ya shughuli ambapo makundi yanaweza kuwa na sura tofauti – e.g., kuunganisha watumiaji kwa wasifu wa tabia, ambapo vipengele vya kila wasifu vinaweza kuwa kama Gaussian lakini na muundo wake wa tofauti. Hali nyingine: katika kugundua ulaghai, vipengele halali vya barua pepe vinaweza kuunda kundi moja la Gaussian, ulaghai unaojulikana mwingine, na kampeni mpya za ulaghai zinaweza kuonekana kama Gaussian tofauti au kama pointi zenye uwezekano mdogo kulingana na mchanganyiko uliopo.
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* GMM inaweza kutumika kwa kugundua kasoro kwa kuiga usambazaji wa data ya kawaida: pointi yoyote yenye uwezekano mdogo sana chini ya mchanganyiko uliojifunza inatambuliwa kama kasoro. Kwa mfano, unaweza kufundisha GMM juu ya vipengele vya trafiki halali ya mtandao; muunganisho wa shambulio ambao haufanani na kundi lolote lililojifunzwa utakuwa na uwezekano mdogo. GMM pia hutumiwa kuunda makundi ya shughuli ambapo makundi yanaweza kuwa na sura tofauti – e.g., kuunganisha watumiaji kwa wasifu wa tabia, ambapo vipengele vya kila wasifu vinaweza kuwa kama Gaussian lakini na muundo wake wa tofauti. Hali nyingine: katika kugundua ulaghai, vipengele halali vya barua pepe vinaweza kuunda kundi moja la Gaussian, ulaghai unaojulikana mwingine, na kampeni mpya za ulaghai zinaweza kuonekana kama Gaussian tofauti au kama pointi zenye uwezekano mdogo kulingana na mchanganyiko uliopo.
 | 
			
		||||
 | 
			
		||||
#### Dhana na Mipaka
 | 
			
		||||
 | 
			
		||||
GMM ni jumla ya K-Means ambayo inajumuisha covariance, hivyo makundi yanaweza kuwa ya ellipsoidal (siyo tu ya mpira). Inashughulikia makundi ya ukubwa na sura tofauti ikiwa covariance ni kamili. Kugawanya kwa upole ni faida wakati mipaka ya kundi ni fuzzy – e.g., katika usalama wa mtandao, tukio linaweza kuwa na sifa za aina kadhaa za shambulio; GMM inaweza kuonyesha kutokuwa na uhakika hiyo kwa uwezekano. GMM pia inatoa tathmini ya density ya uwezekano wa data, inayofaa kwa kugundua nje (pointi zenye uwezekano mdogo chini ya vipengele vyote vya mchanganyiko).
 | 
			
		||||
GMM ni jumla ya K-Means ambayo inajumuisha covariance, hivyo makundi yanaweza kuwa ya ellipsoidal (siyo tu ya mpira). Inashughulikia makundi ya ukubwa na sura tofauti ikiwa covariance ni kamili. Ugawaji laini ni faida wakati mipaka ya kundi ni ya kutatanisha – e.g., katika usalama wa mtandao, tukio linaweza kuwa na sifa za aina kadhaa za shambulio; GMM inaweza kuonyesha kutokuwa na uhakika hiyo kwa uwezekano. GMM pia inatoa makadirio ya density ya uwezekano wa data, inayofaa kwa kugundua nje (pointi zenye uwezekano mdogo chini ya vipengele vyote vya mchanganyiko).
 | 
			
		||||
 | 
			
		||||
Kwa upande wa hasara, GMM inahitaji kufafanua idadi ya vipengele K (ingawa mtu anaweza kutumia vigezo kama BIC/AIC kuichagua). EM inaweza wakati mwingine kuja kwa muafaka polepole au kwa muafaka wa ndani, hivyo kuanzisha ni muhimu (mara nyingi inafanya EM mara kadhaa). Ikiwa data haifuati mchanganyiko wa Gaussians, mfano unaweza kuwa na ufanisi duni. Pia kuna hatari ya Gaussian mmoja kupungua ili kufunika tu nje (ingawa udhibiti au mipaka ya chini ya covariance inaweza kupunguza hiyo).
 | 
			
		||||
Kwa upande mbaya, GMM inahitaji kufafanua idadi ya vipengele K (ingawa mtu anaweza kutumia vigezo kama BIC/AIC kuichagua). EM inaweza wakati mwingine kukaribia polepole au kwa muafaka wa ndani, hivyo kuanzisha ni muhimu (mara nyingi hufanya EM mara kadhaa). Ikiwa data haifuati mchanganyiko wa Gaussian, mfano unaweza kuwa na ufanisi duni. Pia kuna hatari ya Gaussian mmoja kupungua ili kufunika tu nje (ingawa udhibiti au mipaka ya chini ya covariance inaweza kupunguza hiyo).
 | 
			
		||||
```python
 | 
			
		||||
from sklearn.mixture import GaussianMixture
 | 
			
		||||
 | 
			
		||||
@ -274,28 +274,28 @@ 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)
 | 
			
		||||
```
 | 
			
		||||
Katika msimbo huu, tunafundisha GMM na Gaussians 3 kwenye trafiki ya kawaida (tukidhani tunajua wasifu 3 wa trafiki halali). Maana na covariances zilizochapishwa zinaelezea makundi haya (kwa mfano, maana moja inaweza kuwa karibu [50,500] inayohusiana na kituo cha kundi moja, n.k.). Kisha tunajaribu muunganisho wa kutatanisha [duration=200, bytes=800]. predict_proba inatoa uwezekano wa pointi hii kuhusika na kila moja ya makundi 3 – tungeweza kutarajia uwezekano huu kuwa wa chini sana au kupindishwa sana kwani [200,800] iko mbali na makundi ya kawaida. Alama ya jumla ya score_samples (log-likelihood) inachapishwa; thamani ya chini sana inaonyesha kuwa pointi hiyo haifai vizuri kwenye mfano, ikionyesha kama anomalous. Katika mazoezi, mtu anaweza kuweka kigezo kwenye log-likelihood (au kwenye uwezekano wa juu) ili kuamua ikiwa pointi ni ya kutosha kutokuwa na hatari. GMM hivyo hutoa njia iliyo na kanuni ya kufanya ugunduzi wa anomalies na pia inatoa makundi laini yanayotambua kutokuwa na uhakika.
 | 
			
		||||
Katika msimbo huu, tunafundisha GMM na Gaussians 3 kwenye trafiki ya kawaida (tukidhani tunajua wasifu 3 wa trafiki halali). Maana na covariances zilizochapishwa zinaelezea makundi haya (kwa mfano, maana moja inaweza kuwa karibu [50,500] inayohusiana na kituo cha kundi moja, n.k.). Kisha tunajaribu muunganisho wa kutatanisha [duration=200, bytes=800]. predict_proba inatoa uwezekano wa pointi hii kuhusika na kila moja ya makundi 3 – tungeweza kutarajia uwezekano huu kuwa wa chini sana au kupindishwa sana kwani [200,800] iko mbali na makundi ya kawaida. Alama ya jumla ya score_samples (log-likelihood) inachapishwa; thamani ya chini sana inaonyesha kuwa pointi hiyo haifai vizuri kwenye mfano, ikionyesha kama anomali. Katika mazoezi, mtu anaweza kuweka kigezo kwenye log-likelihood (au kwenye uwezekano wa juu) ili kuamua ikiwa pointi ni ya kutosha kutokuwa na hatari. GMM hivyo hutoa njia iliyo na kanuni ya kufanya ugunduzi wa anomali na pia inatoa makundi laini yanayotambua kutokuwa na uhakika.
 | 
			
		||||
 | 
			
		||||
### Isolation Forest
 | 
			
		||||
 | 
			
		||||
**Isolation Forest** ni algorithm ya ugunduzi wa anomalies ya kundi inayotegemea wazo la kutenga pointi kwa bahati nasibu. Kanuni ni kwamba anomalies ni chache na tofauti, hivyo ni rahisi kuzitenga kuliko pointi za kawaida. Isolation Forest inajenga miti nyingi za kutenga binary (miti ya maamuzi ya bahati nasibu) ambazo zinagawanya data kwa bahati nasibu. Kila node kwenye mti, kipengele cha bahati nasibu kinachaguliwa na thamani ya kugawanya ya bahati nasibu inachaguliwa kati ya min na max ya kipengele hicho kwa data katika node hiyo. Kugawanya hii kunagawanya data katika matawi mawili. Mti unakua hadi kila pointi itengwe katika jani lake mwenyewe au urefu wa juu wa mti unafikiwa.
 | 
			
		||||
**Isolation Forest** ni algorithimu ya ugunduzi wa anomali ya pamoja inayotokana na wazo la kutenga pointi kwa bahati nasibu. Kanuni ni kwamba anomali ni chache na tofauti, hivyo ni rahisi kuzitenga kuliko pointi za kawaida. Isolation Forest inajenga miti nyingi za kutenga binary (miti ya maamuzi ya bahati nasibu) ambazo zinagawanya data kwa bahati nasibu. Kila node kwenye mti, kipengele cha bahati nasibu kinachaguliwa na thamani ya kugawanya ya bahati nasibu inachaguliwa kati ya min na max ya kipengele hicho kwa data katika node hiyo. Kugawanya hii kunagawanya data katika matawi mawili. Mti unakua hadi kila pointi itengwe katika jani lake mwenyewe au urefu wa juu wa mti unafikiwa.
 | 
			
		||||
 | 
			
		||||
Ugunduzi wa anomalies unafanywa kwa kuangalia urefu wa njia ya kila pointi katika miti hii ya bahati nasibu – idadi ya kugawanya inayohitajika kutenga pointi hiyo. Kwa njia ya kawaida, anomalies (outliers) huwa zinatengwa haraka zaidi kwa sababu kugawanya kwa bahati nasibu kuna uwezekano mkubwa wa kutenganisha outlier (ambaye yuko katika eneo la sparse) kuliko pointi za kawaida katika kundi lenye msongamano. Isolation Forest inakadiria alama ya anomaly kutoka kwa urefu wa wastani wa njia juu ya miti zote: urefu wa njia ya wastani mfupi → zaidi ya anomalous. Alama kawaida huwekwa sawa kwa [0,1] ambapo 1 inamaanisha uwezekano mkubwa wa anomaly.
 | 
			
		||||
Ugunduzi wa anomali unafanywa kwa kuangalia urefu wa njia ya kila pointi katika miti hii ya bahati nasibu – idadi ya kugawanya inayohitajika kutenga pointi hiyo. Kwa njia ya hisabati, anomali (outliers) huwa zinatengwa haraka zaidi kwa sababu kugawanya kwa bahati nasibu kuna uwezekano mkubwa wa kutenganisha outlier (ambaye yuko katika eneo la upungufu) kuliko pointi za kawaida katika kundi lenye msongamano. Isolation Forest inahesabu alama ya anomali kutoka kwa urefu wa wastani wa njia juu ya miti yote: urefu wa wastani mfupi → anomali zaidi. Alama kawaida huwekwa sawa kwa [0,1] ambapo 1 inamaanisha anomali yenye uwezekano mkubwa.
 | 
			
		||||
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* Isolation Forests zimekuwa zikitumika kwa mafanikio katika ugunduzi wa uvamizi na ugunduzi wa udanganyifu. Kwa mfano, fundisha Isolation Forest kwenye kumbukumbu za trafiki ya mtandao ambazo kwa kiasi kikubwa zina tabia ya kawaida; msitu utaweza kutoa njia fupi kwa trafiki isiyo ya kawaida (kama IP inayotumia bandari isiyojulikana au muundo wa ukubwa wa pakiti usio wa kawaida), ikionyesha kwa ukaguzi. Kwa sababu haitaji mashambulizi yaliyoandikwa, inafaa kwa kugundua aina za mashambulizi zisizojulikana. Inaweza pia kutumika kwenye data za kuingia kwa mtumiaji kugundua kuchukuliwa kwa akaunti (nyakati au maeneo ya kuingia yasiyo ya kawaida yanatengwa haraka). Katika matumizi moja, Isolation Forest inaweza kulinda biashara kwa kufuatilia metriki za mfumo na kutoa tahadhari wakati mchanganyiko wa metriki (CPU, mtandao, mabadiliko ya faili) unaonekana kuwa tofauti sana (njia fupi za kutengwa) kutoka kwa mifumo ya kihistoria.
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* Isolation Forests zimekuwa zikitumika kwa mafanikio katika ugunduzi wa uvamizi na ugunduzi wa udanganyifu. Kwa mfano, fundisha Isolation Forest kwenye kumbukumbu za trafiki ya mtandao ambazo kwa kiasi kikubwa zina tabia ya kawaida; msitu utatoa njia fupi kwa trafiki isiyo ya kawaida (kama IP inayotumia bandari isiyojulikana au muundo wa saizi ya pakiti isiyo ya kawaida), ikionyesha kwa ukaguzi. Kwa sababu haitaji mashambulizi yaliyoandikwa, inafaa kwa kugundua aina za mashambulizi zisizojulikana. Inaweza pia kutumika kwenye data za kuingia kwa mtumiaji kugundua kuchukuliwa kwa akaunti (nyakati au maeneo ya kuingia yasiyo ya kawaida yanatengwa haraka). Katika matumizi moja, Isolation Forest inaweza kulinda biashara kwa kufuatilia metriki za mfumo na kutoa arifa wakati mchanganyiko wa metriki (CPU, mtandao, mabadiliko ya faili) unaonekana kuwa tofauti sana (njia fupi za kutengwa) kutoka kwa mifumo ya kihistoria.
 | 
			
		||||
 | 
			
		||||
#### Dhana na Mipaka
 | 
			
		||||
 | 
			
		||||
**Faida**: Isolation Forest haitaji dhana ya usambazaji; inashughulikia moja kwa moja kutengwa. Ni bora kwenye data zenye vipimo vingi na seti kubwa za data (ugumu wa moja kwa moja $O(n\log n)$ kwa kujenga msitu) kwani kila mti unategemea pointi na vipengele na kugawanya tu. Inashughulikia vizuri vipengele vya nambari na inaweza kuwa haraka zaidi kuliko mbinu zinazotegemea umbali ambazo zinaweza kuwa $O(n^2)$. Pia inatoa moja kwa moja alama ya anomaly, hivyo unaweza kuweka kigezo cha tahadhari (au kutumia kipimo cha uchafuzi kuamua kiotomatiki kikomo kulingana na sehemu inayotarajiwa ya anomaly).
 | 
			
		||||
**Faida**: Isolation Forest haitaji dhana ya usambazaji; inashughulikia moja kwa moja kutengwa. Ni bora kwenye data zenye vipimo vingi na seti kubwa za data (ugumu wa moja kwa moja $O(n\log n)$ kwa kujenga msitu) kwani kila mti unategemea pointi na vipengele na kugawanya tu. Inashughulikia vizuri vipengele vya nambari na inaweza kuwa haraka zaidi kuliko mbinu zinazotegemea umbali ambazo zinaweza kuwa $O(n^2)$. Pia inatoa moja kwa moja alama ya anomali, hivyo unaweza kuweka kigezo cha arifa (au kutumia kipimo cha uchafuzi kuamua kiotomatiki kikomo kulingana na sehemu inayotarajiwa ya anomali).
 | 
			
		||||
 | 
			
		||||
**Mipaka**: Kwa sababu ya asili yake ya bahati nasibu, matokeo yanaweza kutofautiana kidogo kati ya mbio (ingawa kwa miti nyingi hii ni ndogo). Ikiwa data ina vipengele vingi visivyo na maana au ikiwa anomalies hazitofautiani kwa nguvu katika kipengele chochote, kutengwa kunaweza kutokuwa na ufanisi (kugawanya kwa bahati nasibu kunaweza kutenga pointi za kawaida kwa bahati – hata hivyo, kuhesabu miti mingi hupunguza hili). Pia, Isolation Forest kwa ujumla inadhani kuwa anomalies ni wachache (ambayo mara nyingi ni kweli katika hali za usalama wa mtandao).
 | 
			
		||||
**Mipaka**: Kwa sababu ya asili yake ya bahati nasibu, matokeo yanaweza kutofautiana kidogo kati ya mbio (ingawa kwa miti nyingi vya kutosha hii ni ndogo). Ikiwa data ina vipengele vingi visivyo na maana au ikiwa anomali hazitofautiani kwa nguvu katika kipengele chochote, kutengwa kunaweza kutokuwa na ufanisi (kugawanya kwa bahati nasibu kunaweza kutenga pointi za kawaida kwa bahati – hata hivyo, kuhesabu miti mingi hupunguza hili). Pia, Isolation Forest kwa ujumla inadhani anomali ni wachache (ambayo mara nyingi ni kweli katika hali za usalama wa mtandao).
 | 
			
		||||
 | 
			
		||||
<details>
 | 
			
		||||
<summary>Mfano -- Kugundua Outliers katika Kumbukumbu za Mtandao
 | 
			
		||||
</summary>
 | 
			
		||||
 | 
			
		||||
Tutatumia seti ya data ya mtihani ya awali (ambayo ina pointi za kawaida na baadhi ya mashambulizi) na kuendesha Isolation Forest ili kuona ikiwa inaweza kutenga mashambulizi. Tutadhani tunatarajia ~15% ya data kuwa ya kutatanisha (kwa maonyesho).
 | 
			
		||||
Tutatumia seti ya data ya mtihani ya awali (ambayo ina pointi za kawaida na baadhi ya mashambulizi) na kuendesha Isolation Forest ili kuona ikiwa inaweza kutenga mashambulizi. Tutadhani tunatarajia ~15% ya data kuwa ya anomali (kwa maonyesho).
 | 
			
		||||
```python
 | 
			
		||||
from sklearn.ensemble import IsolationForest
 | 
			
		||||
 | 
			
		||||
@ -311,36 +311,36 @@ print("Isolation Forest predicted labels (first 20):", preds[:20])
 | 
			
		||||
print("Number of anomalies detected:", np.sum(preds == -1))
 | 
			
		||||
print("Example anomaly scores (lower means more anomalous):", anomaly_scores[:5])
 | 
			
		||||
```
 | 
			
		||||
Katika msimbo huu, tunaunda `IsolationForest` na miti 100 na kuweka `contamination=0.15` (kumanisha tunatarajia karibu 15% ya anomalies; mfano utaweka kigezo chake cha alama ili ~15% ya alama zifanywe alama). Tunafaa kwenye `X_test_if` ambayo ina mchanganyiko wa alama za kawaida na za shambulio (kumbuka: kawaida ungetumia data ya mafunzo na kisha kutumia predict kwenye data mpya, lakini hapa kwa mfano tunafaa na kutabiri kwenye seti moja ili kuona matokeo moja kwa moja).
 | 
			
		||||
Katika msimbo huu, tunaunda `IsolationForest` na miti 100 na kuweka `contamination=0.15` (kumanisha tunatarajia karibu 15% ya anomalies; mfano utaweka kigezo chake cha alama ili ~15% ya alama zifanywe alama). Tunafaa kwenye `X_test_if` ambayo ina mchanganyiko wa alama za kawaida na za shambulio (kumbuka: kawaida ungetumia data ya mafunzo kisha kutumia predict kwenye data mpya, lakini hapa kwa mfano tunafaa na kutabiri kwenye seti moja ili kuona matokeo moja kwa moja).
 | 
			
		||||
 | 
			
		||||
Matokeo yanaonyesha lebo zilizotabiriwa kwa alama 20 za kwanza (ambapo -1 inaashiria anomaly). Pia tunachapisha ni anomalies ngapi zimegundulika kwa jumla na baadhi ya alama za mfano za anomaly. Tunatarajia takriban 18 kati ya alama 120 kupewa lebo -1 (kwa kuwa contamination ilikuwa 15%). Ikiwa sampuli zetu 20 za shambulio ni kweli ziko mbali zaidi, nyingi yao zinapaswa kuonekana katika hizo -1 predictions. Alama ya anomaly (kazi ya uamuzi ya Isolation Forest) ni kubwa kwa alama za kawaida na ndogo (mbaya zaidi) kwa anomalies – tunachapisha baadhi ya thamani ili kuona utofauti. Katika mazoezi, mtu anaweza kupanga data kwa alama ili kuona waandishi wakuu na kuichunguza. Isolation Forest hivyo inatoa njia bora ya kuchambua data kubwa zisizo na lebo za usalama na kuchagua matukio yasiyo ya kawaida kwa uchambuzi wa kibinadamu au uchunguzi wa kiotomatiki zaidi.
 | 
			
		||||
Matokeo yanaonyesha lebo zilizotabiriwa kwa alama 20 za kwanza (ambapo -1 inaashiria anomaly). Pia tunachapisha ni anomalies ngapi zimegundulika kwa jumla na baadhi ya alama za mfano za anomaly. Tunatarajia karibu 18 kati ya alama 120 kupewa lebo -1 (kwa kuwa contamination ilikuwa 15%). Ikiwa sampuli zetu 20 za shambulio ni kweli ziko mbali zaidi, nyingi yao zinapaswa kuonekana katika hizo -1 predictions. Alama ya anomaly (kazi ya uamuzi ya Isolation Forest) ni kubwa kwa alama za kawaida na ndogo (mbaya zaidi) kwa anomalies – tunachapisha baadhi ya thamani ili kuona utofauti. Katika mazoezi, mtu anaweza kupanga data kwa alama ili kuona waandishi wakuu na kuichunguza. Isolation Forest hivyo inatoa njia bora ya kuchambua data kubwa zisizo na lebo za usalama na kuchagua matukio yasiyo ya kawaida kwa uchambuzi wa kibinadamu au uchunguzi wa kiotomatiki zaidi.
 | 
			
		||||
 | 
			
		||||
### t-SNE (t-Distributed Stochastic Neighbor Embedding)
 | 
			
		||||
 | 
			
		||||
**t-SNE** ni mbinu ya kupunguza vipimo isiyo ya laini iliyoundwa mahsusi kwa ajili ya kuonyesha data yenye vipimo vingi katika vipimo 2 au 3. Inabadilisha ufanisi kati ya alama za data kuwa usambazaji wa uwezekano wa pamoja na kujaribu kuhifadhi muundo wa majirani wa ndani katika uwasilishaji wa chini wa vipimo. Kwa maneno rahisi, t-SNE inaweka alama katika (sema) 2D kwa namna ambayo alama zinazofanana (katika nafasi ya asili) zinaishia karibu pamoja na alama zisizofanana zinaishia mbali na kila mmoja kwa uwezekano mkubwa.
 | 
			
		||||
**t-SNE** ni mbinu ya kupunguza vipimo isiyo ya laini iliyoundwa mahsusi kwa ajili ya kuonyesha data yenye vipimo vingi katika vipimo 2 au 3. Inabadilisha ufanisi kati ya alama za data kuwa usambazaji wa uwezekano wa pamoja na inajaribu kuhifadhi muundo wa majirani wa ndani katika uwasilishaji wa chini wa vipimo. Kwa maneno rahisi, t-SNE inaweka alama katika (sema) 2D kwa namna ambayo alama zinazofanana (katika nafasi ya asili) zinaishia karibu pamoja na alama zisizofanana zinaishia mbali na uwezekano mkubwa.
 | 
			
		||||
 | 
			
		||||
Algorithimu ina hatua mbili kuu:
 | 
			
		||||
 | 
			
		||||
1. **Hesabu uhusiano wa pande mbili katika nafasi ya vipimo vingi:** Kwa kila jozi ya alama, t-SNE inahesabu uwezekano kwamba mtu angechagua jozi hiyo kama majirani (hii inafanywa kwa kuzingatia usambazaji wa Gaussian kwenye kila alama na kupima umbali – kigezo cha perplexity kinaathiri idadi halisi ya majirani wanaozingatiwa).
 | 
			
		||||
2. **Hesabu uhusiano wa pande mbili katika nafasi ya chini ya vipimo (mfano 2D):** Kwanza, alama zinawekwa kwa bahati nasibu katika 2D. t-SNE in定义 uwezekano sawa kwa umbali katika ramani hii (ikitumia kiini cha usambazaji wa Student t, ambacho kina ncha nzito zaidi kuliko Gaussian ili kuruhusu alama za mbali uhuru zaidi).
 | 
			
		||||
3. **Gradient Descent:** t-SNE kisha inahamisha alama kwa hatua kwa hatua katika 2D ili kupunguza tofauti ya Kullback–Leibler (KL) kati ya usambazaji wa uhusiano wa juu-D na wa chini-D. Hii inasababisha mpangilio wa 2D kuakisi muundo wa juu-D kadri iwezekanavyo – alama ambazo zilikuwa karibu katika nafasi ya asili zitavutia kila mmoja, na zile ziko mbali zitakataa, hadi usawa upatikane.
 | 
			
		||||
1. **Hesabu uhusiano wa pande mbili katika nafasi ya vipimo vingi:** Kwa kila jozi ya alama, t-SNE inahesabu uwezekano kwamba mtu angechagua jozi hiyo kama majirani (hii inafanywa kwa kuzingatia usambazaji wa Gaussian kwenye kila alama na kupima umbali – parameter ya perplexity inaathiri idadi halisi ya majirani wanaozingatiwa).
 | 
			
		||||
2. **Hesabu uhusiano wa pande mbili katika nafasi ya chini ya vipimo (mfano 2D):** Kwanza, alama zinawekwa kwa bahati nasibu katika 2D. t-SNE inaelezea uwezekano sawa kwa umbali katika ramani hii (ikitumia kernel ya usambazaji wa Student t, ambayo ina ncha nzito zaidi kuliko Gaussian ili kuruhusu alama za mbali uhuru zaidi).
 | 
			
		||||
3. **Gradient Descent:** t-SNE kisha inahamisha alama kwa hatua kwa hatua katika 2D ili kupunguza tofauti ya Kullback–Leibler (KL) kati ya usambazaji wa uhusiano wa juu-D na wa chini-D. Hii inasababisha mpangilio wa 2D kuakisi muundo wa juu-D kadri iwezekanavyo – alama ambazo zilikuwa karibu katika nafasi ya asili zitavutia kila mmoja, na zile zilizo mbali zitakataa, hadi usawa upatikane.
 | 
			
		||||
 | 
			
		||||
Matokeo mara nyingi ni mchoro wa kusambaza wenye maana ya kuona ambapo makundi katika data yanakuwa dhahiri.
 | 
			
		||||
Matokeo mara nyingi ni mchoro wa kusambaza wenye maana ya kuona ambapo makundi katika data yanakuwa wazi.
 | 
			
		||||
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* t-SNE mara nyingi hutumiwa ku **onyesha data ya usalama yenye vipimo vingi kwa uchambuzi wa kibinadamu**. Kwa mfano, katika kituo cha operesheni za usalama, wachambuzi wanaweza kuchukua seti ya matukio yenye vipengele vingi (nambari za bandari, mara kwa mara, idadi ya byte, nk) na kutumia t-SNE kutoa mchoro wa 2D. Mashambulizi yanaweza kuunda makundi yao wenyewe au kutengwa na data ya kawaida katika mchoro huu, na kuifanya iwe rahisi kuwatambua. Imetumika kwenye seti za data za malware kuona makundi ya familia za malware au kwenye data ya uvunjaji wa mtandao ambapo aina tofauti za mashambulizi zinakusanyika kwa tofauti, ikiongoza uchunguzi zaidi. Kimsingi, t-SNE inatoa njia ya kuona muundo katika data za cyber ambazo vinginevyo zingekuwa ngumu kueleweka.
 | 
			
		||||
> *Matumizi katika usalama wa mtandao:* t-SNE mara nyingi hutumiwa ku **onyesha data ya usalama yenye vipimo vingi kwa uchambuzi wa kibinadamu**. Kwa mfano, katika kituo cha operesheni za usalama, wachambuzi wanaweza kuchukua seti ya matukio yenye vipengele vingi (nambari za bandari, mara kwa mara, idadi ya byte, nk) na kutumia t-SNE kutoa mchoro wa 2D. Mashambulizi yanaweza kuunda makundi yao wenyewe au kutengwa kutoka kwa data ya kawaida katika mchoro huu, na kuifanya iwe rahisi zaidi kuwatambua. Imetumika kwenye seti za data za malware kuona makundi ya familia za malware au kwenye data ya uvunjaji wa mtandao ambapo aina tofauti za mashambulizi zinakusanyika kwa tofauti, ikiongoza uchunguzi zaidi. Kimsingi, t-SNE inatoa njia ya kuona muundo katika data ya cyber ambayo vinginevyo ingekuwa ngumu kueleweka.
 | 
			
		||||
 | 
			
		||||
#### Dhana na Mipaka
 | 
			
		||||
 | 
			
		||||
t-SNE ni nzuri kwa kugundua mifumo kwa kuona. Inaweza kufichua makundi, makundi madogo, na waandishi wa mbali ambao mbinu nyingine za laini (kama PCA) zinaweza kutokuwepo. Imetumika katika utafiti wa usalama wa mtandao kuonyesha data ngumu kama vile profaili za tabia za malware au mifumo ya trafiki ya mtandao. Kwa sababu inahifadhi muundo wa ndani, ni nzuri katika kuonyesha makundi ya asili.
 | 
			
		||||
t-SNE ni nzuri kwa kugundua mifumo kwa kuona. Inaweza kufichua makundi, makundi madogo, na waandishi wa mbali ambao mbinu nyingine za laini (kama PCA) zinaweza kutofaulu. Imetumika katika utafiti wa usalama wa mtandao kuonyesha data ngumu kama vile wasifu wa tabia za malware au mifumo ya trafiki ya mtandao. Kwa sababu inahifadhi muundo wa ndani, ni nzuri katika kuonyesha makundi ya asili.
 | 
			
		||||
 | 
			
		||||
Hata hivyo, t-SNE ni nzito kwa kompyuta (takriban $O(n^2)$) hivyo inaweza kuhitaji sampuli kwa seti kubwa sana za data. Pia ina vigezo vya hyper (perplexity, kiwango cha kujifunza, mizunguko) ambavyo vinaweza kuathiri matokeo – mfano, thamani tofauti za perplexity zinaweza kufichua makundi katika viwango tofauti. Mchoro wa t-SNE wakati mwingine unaweza kutafsiriwa vibaya – umbali katika ramani si wa maana moja kwa moja kimataifa (inazingatia jirani wa ndani, wakati mwingine makundi yanaweza kuonekana kuwa mbali sana kwa bandia). Pia, t-SNE ni hasa kwa ajili ya uonyeshaji; haipati njia rahisi ya kuhamasisha alama mpya bila kuhesabu tena, na haikusudiwi kutumika kama maandalizi kwa ajili ya uundaji wa utabiri (UMAP ni mbadala inayoshughulikia baadhi ya masuala haya kwa kasi ya haraka).
 | 
			
		||||
Hata hivyo, t-SNE ni nzito kwa kompyuta (takriban $O(n^2)$) hivyo inaweza kuhitaji sampuli kwa seti kubwa sana. Pia ina hyperparameters (perplexity, kiwango cha kujifunza, mizunguko) ambazo zinaweza kuathiri matokeo – mfano, thamani tofauti za perplexity zinaweza kufichua makundi katika viwango tofauti. Mchoro wa t-SNE unaweza wakati mwingine kutafsiriwa vibaya – umbali katika ramani si wa maana moja kwa moja kimataifa (inazingatia jirani wa ndani, wakati mwingine makundi yanaweza kuonekana kuwa mbali sana kwa bandia). Pia, t-SNE ni hasa kwa ajili ya uonyeshaji; haipati njia rahisi ya kuhamasisha alama mpya bila kuhesabu tena, na haikusudiwi kutumika kama maandalizi kwa ajili ya uundaji wa utabiri (UMAP ni mbadala inayoshughulikia baadhi ya masuala haya kwa kasi ya haraka). 
 | 
			
		||||
 | 
			
		||||
<details>
 | 
			
		||||
<summary>Mfano -- Kuonyesha Mifumo ya Mtandao
 | 
			
		||||
</summary>
 | 
			
		||||
 | 
			
		||||
Tutatumia t-SNE kupunguza seti ya data yenye vipengele vingi hadi 2D. Kwa mfano, hebu tuchukue data ya awali ya 4D (ambayo ilikuwa na makundi 3 ya asili ya trafiki ya kawaida) na kuongeza alama chache za anomaly. Kisha tunakimbia t-SNE na (kimsingi) kuonyesha matokeo.
 | 
			
		||||
Tutatumia t-SNE kupunguza seti ya data yenye vipengele vingi hadi 2D. Kwa mfano, hebu tuchukue data ya awali ya 4D (ambayo ilikuwa na makundi 3 ya asili ya trafiki ya kawaida) na kuongeza baadhi ya alama za anomaly. Kisha tunakimbia t-SNE na (kimsingi) kuonyesha matokeo.
 | 
			
		||||
```python
 | 
			
		||||
# 1 ─────────────────────────────────────────────────────────────────────
 | 
			
		||||
#    Create synthetic 4-D dataset
 | 
			
		||||
@ -423,9 +423,101 @@ plt.legend()
 | 
			
		||||
plt.tight_layout()
 | 
			
		||||
plt.show()
 | 
			
		||||
```
 | 
			
		||||
Hapa tumekusanya dataset yetu ya kawaida ya 4D na kundi dogo la outliers kali (outliers zina kipengele kimoja (“duration”) kilichowekwa juu sana, nk, ili kuiga muundo wa ajabu). Tunakimbia t-SNE na perplexity ya kawaida ya 30. Data ya output_2d ina umbo (1505, 2). Hatuwezi kweli kuchora katika maandiko haya, lakini kama tungeweza, tungeweza kutarajia kuona labda makundi matatu yaliyofungwa yanayolingana na makundi 3 ya kawaida, na outliers 5 zikionekana kama pointi zilizotengwa mbali na makundi hayo. Katika mchakato wa mwingiliano, tunaweza kubadilisha rangi za pointi kulingana na lebo zao (kawaida au kundi gani, dhidi ya anomaly) ili kuthibitisha muundo huu. Hata bila lebo, mchambuzi anaweza kugundua zile pointi 5 zikiwa katika nafasi tupu kwenye mchoro wa 2D na kuziangazia. Hii inaonyesha jinsi t-SNE inaweza kuwa msaada mzuri katika kugundua anomalies kwa njia ya kuona na ukaguzi wa makundi katika data ya cybersecurity, ikikamilisha algorithimu za kiotomatiki zilizo juu.
 | 
			
		||||
Hapa tumekusanya dataset yetu ya kawaida ya 4D na kundi dogo la outliers kali (outliers zina kipengele kimoja (“duration”) kilichowekwa juu sana, nk., ili kuiga muundo wa ajabu). Tunakimbia t-SNE na perplexity ya kawaida ya 30. Data ya output_2d ina umbo (1505, 2). Hatuwezi kuchora katika maandiko haya, lakini kama tungeweza, tungeweza kutarajia kuona labda makundi matatu yaliyofungwa yanayolingana na makundi 3 ya kawaida, na outliers 5 zikionekana kama pointi zilizotengwa mbali na makundi hayo. Katika mchakato wa mwingiliano, tunaweza kubadilisha rangi ya pointi kulingana na lebo zao (kawaida au kundi gani, dhidi ya anomaly) ili kuthibitisha muundo huu. Hata bila lebo, mchambuzi anaweza kugundua pointi hizo 5 zikiwa katika nafasi tupu kwenye mchoro wa 2D na kuziangazia. Hii inaonyesha jinsi t-SNE inaweza kuwa msaada mzuri katika kugundua anomalies kwa njia ya kuona na ukaguzi wa makundi katika data ya cybersecurity, ikikamilisha algorithimu za kiotomatiki zilizo juu.
 | 
			
		||||
 | 
			
		||||
</details>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### HDBSCAN (Hierarchical Density-Based Spatial Clustering of Applications with Noise)
 | 
			
		||||
 | 
			
		||||
**HDBSCAN** ni upanuzi wa DBSCAN ambao unafuta hitaji la kuchagua thamani moja ya kimataifa ya `eps` na unaweza kurejesha makundi ya **wiani tofauti** kwa kujenga hierarchi ya vipengele vilivyounganishwa kwa wiani na kisha kuvikandamiza. Ikilinganishwa na DBSCAN ya kawaida, kawaida
 | 
			
		||||
 | 
			
		||||
* inatoa makundi ya kueleweka zaidi wakati baadhi ya makundi yana wiani mkubwa na mengine yana wiani mdogo,
 | 
			
		||||
* ina hyper-parameter moja halisi tu (`min_cluster_size`) na chaguo la msingi linalofaa,
 | 
			
		||||
* inatoa kila pointi uwezekano wa uanachama wa kundi *probability* na **alama ya outlier** (`outlier_scores_`), ambayo ni muhimu sana kwa dashibodi za uwindaji wa vitisho.
 | 
			
		||||
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> *Matumizi katika cybersecurity:* HDBSCAN ni maarufu sana katika mipango ya kisasa ya uwindaji wa vitisho – mara nyingi utaiona ndani ya vitabu vya uwindaji vilivyoandikwa kwa kutumia notebook vinavyotolewa na suites za kibiashara za XDR.  Mapishi moja ya vitendo ni kuunganisha trafiki ya beaconing ya HTTP wakati wa IR: user-agent, muda na urefu wa URI mara nyingi huunda makundi kadhaa yaliyofungwa ya wasasishaji wa programu halali wakati beacon za C2 zinabaki kama makundi madogo ya wiani wa chini au kama kelele safi.
 | 
			
		||||
 | 
			
		||||
<details>
 | 
			
		||||
<summary>Mfano – Kupata njia za C2 za beaconing</summary>
 | 
			
		||||
```python
 | 
			
		||||
import pandas as pd
 | 
			
		||||
from hdbscan import HDBSCAN
 | 
			
		||||
from sklearn.preprocessing import StandardScaler
 | 
			
		||||
 | 
			
		||||
# df has features extracted from proxy logs
 | 
			
		||||
features = [
 | 
			
		||||
"avg_interval",      # seconds between requests
 | 
			
		||||
"uri_length_mean",   # average URI length
 | 
			
		||||
"user_agent_entropy" # Shannon entropy of UA string
 | 
			
		||||
]
 | 
			
		||||
X = StandardScaler().fit_transform(df[features])
 | 
			
		||||
 | 
			
		||||
hdb = HDBSCAN(min_cluster_size=15,  # at least 15 similar beacons to be a group
 | 
			
		||||
metric="euclidean",
 | 
			
		||||
prediction_data=True)
 | 
			
		||||
labels = hdb.fit_predict(X)
 | 
			
		||||
 | 
			
		||||
df["cluster"] = labels
 | 
			
		||||
# Anything with label == -1 is noise → inspect as potential C2
 | 
			
		||||
suspects = df[df["cluster"] == -1]
 | 
			
		||||
print("Suspect beacon count:", len(suspects))
 | 
			
		||||
```
 | 
			
		||||
</details>
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
### Uthabiti na Mambo ya Usalama – Upoisoning & Mashambulizi ya Adversarial (2023-2025)
 | 
			
		||||
 | 
			
		||||
Kazi za hivi karibuni zimeonyesha kwamba **wajifunzaji wasio na uangalizi *sio* sugu kwa washambuliaji wa moja kwa moja**:
 | 
			
		||||
 | 
			
		||||
* **Upoisoning wa data dhidi ya waandishi wa anomali.** Chen *et al.* (IEEE S&P 2024) walionyesha kwamba kuongeza hata asilimia 3 ya trafiki iliyoundwa inaweza kubadilisha mpaka wa uamuzi wa Isolation Forest na ECOD ili mashambulizi halisi yaonekane kama ya kawaida. Waandishi walitoa PoC ya chanzo wazi (`udo-poison`) inayosawazisha kwa otomatiki alama za sumu.
 | 
			
		||||
* **Kuingiza nyuma katika mifano ya klasta.** Mbinu ya *BadCME* (BlackHat EU 2023) inaweka mfano mdogo wa kichocheo; kila wakati kichocheo hicho kinapojitokeza, mtafutaji anaye msingi wa K-Means kwa kimya huweka tukio ndani ya klasta “isiyo na madhara”.
 | 
			
		||||
* **Kuepuka DBSCAN/HDBSCAN.** Uchambuzi wa awali wa kitaaluma wa 2025 kutoka KU Leuven ulionyesha kwamba mshambuliaji anaweza kuunda mifumo ya beacon inayokusudia kuanguka ndani ya mapengo ya wingi, kwa ufanisi kuficha ndani ya lebo za *kelele*.
 | 
			
		||||
 | 
			
		||||
Mikakati inayopata umaarufu:
 | 
			
		||||
 | 
			
		||||
1. **Usafi wa mfano / TRIM.** Kabla ya kila kipindi cha upya, ondolewa alama 1–2 % zenye hasara kubwa (trimmed maximum likelihood) ili kufanya upoisoning kuwa ngumu zaidi.
 | 
			
		||||
2. **Kukusanya makubaliano.** Changanya waandishi kadhaa tofauti (mfano, Isolation Forest + GMM + ECOD) na panda alama ikiwa *mfano* wowote unalipua alama. Utafiti unaonyesha hii inainua gharama ya mshambuliaji kwa >10×.
 | 
			
		||||
3. **Ulinzi wa msingi wa umbali kwa klasta.** Hesabu upya klasta na `k` mbegu tofauti za nasibu na upuuze alama zinazohama mara kwa mara kati ya klasta.
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
### Zana za Kisasa za Chanzo Wazi (2024-2025)
 | 
			
		||||
 | 
			
		||||
* **PyOD 2.x** (iliyotolewa Mei 2024) iliongeza *ECOD*, *COPOD* na waandishi wa *AutoFormer* wanaoendeshwa na GPU. Sasa inatoa amri ya `benchmark` inayokuruhusu kulinganisha algorithimu 30+ kwenye dataset yako kwa **mstari mmoja wa msimbo**:
 | 
			
		||||
```bash
 | 
			
		||||
pyod benchmark --input logs.csv --label attack --n_jobs 8
 | 
			
		||||
```
 | 
			
		||||
* **Anomalib v1.5** (Feb 2025) inazingatia maono lakini pia ina utekelezaji wa jumla wa **PatchCore** – muhimu kwa kugundua kurasa za phishing za picha.
 | 
			
		||||
* **scikit-learn 1.5** (Nov 2024) hatimaye inafichua `score_samples` kwa *HDBSCAN* kupitia kifungashio kipya cha `cluster.HDBSCAN`, hivyo huna haja ya pakiti ya kuchangia ya nje unapokuwa kwenye Python 3.12.
 | 
			
		||||
 | 
			
		||||
<details>
 | 
			
		||||
<summary>Mfano wa Haraka wa PyOD – ECOD + Mkusanyiko wa Isolation Forest</summary>
 | 
			
		||||
```python
 | 
			
		||||
from pyod.models import ECOD, IForest
 | 
			
		||||
from pyod.utils.data import generate_data, evaluate_print
 | 
			
		||||
from pyod.utils.example import visualize
 | 
			
		||||
 | 
			
		||||
X_train, y_train, X_test, y_test = generate_data(
 | 
			
		||||
n_train=5000, n_test=1000, n_features=16,
 | 
			
		||||
contamination=0.02, random_state=42)
 | 
			
		||||
 | 
			
		||||
models = [ECOD(), IForest()]
 | 
			
		||||
 | 
			
		||||
# majority vote – flag if any model thinks it is anomalous
 | 
			
		||||
anomaly_scores = sum(m.fit(X_train).decision_function(X_test) for m in models) / len(models)
 | 
			
		||||
 | 
			
		||||
evaluate_print("Ensemble", y_test, anomaly_scores)
 | 
			
		||||
```
 | 
			
		||||
</details>
 | 
			
		||||
 | 
			
		||||
## Marejeo
 | 
			
		||||
 | 
			
		||||
- [HDBSCAN – Kundi la msingi wa wingi wa kihierarchi](https://github.com/scikit-learn-contrib/hdbscan)
 | 
			
		||||
- Chen, X. *et al.* “Kuhusu Uthibitisho wa Kugundua Mambo Yasiyo ya Kawaida kwa Kuingilia Kwenye Takwimu.” *Mkutano wa IEEE juu ya Usalama na Faragha*, 2024.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
{{#include ../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user