şükela:  tümü | bugün
  • naif dediysek, o kadar da degil.

    edit: link.
  • makine ögrnemesi konusunda sık kullanılan, naiflik konusunda ise çok eleştirilen bir teoremdir.

    makina öğrenmesi tarafında kısaca şöyle kullanılır:
    1. önce eğitim verisi(prior/training data) toplanır.
    mesela 100 bin tane linkedin profili toplanır, bu profiller, a üniversitesinden, y bölümünden mezun olmuş z şirketinde çalışmış gibisinden ön işlemden geçirilir. elinizde 100 bin tane üniversite-çalıştığı şirket bilgisi olur.

    2. bu eğitim verisini tek tek sınıflandırıcıya verirsiniz. yani adım adım makine öğrenmeye başlar.

    3. eğitme işi bittikten sonra artık makine üniversite ve bölüme bakarak çalışılan yeri tahmin edebilir.
    bu teoremle geliştirilen sınıflandırıcının başarısı büyük ölçüde eğitim verisine, daha sonra bu eğitim verisinin ön işlem kalitesine bağlıdır. gerisi ise teorimin söylediği hesap kitap işidir.

    bu algoritmayi python dilinde gerçekleştiren bir sınıflandırıcı da ben yazdım. buradan bakabilirsiniz: https://github.com/muatik/naive-bayes-classifier

    bir çok alternatif vardır, mesela scikit.learn popüler bir data science paketidir ve içinde naive bayes de dahil olmak üzere sınıflandırıcılar bulunmaktadır. benim geliştirdiğim yalın ve daha çok kendimi geliştirmek için yazdığım bir pakettir. elbette geliştirebilirsiniz.
  • bir bütünü tanımlayan değişkenlerin birbirinden bağımsız olduğu varsayımına dayanır. naifliği de buradan kaynaklanır.
    örneğin dökümanları içeriklerine göre sıralandırmak için her bir döküman içerdiği kelimeler ve bu kelimelerin kaç kere geçtiği hesaplanır. training datadaki tüm bu istatistikler göz önüne alınarak " 'viagra' kelimesini içeren dökümanların 'spam' olarak sınıflandırılma oranı" (p('spam'|'viagra kelimesini içeriyor') )gibi değerler hesaplanır.

    daha sonra bildiğimiz bayes rule uygulanarak verilen bir dökümanın spam olma ihtimali hesaplanır.
    örneğin dökümanımızın içeriği "viagra fiyatlarında şok indirim!" olsun. bu dökümanın spam olma olasılığı:

    p('spam'|'viagra kelimesini içeriyor','fiyatlarında kelimesini içeriyor', 'şok kelimesini içeriyor', 'indirim kelimesini içeriyor')
    olur.
    bunu hesaplayabilmek içinde bayes teoreminde bu bu ihtimallerin birbirinden bağımsız olduğunu varsayarak:
    p('spam'´) p('viagra kelimesini içeriyor|'spam') p('fiyatlarında kelimesini içeriyor|'spam') p('şok kelimesini içeriyor|'spam') p('indirim kelimesini içeriyor|'spam')

    şekline dönüştürülür. buradaki tüm değişkenler training datamızı işlerken belirlenmişti.

    aynı şekilde 'spam değil' olma ihtimali de hesaplandıktan sonra en büyük ihtimali alan sınıfa dahil edilir dökümanımız. daha fazla sınıfımız varsa aynı işlem her bir sınıf için yapılır.

    naifliğinden kontekse hiç bulaşmaması ama gerçekten işe yarar olması şaşırtıcıdır. ayrıca kendileri bitirme proje konumdur.
  • üzerinde büyük tartışmalar dönen teoremdir.çağdışı bir yaklaşım olmasına rağmen işe yarar olması yadsınamaz.