TOPLULUK- KOLEKTİF ÖĞRENME YÖNTEMLERİ

Sınıflandırma algoritmaları ile bir verinin hangi sınıfa ait olduğunu tahmin ettiğimizi düşünelim. Bunun için problemimize en uygun sınıflandırma yöntemini seçer, gerekli optimizasyonları yapar ve yüksek doğruluk oranı elde etmeye çalışırız. Ancak bazı veri setlerinde yüksek varyans ve düşük doğruluk değerine sahip sınıflandırmalar gerçekleşmektedir. Sınıflandırma ve tahmin işlemlerindeki bu soruna çözüm üretmek ve performans kaybını önlemek için farklı metotlar öne sürülmüştür. Bu metotlardan biri de topluluk öğrenme yöntemleridir.

Peki topluluk öğrenmesi nedir?

Topluluk öğrenmesi, birden fazla modelin aynı sorunu çözmek için eğitildiği ve daha iyi sonuçlar elde etmek amacıyla birleştirildiği bir makine öğrenimi modelidir. “Birlikten kuvvet doğar” bu sözü hepimiz duymuşuzdur topluluk öğrenme yöntemleri de tam olarak böyle çalışır. Özetlemek gerekirse zayıf modeller doğru şekilde birleştirildiğinde daha güçlü modeller oluşur hipotezine dayanmaktadır.

Böyle bir yaklaşımı günlük hayatımızda rutin olarak birkaç kişinin görüşlerini sorarak kullanıyoruz. Örneğin, bir ürünü almadan önce o ürünü alanlara danışırız, internetteki kullanıcı yorumlarını okuruz. Akademik anlamda bir örnek verecek olursak bir makale yayına kabul edilmeden önce birkaç uzman tarafından incelenir. Çünkü birden çok uzmanın ortak kararı, bir uzmanın kararından daha güvenilir ve daha yüksek doğruluğa sahiptir.

Bagging, Boosting, Voting Classifier, Stacking başlıca topluluk öğrenme metotlarındandır. Bu yazımızda Bagging üzerinde duracağız ve pekiştirmek için Python’da bir örnek çalışma yapacağız. Öncelikle Bagging yöntemi nedir inceleyelim.

Yerine Koyarak Örnekleme (Bagging: Bootsrap Aggregating)

Bagging, var olan bir eğitim setinden yeni eğitim setleri türeterek temel öğreniciyi yeniden eğitmeyi amaçlayan bir yöntemdir. Yukarıdaki şemadan da yola çıkarak konuya biraz açıklık getirelim. Öncelikle mevcut veri seti eğitim ve test olarak ayrılır. Burada eğitilecek (n tane örnekten oluşan) veri setinden, basit tekrarlı tesadüfi örnekleme yoluyla torbalara (1’den n’e kadar) örneklem birimleri atanır ve ortaya bir topluluk çıkar.

Seçilen her örneklem tekrar eğitim setine geri koyulur.  Bu durumda bazı eğitim örnekleri yeni eğitim kümesinde yer almazken bazıları birden fazla yer alır. Ortaya çıkan örneklem birimleri modelleme için kullanılır ve eğitilir. Her bir model değerlendirilerek regresyon problemi çözüyorsak ortalama, sınıflandırma problemi çözüyorsak çoğunluk oylaması sonuçlarına göre tahmin işleminin sonucu tek bir ifade ile ortaya çıkar. Bunun sonucunda gözlem ve değişken bazında rassallık sağlanır, aşırı öğrenme sorunu hafifler ve tahmin başarısı artar.

Şimdi Python’da bir uygulama yaparak öğrendiklerimizi pekiştirelim. Uygulamamızda öncelikle karar ağacı ile tek sınıflandırıcı kullanacağız sonrasında aynı veri seti ile topluluk öğrenme yöntemlerinden Random Forest ve Bagging uygulaması yapacağız ve aralarındaki farkları birlikte karşılaştıracağız.

1.Adım: Gerekli kütüphaneler yüklenmiştir.

2.Adım: Veri seti yüklenmiştir. Veri seti sosyal medya reklam kampanyası kayıtlarından oluşmaktadır. Elimizde toplamda 400 gözlem ve 5 tane de özellik mevcuttur. Bunlar; KullaniciID, Cinsiyet, Yaş, Tahmini Gelir ve  SatinAlmaDurumu’dur. Burada hedef değişkenimiz ürünün satın alınma durumudur. Hedef değişkenimiz eğer bir müşteri bir ürünü aldıysa 1, almadıysa 0 olarak kodlanmıştır. Diğer dört nitelik ise bağımsız değişkenlerdir. Sınıflandırma modelimiz bağımsız değişkenleri kullanarak, bağımlı değişkenin (yani ürünün satın alınıp alınmadığını) tahmin edecektir.

Bağımlı değişken incelenmiştir. Buna göre sosyal medya reklam kampanyası sonucu 257 kişi ürün satın almamış, 143 kişi ise ürünü satın almıştır.

