Makine Öğrenmesi · Bölüm 4
Naive Bayes: olasılıkla karar
İki sensörü birleştirip "önde engel var mı?" sorusunu yanıtlamak
Veri. Robot her an iki sensör okur: ultrasonik mesafe ve IR yansıma. 120 etiketli ölçümümüz var: 70'i boş yolda, 50'si önde engel varken. İki sensör de gürültülü; tek başına hiçbiri güvenilir değil.
import numpy as npfrom robot import X, y, Q # [mesafe cm, IR], 1 = engeldef fit(X, y):return [(X[y == c].mean(0), X[y == c].var(0), (y == c).mean()) for c in (0, 1)] # ortalama, varyans, önseldef logp(x, m, v, prior):return np.log(prior) - 0.5 * (np.log(2 * np.pi * v) + (x - m) ** 2 / v).sum() # bağımsız: log olasılıklar toplanırmodel = fit(X, y)for x in Q:s = [logp(x, *model[c]) for c in (0, 1)] # iki sınıfın puanıprint(int(np.argmax(s))) # büyük olan kazanır
Sahnedeki her sayı, aynı algoritmanın tarayıcında yapılan gerçek çalıştırmasından gelir (sabit tohum, her seferinde aynı sonuç). Python kodunu kendi bilgisayarında çalıştırırsan rastgele başlangıçlar farklı olacağı için sayılar biraz değişebilir.
Nasıl çalışır
- Her sınıf için her sensörün ortalaması ve varyansı hesaplanır: dört çan eğrisi. Sınıfların oranı da önsel olasılıktır (70/120, 50/120).
- "Naive" varsayım: sınıf bilindiğinde sensörler birbirinden bağımsızdır. Böylece olasılıklar çarpılır, logaritmada toplanır.
- Yeni ölçüm için iki sınıfın log olasılığı hesaplanır; büyük olan kazanır.
- Sonuçta sınır eğri bir çizgidir (iki Gauss’un karşılaştığı yer). 30 saklı ölçümle doğruluk ölçülür.
Neden önemli
Az veriyle bile çalışır, eğitimi bir ortalama ve varyans hesabıdır, ve her kararın gerekçesi okunabilir. Veri madenciliğinin en çok kullanılan on algoritmasından biridir; spam süzgeçleri, arıza teşhisi ve sensör birleştirmede hâlâ yaygındır.
ESOF 323, 11. hafta: robotlarda derin öğrenme →