KNN

**K-Nearest Neighbors (KNN)** ဟာ Supervised Machine Learning algorithm တစ်မျိုးဖြစ်ပြီး Classification နှင့် Regression tasks နှစ်မျိုးစလုံးတွင် အသုံးပြုနိုင်သည်။ ၎င်း၏အခြေခံမှာ *data point တစ်ခု၏ label သည် ၎င်းနှင့်အနည်းဆုံးအကွာအဝေးရှိသော K ခု data points ၏ labels တို့မှ သက်ရောက်မှုရှိသည်* ဟုပင် ဖြစ်သည်။

KNN သည် training model တည်ဆောက်သည့် computational process မလိုအပ်သဖြင့် **lazy learning algorithm** ဟုလည်း ခေါ်ကြသည်။
----

## Concept and Definition 
## Concept 
KNN ၏အခြေခံအယူအဆကို “object တစ်ခု၏ သတ်မှတ်ချက်သည် ၎င်းနှင့် အနီးဆုံး အပြင်အဆင်တူ data points များက ထင်ဟပ်ပေးနိုင်သည်” ဟုဖော်ပြလျှင် အလွယ်တကူ နားလည်နိုင်သည်။

Prediction ပြုလုပ်သောအခါ algorithm သည်—

# အသစ်ဝင်လာသော data point နှင့် dataset ထဲရှိတစ်ခုချင်းစီအကြား အကွာအဝေး(distance) ကိုတွက်ချက်သည်
# အကွာအဝေးအနည်းဆုံး K ခုကိုရွေးချယ်သည်
# Classification ဖြစ်ပါက neighbors များ၏ majority vote ဖြင့် label သတ်မှတ်သည်
# Regression ဖြစ်ပါက neighbors ၏ average ကို ယူ၍ output ခန့်မှန်းသည်

----

## Illustrative Example 
KNN concept ကို ရှင်းလင်းရန် neighborhood analogy တစ်ခုကို အသုံးပြုလေ့ရှိသည်။

ဥပမာအားဖြင့် အထူးသုံးသပ်လိုပါက—

အနီးအနား လူများ၏ လုပ်ဆောင်ပုံများ၊ သဘောထားများသည် တည်နေရာအသစ်သို့ ပြောင်းရွှေ့လာသူတစ်ယောက်၏ characteristic ကို ခန့်မှန်းရာတွင် သက်ရောက်မှုရှိနိုင်သည်ဟု ဖော်ပြနိုင်သည်။

ဥပမာ—အနီးအနားတွင် ၅ ယောက်အထဲ ၃ ယောက်က ဘောလုံးဝါသနာကြီးသူများ ဖြစ်ပါက, K=5 အဖြစ်ရွေးချယ်သည့်အခါ ထိုတည်နေရာသို့အသစ်လာသူကို “ဘောလုံးဝါသနာပါသူ” အဖြစ် ခန့်မှန်းနိုင်သည်။
----

## Lazy Learning 
KNN ကို **lazy learner** ဟုခေါ်ကြသောအကြောင်းရင်းမှာ—

* Model training မပြုလုပ်ပဲ
* Data အပြည့်အစုံကို သိမ်းဆည်းထားပြီး
* Prediction ပြုလုပ်ချိန်တွင်သာ computational processing ဖြစ်ပေါ်သည်

ဆိုလိုသည်မှာ computation burden သည် **prediction phase** တွင်သာ အများအပြားဖြစ်ပေါ်သည်။
----

## Usefulness of K Parameter 
**K value** သည် KNN algorithm ၏လုပ်ဆောင်နိုင်မှုကို သတ်မှတ်ပေးသည့် အရေးကြီးသောပြောင်းလဲနိုင်သော variable ဖြစ်သည်—

* **K တန်ဖိုးအလွန်သေးပါက** (ဥပမာ K=1) → noise သက်ရောက်မှုများပြီး overfitting ဖြစ်နိုင်သည်
* **K တန်ဖိုးအလွန်ကြီးပါက** (ဥပမာ K=100) → decision boundaries မထူးခြားတော့ပဲ important patterns မထင်ဟပ်နိုင်တော့ခြင်း ဖြစ်နိုင်သည်

အတွေ့အကြုံအရ **odd number K values** ကို အသုံးပြုလေ့ရှိသည်၊ tie-breaking ပြဿနာ မဖြစ်စေရန်ဖြစ်သည်။ သင့်တင့်သော K ကို ရွေးချယ်ရာတွင် **cross‑validation** ကိုလယ်ဝယ်အသုံးပြုကြသည်။

KNN algorithm သည်

* Training phase → data ကိုသိမ်းဆည်းထားခြင်းသာ
* Prediction phase → နောက်ဆုံး K nearest neighbors ကို distance formula ဖြင့်ရှာထုတ်ခြင်း

ဆိုသည့် Principle ဖြင့် အလုပ်လုပ်သည်။

Prediction ပြုလုပ်ရာတွင် algorithm သည်

