ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Regression ရဲ့ output က continuous number ပါ (house price $250,000) — Classification ရဲ့ output ကတော့ category/class ပါ (spam ဒါမှမဟုတ် not-spam, ရောဂါရှိ/မရှိ)။ 'Logistic Regression' ဆိုတဲ့ နာမည်ထဲမှာ 'Regression' ပါပေမယ့် classification algorithm ပါ (historical naming) — Sigmoid function ကို သုံးပြီး, output ကို 0-1 ကြား probability အဖြစ် ပြောင်းလဲပေးပါတယ် (probability > 0.5 ဆိုရင် Class 1, ≤ 0.5 ဆိုရင် Class 0 ဆိုတာမျိုး threshold ချထားလို့ရပါတယ်).
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
Email spam classification (Basic lesson 1 ရဲ့ ဥပမာ) ကို Logistic Regression ဖြင့် build ရင် — `from sklearn.linear_model import LogisticRegression; model = LogisticRegression(); model.fit(X_train, y_train)` လို့ train ပြီး, `model.predict(X_test)` က Class (0=not-spam, 1=spam) ကို ပြန်ပေးပါတယ်, `model.predict_proba(X_test)` ကတော့ probability (ဥပမာ - 87% spam ဖြစ်နိုင်ခြေ) ကို ပြန်ပေးပါတယ်.
အတူတူ ကြည့်မယ်
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
# Predicted class (0 or 1)
predictions = model.predict(X_test)
# Predicted probability for each class
probabilities = model.predict_proba(X_test)
print(probabilities[:3])
# [[0.13, 0.87], [0.92, 0.08], [0.45, 0.55]]
# column 0 = P(not spam), column 1 = P(spam)[[0.13 0.87]
[0.92 0.08]
[0.45 0.55]]၅ မိနစ် စမ်းကြည့်
Binary classification sample dataset (spam/not-spam simulate data) ကို Logistic Regression ဖြင့် train ကြည့်ပြီး, `predict()` နှင့် `predict_proba()` ရလဒ်ကို နှိုင်းယှဉ် ကြည့်ကြည့်ပါ။
သတိလေးတစ်ချက်
Class imbalance (spam data 5%, not-spam data 95%) ရှိတဲ့ dataset ကို Logistic Regression default setting နဲ့ train ရင် — model က 'အားလုံး not-spam' လို့ predict ချရုံနဲ့ 95% accuracy ရနိုင်ပေမယ့်, spam ကို တစ်ခုမှ မဖမ်းနိုင်ဘူးဆိုတာ ဖြစ်နိုင်ပါတယ် — accuracy တစ်ခုတည်းကို မယုံပါနှင့် (Intermediate chapter ရဲ့ metric lesson ကို ဆက်လေ့လာပါ)။