Giter VIP home page Giter VIP logo

yzm208's Introduction

yzm208

Giriş (Özet)

Sınıflandırma problemi (Classification) günümüzde makine öğrenmesinin temel bir problemlidir. Bir sınıflandırma probleminde, algoritmanın amacı sınıflarıyla birlikte verilen bir eğitim seti ile bir sınıflandırıcı oluşturmaktır. Genellikle verilen bir eğitim seti E, bir özellik vektörü (x1, x2, ..., xn) ile temsil edilmektedir. Burada xi, özellik vektörü Xi'nin değeridir. Diyelim ki C sınıflandırma değişkenini temsil etsin ve c sınıflandırma değişkeninin değerini temsil etsin. Bu çalışmada sadece 2 sınıf olduğu varsayılmaktadır: + (pozitif sınıf) veya - (negatif sınıf).

Metot

Naive Bayes

Sınıflandırıcı verilen örnek E'ye bir sınıf değeri atayan fonksiyondur. Bu çalışma için 3 model geliştirilecektir. Birinci model saf gaussian naive bayes kullanılarak oluşturulmuştur, ikinci model parametre optimizasyonu yapılmış naive bayestir, üçüncü model ise düzenlenmiş veri ile eğitilen naive bayestir. Naive bayes'in olasılık dağılımına göre verilen bir örnek E = (x1, x2, ..., xn) için sınıfın c olma olasılığı:
P(C | x1, ..., xn) = (P(C) * P(x1, ..., xn | C)) / P(x1, ..., xn)
Verilen örnek E, c olarak sınıflandırılması için gerek ve yeter şart:
fb(E) = P(C = +| x1, ..., xn) / P(C = -| x1, ..., xn) >= 1
Burada fb(E) bayesian sınıflandırıcı olarak adlandırılır. Varsayın ki verilen örnek E'de bütün özellikler birbirinden bağımsız; yani,
P(E | C) = P(x1, ..., xn | C) = ∏ni=1 Pxi | C)
Buna göre sınıflandırıcı:
fnb(E) = P(C = +) / P(C = -) * ∏ni=1 P(xi | C = +) / P(xi | C = -)
Burada fnb(E) fonksiyonu bayes sınıflandırıcısı veya naive bayes olarak adlandırılır.

Gaussian Naive Bayes

Bu algoritma öncelikle verilen örnek E'nin (x1, x2, ..., xn) bütün özelliklerini gaussian (normal) dağılımına dönüştürmektedir. Yani algoritma çalışırken özellik sayısı kadar gaussian dağılımı oluşturulmaktadır. Ardından verilen örnek E'nin hangi sınıfa ait olduğunu hesaplamak içinse önce bir P(C = +) ön değeri hesaplamaktadır. Bu ön değer herhangi bir yaklaşıklık olabilir. Örneğin; veri setinde 200 adet pozitif 150 adet negatif sınıf varsa, P(C = +) olasılığı 200 / 350 şeklinde hesaplanabilir. Aynı şekilde P(C = -)'de 150 / 350 şeklinde hesaplanır. Bunlara prior probability (önsel olasılık) denir. Sınıflandırıcı oluşmadan önce (deneyden önce) yapılabilecek en iyi varsayım olarak da geçer. Prior probability hesaplandıktan sonra verilen örnek E'nin pozitif sınıf ve negatif sınıf likelihood'ları hesaplanır. Bunlar örnek hakkında bir çıkarımdır ve daha önceden oluşturulan gaussian dağılımlarına göre hesaplanır. Örneğin 3 özelliği olan örnek E1'nin sınıfını manuel olarak hesaplayalım:

Özellik Özellik Değeri
Glikoz Değeri 85
BMI Değeri 33.6
İnsulin Değeri 12

P(E | C) = P(x1, ..., xn | C) = P(C) * ∏ni=1 P(xi | C)'dir. Burada P(C) prior probability olup herhangi bir varsayım olabilir, şimdilik 0.6 varsayalım. Ardından likelihood'lar hesaplanır: P(xi | C). Bu değerde hesaplanan gaussian dağılımına göre bulunur. Dağılım fonksiyonunda x yerine 85 (Glikoz Değeri) girersek y değeri 0.004 olmaktadır. BMI değeri için 0.0001, insulin değeri için ise çok çok küçük bir değer çıkmaktadır. Bunları çarpıp formüle göre P(E | C) bulabiliriz. Ancak çok küçük değerlerle çarpım işlemi yapıldığı zaman bilgisayar zorlanmaktadır. Bilgisayarın bir sayıyı hafızada tutabilmesi için ancak belli bir küçüklükte olmalıdır, o değerden daha da küçük bir sayı tutmaya çalıştığında ise hata vermektedir. Bundan dolayı biz bu çarpımın logaritmasını alıyoruz. Logaritma içinde çarpım logaritmaların ayrı ayrı toplanması demektir. Bu işlemi tüm özellikler için yaptıktan sonra elde ettiğimiz değer diyelim P(x1 | C = +) = -53 olsun. Aynı işlemleri negatif sınıf için yaparsak da diyelim ki P(x1 | C = -) = -23 olsun. O zaman P(x1 | C = -) > P(x1 | C = +) olduğundan dolayı sınıflandırıcı sonuç olarak negatif (0) değerini verecektir.