# New data point နှင့် dataset ထဲရှိ data points များကြား distance ကိုတွက်ချက်သည်
# အကွာအဝေးအနည်းဆုံး K ခုကိုရွေးချယ်သည်
# Classification တွင် Voting method ဖြင့် Label သတ်မှတ်သည်
# Regression တွင် Neighbor values များ၏ average ကို ယူသည်

----

## Distance Metrics 
KNN သည် “Nearest” ကို သတ်မှတ်ရန် Distance function များကို အသုံးပြုသည်။ အများဆုံးအသုံးပြုသည်မှာ—

### 1. Euclidean Distance 
d(p,q)=(p1​−q1​)2+(p2​−q2​)2+...​

### 2. Manhattan Distance 
d(p,q)=∣p1​−q1​∣+∣p2​−q2​∣+...

### 3. Minkowski Distance 
Generalized distance metric ဖြစ်သည်။

**Distance Dominance Issue:**

Features တွင် scale မညီသောအခါ (ဥပမာ—အသက် 25 နှင့် ဝင်ငွေ $30,000) distance ကိုပျက်သွားစေနိုင်သဖြင့် **Feature Scaling (Normalization/Standardization)** သည် KNN တွင် အရေးပါသည်။

= ✔ KNN Distance Example (Correct Burmese Font Version) =
**ဥပမာ — လူနှစ်ယောက်ရဲ့ အသက်နဲ့ ဝင်ငွေကို နှိုင်းယှဉ်ကြည့်မယ်။**

* **p = (25, 30000)**
* **q = (30, 45000)**

ဒီနေရာမှာ Euclidean distance ကို တွက်မယ်—

d=(25−30)2+(30000−45000)2​

d=25+225000000​≈15000

ဒီလိုကြည့်ရင် **ဝင်ငွေကိန်းဂဏန်းက အသက်ထက် 훨씬ကြီးလို့ distance ကို dominate လုပ်နေ** တာ မြင်ရမယ်။

ဒါကြောင့် **Feature Scaling (Normalization or Standardization)** လုပ်ပေးဖို့အရေးကြီးပြီး algorithm မှာ မတည်ငြိမ်နိုင်တဲ့ ပြဿနာတွေကို ကာကွယ်နိုင်ပါတယ်။
----

## ✔ K Value ရွေးချယ်ပုံ 
* **K သေးစွာ (ဥပမာ K = 1)**  → Noise ပေါ်မူတည်ပြီး မှားနိုင်ခြေများ (overfitting ဖြစ်နိုင်)
* **K ကြီးစွာ (ဥပမာ K = 100)**  → Decision boundary ကျယ်ပြနေပြီး အသေးသုံးသပ်ချက် (details) ပျောက်ကွယ်နိုင်

ထို့ကြောင့် **K ကို odd number (3, 5, 7...)** သုံးတတ်ကြပါတယ်။

– Reason: Classification မှာ tie-breaking ပြဿနာ မဖြစ်စေရန်

K တန်ဖိုးအကောင်းဆုံးကို ရွေးချယ်ဖို့ **Cross-Validation** technique ကို အသုံးပြုကြပါတယ်။
----

## Choosing the Value of K 
K parameter သည် model performance ကိုအထိ အရေးပါတဲ့ hyperparameter ဖြစ်သည်။

* **K = 1** → Very sensitive to noise
* **K ကြီးလေလေ** → Smoother boundary, but may lose important details

အတွေ့အကြုံအရ K ကို **odd number** အဖြစ်ရွေးချယ်လေ့ရှိသည်၊ သို့မဟုတ် Classification တွင် tie-breaking issue မဖြစ်စေရန် Cross-validation ဖြင့် K value ကို optimize လုပ်လေ့ရှိသည်။

## Real-World Applications 
### 1. Recommender Systems – Netflix 
Netflix ၏ early-stage recommendation algorithms တွင် KNN-based collaborative filtering ကိုအသုံးပြုခဲ့သည်။

User တစ်ဦး၏

* ကြည့်ခဲ့သောဇတ်ကားများ
* Rating patterns

တို့ကိုအသုံးပြုကာ **nearest similar users** (neighbors) ကိုရှာပြီး neighbors ကြိုက်နှစ်သက်ခဲ့သည့် ဇတ်ကားများကို recommend ပြုလုပ်သည်။

2006 Netflix Prize တွင်လည်း KNN-based baselines များသည် initial benchmarks အဖြစ် အသုံးပြုခဲ့သည်။
----

### 2. Healthcare – Medical Diagnosis 
KNN သည် medical datasets များတွင် အထူးအသုံးဝင်သည်။

ဥပမာ—**Wisconsin Breast Cancer Dataset** တွင်

* Tumor size
* Texture
* Perimeter စသည့် features များကို သုံး၍ **Benign vs. Malignant** classification ပြုလုပ်ရာတွင် KNN သည် accuracy ကောင်းမွန်သည့် algorithm တစ်ခုဖြစ်သည်။