Yazan : Şadi Evren ŞEKER
Bu yazının amacı, naif bayes sınıflandırıcısının (naive bayes) metinler üzerinde nasıl kullanıldığını açıklamaktır. Oldukça basit ve etkili bir metin madenciliği yöntemi olan naif bayes sınıflandırıcısını anlamak için bir örnek kullanalım.
Örneğin iki metin aşağıdaki şekilde verilmiş olsun:
metin 1 : java bazı bilgisayar mühendisliği bölümlerinde eğitimi verilen bir programlama dilidir.
metin 2 : bazı bilgisayar mühendisliği projelerinde java programlama dili kullanılmaktadır.
Bu metinlerin, kavram metin masfufu (term document matrix) daha önceki bir yazıda gösterilmiştir. Şimdi amacımız yeni gelen aşağıdaki metnin, hangisine daha yakın olduğunu bulmak olsun.
Metin 3 : bilgisayar kavramları eğitimi
Problemi çözmeye başlamadan önce Naive Bayes yönteminin klasik formülünü hatırlayalım:
Bu klasik formülde bir koşullu olasılığın, nasıl küme olasılıklarına indirgendiği gösterilmektedir.
Metin madenciliğinde (text mining) önemli konulardan birisi de metin içerisinden özelliklerin nasıl çıkarılacağıdır. Bu yazı kapsamında, konuyu dağıtmamak için en basit yöntem olarak kelime seviyesinde çalışacağız. Yani bir kelimenin bir sınıfı belirlemede kullanılmasını hedefliyoruz.
Yine olayı basitleştirmek için yukarıdaki bayes formülünde olduğu üzere 2 sınıf var olduğunu kabul edeceğiz.
Bu durumda herhangi bir kelimenin herhangi bir sınıfta bulunma olsılığı aşağıdaki şekilde gösterilebilir:
Yani diğer bir deyişle S sınıfı gerçekleşen olaysa, ki kelimesinin bu olayın içinde yer alma olsılığıdır.
Bu durumda naive bayes sınıflandırma yöntemini kullanırsak (lütfen ilgili yazı için tıklayın) kelime bazlı sınıflandırıcımızın aşağıdaki şekilde olduğunu söyleyebiliriz.
Yani diğer bir deyişle, sistemimizde sınıflandırılmak istenen X metninin S sınıfında olma olasılığı, bu metindeki bütün kelimelerin S sınıfında olma olasılıklarının çarpımıdır.
Neticede elimizdeki bütün sınıflar için metin denenerek en yüksek olasılığa sahip sınıfa aittir denilebilir.
Örneğimize dönecek olursak metinlerdeki kelimeleri listeleyelim:
Şimdi bu listeye göre metin1’de 9 kelime bulunuyor ve hepsinin frekansı (sıklığı) aynı, dolayısıyla bütün kelimeler için
oranındadır denilebilir. Aynı durum Metin2 için de geçerlidir ve 7 kelimenin tamamı için:
değerindedir denilebilir. Neticede yeni gelen ve sınıflandırılmak istenen Metin 3 için bütün kelimelerin değerlerine bakacağız.
M3 = {bilgisayar, kavramları, eğitimi}
, ,
Burada sık karşılaşılan bir problem olan 0 durumunu düzeltmek için iki yöntemden birisi kullanılır, ya normalleştirme yapılarak bu değer sistemden çıkarılır, ya da çok düşük bir değer konulur. Biz normalleştirme yapalım:
şeklinde ortalama alıyoruz.
Olarak bulunur.
Şimdi gelelim ikinci metin için aynı hesabı yapmaya:
, ,
Bu durumda normalleştirilmiş değer:
olarak bulunur. Demek ki yeni gelen metin 3, metin 1’e daha yakındır denilebilir. Sınıflandırmamız neticesinde bir sınıf seçilmesi istenseydi, metin 1’in bulunduğu sınıfta olduğu söylenebilirdi.