ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
KNN (K-Nearest Neighbors) က data point အသစ်ကို classify ချင်ရင် — training data ထဲက 'အနီးဆုံး neighbor K ခု' ကို ရှာပြီး, အများစု (majority vote) ရလဒ်ကို prediction အနေနဲ့ ပေးပါတယ် (K=5 ဆိုရင် အနီးဆုံး ၅ ခုကို ရှာပြီး, အများစုက Class A ဆိုရင် prediction ကလည်း Class A) — 'Lazy Learning' လို့ ခေါ်ကြပါတယ်, training phase မှာ data ကို 'memorize' ရုံသာ လုပ်ပြီး, prediction phase မှာမှ distance calculation ကို လုပ်တာမို့ပါ။ K value ရွေးချယ်မှု (small K = noise sensitive, large K = boundary blur) က model performance ကို သက်ရောက်ပါတယ်.
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
`from sklearn.neighbors import KNeighborsClassifier; model = KNeighborsClassifier(n_neighbors=5); model.fit(X_train, y_train)` လို့ ရေးရင် — data point အသစ်တစ်ခုကို predict ချင်ရင်, training data ထဲက distance အနီးဆုံး point ၅ ခုကို ရှာပြီး, အများစု class ကို ပြန်ပေးပါတယ် — K value ကို ကွဲပြားစွာ (K=1, K=5, K=15) ချကြည့်ပြီး test accuracy ဘယ်လို ပြောင်းလဲလဲ compare ကြည့်နိုင်ပါတယ်.
အတူတူ ကြည့်မယ်
from sklearn.neighbors import KNeighborsClassifier
for k in [1, 5, 15]:
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
accuracy = model.score(X_test, y_test)
print(f"K={k}: accuracy={accuracy:.2f}")K=1: accuracy=0.79
K=5: accuracy=0.86
K=15: accuracy=0.83၅ မိနစ် စမ်းကြည့်
KNN classifier ကို K value (1, 5, 15) အမျိုးမျိုးနဲ့ train ကြည့်ပြီး, accuracy result ကို compare ကာ ဘယ် K value က ဒီ dataset အတွက် ပိုသင့်တော်လဲ ဆုံးဖြတ်ကြည့်ပါ။
သတိလေးတစ်ချက်
KNN ရဲ့ prediction time က training data size ကြီးလာတာနဲ့အမျှ slow ဖြစ်လာပါတယ် (data point တိုင်း distance calculate ရလို့) — large dataset (row သန်းချီရှိရင်) production မှာ KNN ကို direct သုံးရင် performance issue ဖြစ်နိုင်ပါတယ်.