3.Adım: Veriler eğitim için hazırlanmıştır. Burada yaş ve tahmini maaş değerleri bağımsız değişkenlerdir ve X’e atanmıştır. Satın alma durumu değişkeni de bağımlı değişken olan y’ye atanmıştır.

Daha sonra veri seti eğitim ve test seti olarak ayrılmıştır. Yüzde 80’i eğitim seti yüzde 20’si de test seti olarak ayrılmıştır.

4.Adım: Burada karar ağacı modeli eğitilmiştir ve karar ağacına ait doğru sınıflandırma oranı yaklaşık olarak yüzde 90 olarak bulunmuştur. Confusion matrisine bakıldığında ise modelimizin 80 tane veri içerisinden 72 tanesini doğru tahmin ettiği görülmektedir.

5.Adım: Şimdi topluluk öğrenme yöntemlerinden olan Random Forest modelini oluşturacağız ve doğruluk oranını inceleyeceğiz.

Burada sınıflandırma için sklearn.ensemble kütüphanesinin RandomForestClassifier sınıfını kullanılmıştır. Bu model parametre olarak n_estimators alır ve bu parametre rastgele ormandaki ağaçların sayısını tanımlar. Biz 15 ağaç olarak kodladık.

Bir topluluk öğrenmesi yöntemi olarak Random Forest’ın %92 ile karar ağacına göre daha yüksek bir doğruluk oranı yakaladığını görüyoruz. Ayrıca modelimiz 80 tane veri içerisinden 74 tanesini doğru tahmin etmiştir. Oldukça iyi bir tahmin olduğunu söyleyebiliriz.

6.Adım: Şimdi de Bagging modelini oluşturacağız.

Bagging modelinin test sonuçlarına baktığımızda yaklaşık 0.94’lük bir doğruluk oranına sahip olduğunu görüyoruz. Ayrıca modelimiz 80 tane veri içerisinden 75 tanesini doğru tahmin etmiştir. Tıpkı Random Forest da olduğu gibi oldukça iyi bir tahmin olduğunu söyleyebiliriz. Topluluk öğrenmesi yöntemleri yardımıyla, tek bir karar ağacındaki doğruluk oranından daha yüksek bir değer elde ettik. Bu durumun da topluluk öğrenmesi yöntemlerinin tek bir karar ağacı sınıflandırmasından farkını güzel bir şekilde açıkladığını düşünüyorum. Umarım topluluk öğrenme yöntemleri konusu hakkında bir fikriniz oluşmuştur ve umarım faydalı olmuştur.

Bir sonraki yazımda görüşmek dileğiyle 😊

Yararlanılan Kaynaklar:

https://tevfikbulut.com/2020/05/31/topluluk-ogrenme-algoritmalarindan-torbalama-algoritmasi-ile-gogus-kanserinin-tahmini-uzerine-bir-vaka-calismasi-a-case-study-on-the-prediction-of-breast-cancer-using-bagging-algorithm-from-ensemble/

https://www.veribilimiokulu.com/blog/ensemble-yontemler-topluluk-ogrenmesi-basit-teorik-anlatim-ve-python-uygulama/

https://www.knowledgehut.com/blog/data-science/bagging-and-random-forest-in-machine-learning

http://dspace.yildiz.edu.tr/xmlui/bitstream/handle/1/7360/0113685.pdf?sequence=1&isAllowed=y

https://towardsdatascience.com/simple-guide-for-ensemble-learning-methods-d87cc68705a2

http://abakus.inonu.edu.tr/xmlui/handle/11616/18218

http://www.scholarpedia.org/article/Ensemble_learning#:~:text=Ensemble%20learning%20is%20the%20process,%2C%20function%20approximation%2C%20etc.

https://medium.com/ml-research-lab/ensemble-learning-the-heart-of-machine-learning-b4f59a5f9777

https://medium.com/deep-learning-turkiye/ensemble-learning-bagging-ve-boosting-50643428b22b

https://medium.com/ml-research-lab/ensemble-learning-the-heart-of-machine-learning-b4f59a5f9777

https://medium.com/deep-learning-turkiye/ensemble-learning-bagging-ve-boosting-50643428b22b#:~:text=1.-,Torbalama(Bagging),tahminciler%20uygulanarak%20bir%20topluluk%20olu%C5%9Fturulur.&text=Olu%C5%9Fturulan%20alt%20%C3%B6rneklemler%20orijinal%20veri%20setindeki%20say%C4%B1%20ile%20ayn%C4%B1%20olacakt%C4%B1r

https://www.veribilimiokulu.com/blog/agaca-dayali-yontemlerde-bagging-ve-boosting-arasinda-ne-fark-var/

http://ceur-ws.org/Vol-1483/11_Bildiri.pdf

https://medium.com/@anilguven1055/topluluk-%C3%B6%C4%9Frenmesi-ensemble-learning-3b71524297d5

https://medium.com/@billmuhh/kolektif-%C3%B6%C4%9Frenme-ve-bagging-algoritmas%C4%B1-e8ea3d932b72

https://towardsdatascience.com/ensemble-methods-in-machine-learning-what-are-they-and-why-use-them-68ec3f9fef5f