Sonuçlar

Parametre Optimizasyonu

Saf veri ile gaussian naive bayes eğittiğimiz zaman accuracy (kesinlik) değeri yaklaşık olarak 0.83 çıkmaktadır. Bu veride hiç düzenlemem yapılmamış olup parametrelerini standart bıraktığımız bir model için gayet iyidir. Bu modelde parametre optimizasyonu yapmak için 2 metot seçilmiştir. Biri GridSearchCV olmakla birlikte verilen parametre adaylarının hepsini tek tek model uzayında deneyip en iyisini döndürmektedir. İkinci yöntem ise RandomizedSearchCV'dir. Bu yöntem GridSearchCV gibi tüm değerlere bakmak yerine rastgele seçilmiş parametre kombinasyonlarını denemektedir. GridSearchCV çalışma süresi GoogleColab üzerinde 3dk sürmüş olmasında rağmen RandomSearchCV sadece 1 saniye sürmüştür. Ancak GridSearch sonunda elde edilen parametreler ile 0.84 accuracy elde etmişken, RandomSearch ile 0.82 accuracy elde etmiş bulunmaktayız. Bu değer standart parametrelerden bile düşüktür ancak hız konusunda en hızlısı diyebiliriz. GridSearch ise en iyi sınıflandırıcıyı bulurken en yavaşıdır. Diğer bir taraftan confusion matrix değerlerine baktığımız zaman yanlış negatif değeri RandomSearch'de 4 iken GridSearch'de 5'tir (Standart parametreler ile 6'dır). Bu RandomSearch'ün bazı durumlarda GridSearch'ten daha iyi olduğunu gösterir.

Veri Ön İşleme

Verileri işledikten sonra eğitilen model GridSearch tarafından seçilen parametreler ile eğitilmiştir çünkü bu çalışmada asıl amacımız accuracy'yi en yüksek seviyeye çıkarmaktır. Standart normalizasyon sonrası elde edilen accuracy değeri 0.75'tir. Min-max normalizasyonu ardından elde edilen accuracy ise 0.74'dür. Buda bize Naive Bayes'te normalizasyonun çok da iyi sonuç göstermediğini verir. Bu iki değerde saf veri ile eğitilmiş modellerden düşüktür.

Yorum

Naive Bayes için parametre optimizasyonu önemli olmaktadır ve dikkat edilmesi gereklidir. GridSearchCV ile yapılan optimizasyon modelde güzel performans verirken RandomSearchCV biraz işi şansa bırakmaktadır. Ancak süre kısmından bakıldığı zaman kısa sürede model eğitmek gerekli ise RandomSearchCV daha işlevsel olacaktır. Normalizasyon kısmına gelirsek diabetes data setinin Naive Bayes için normalize edilmesi iyi bir sonuç vermemiştir. Bunun sebebi veride eksik değerler (0) olması olabilir. Daha detaylı bir analiz yapılması gereklidir. Eğitilen modellerden en yüksek accuracy değeri 0.84'dür ki buda Naive Bayes için iyi sayılır. Naive Bayes'in özellikler arasında hiçbir bağ olmamasını varsayım yaparak çalışmasına rağmen nasılda bu kadar yüksek bir accuracy aldığına gelirsek ise veri setinin sıcaklık grafiğine baktığımız zaman bu bize özelliklerin birbiri ile korelasyonlarını gösterir. Buda çalışmada çoğu özellik için düşük gelmiştir. Yani bu veri seti için Naive Bayes kullanılabilir çünkü özellikler arasında bağlantı bazı istisnalar dışında yok denecek kadar azdır. Veri setinde sınıfların dağılıma bakarsak ise negatif sınıfların sayısı daha fazladır buda accuracy'yi düşüren faktörlerden bir tanesi olabilir.

yzm208's People

Contributors

uralaltan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.