Python ile Sınıflandırma Analizleri — Karar Ağaçları
Merhaba, iyi günler.
Bugün; çeşitli veri kümeleri üzerinde özel işlemler ile sayısal olmayan (kategorik) verilerin tahmini için kullanılan analiz metodu-algoritması olan Sınıflandırma (Classification) ile ilgili çeşitli bilgi ve çözümlemeler aktarmaya çalışacağım.
Genel konu özetinin bulunduğu Python Veri Analizi yazısına link üzerinden ulaşabilirsiniz.
Sınıflandırmada (Classification); bir veriyi-veri grubunu-veri kümesini (data-data group-data set) birbirinden farklı ve önceden çeşitli özellikler doğrultusunda ayrılmış-belirlenmiş sınıflardan birine atanması metodudur.
*Kısacası elimizdeki veriyi belirli özelliklere göre grupladığımız gruplara dağıtmak.
Temsili bir görsel ile;
Genel manada sınıflandırma yöntemindeki çözüm haritamız, N etiketli grubu bir Karar Sınırı (Decision Boundary) ile ayıracak optimum düzeyde olan ve hassas alt ölçüm-hesaplamalar barındıran algoritmayı belirlemek ya da yazmak.
Sınıflandırma modeline ait metodolojiler-algoritmalar-alt teknikler;
- Karar Ağaçları (Decision Tree),
- Karar Destek Vektör Makinesi (Support Vector Machine — SVM),
- Yapay Sinir Ağları (Artificial Neural Networks — YSA),
- Genetik Algoritmalar (Genetic Algorithm),
- Bulanık Kümeler Yaklaşımı (Fuzzy Sets Approach),
- Lojistik Regresyon (Logistic Regression — LR)
- Bayes Sınıflandırması (Bayesian Classification)
olarak örneklendirilebilir.
Günlük hayatta çeşitli faaliyet alanlarda çok farklı uygulamalarda sınıflandırma yöntemine başvurulmaktadır.
Karar Ağaçları (Decision Tree) nedir?
Karar ağaçları; Regresyon modellerine benzeyen tek bağımlı değişken ve birçok bağımsız değişken içeren bir sınıflandırma algoritmasıdır.
Karar Ağacı uygulamalarında ağırlıklı olarak veriler üzerinde uygulanan çeşitli regresyon modelleri için alternatif örüntü modeli keşfi gerçekleştirilir.
Karar ağacının araştırmayı hedeflediğimiz sınıfı için başlangıcı sağlayan düğümüne kök düğüm, ara adımlar içeren düğümlerine yaprak düğüm, ağacın bittiği son adıma ise son düğüm denir.
İlgili veri kümesine uygulanacak hedef araştırma içeriğine göre yaprak düğüm sayısı artabilir ya da azalabilir.Araştırma üzerinde uygulanan karar ağacı modelindeki toplam düğüm sayısı ise karar ağacının derinliğini ifade etmektedir.
Karar Ağacı ile analiz ve araştırma gerçekleştirilirken her bir düğüm adımındaki değişkenler test edilir.(Çeşitli senaryolar kurgulanır ve test edilmiş olunur.)
Belirlenen veya baz alınan değişkenlerin takibi ile ana karar ağacı yeniden oluşturulur ve yeni oluşumda başlangıca göre karar ağacı derinliği değişkenlik gösterebilir.
Nedeni ise aranan örgü yapısının son düğümden önce sonuçlanması (yeni son düğüm) veya yaprak düğümlerin çeşitli dallanmalarının budanmasıdır (kırpılmasıdır).Aynı nedensel durumlar aranan örgü yapısından ziyade baz alınan parametreler içinde geçerlidir.
En verimli modeli saptayabilmek için, çokça çeşitli örgüleri ya da parametreleri baz alıp yeni karar ağacı modelleri oluşturmaya çalışmak gerekmektedir.
Budama (kırpma) yöntemleri genel olarak Ön Budama ve Son Budama olarak iki sınıfta ele alınmaktadır.
Ön budama; ağacın dallandırılma aşamasında, ayırma için kullanılan istatistiki kriterler, gini indeksi veya kazanım oranı için belirli eşik değerler konularak ağacın o düğümden sonra büyümemesini esas alınır.
Son Budama‘da ise, bütün karar ağacı oluşturularak, son hali üzerinden küçültme işlemi gerçekleştirilir.
En çok tercih edilen karar ağacı algoritmaları;
Karar Ağacı Uygulama Örneği
İfadesel olarak dile getirdiğimiz Karar Ağacı algoritmasını uygulamalı olarak Python ve Microsoft Power BI üzerinde test etmeye çalışalım.
Python üzerinde test etmeden önce ilgili derleyici için Anaconda Navigator üzerinden Jupyter Notebook ile işlemleri ele almaya çalışacağım. Anaconda Navigator
Hızlı bir şekilde scikit-learn üzerinde bulunan açıklayıcı örnek ile karar ağacı algoritmasını ele alalım;
1-Karar Ağacı algoritmam için scikit-learn kütüphanemi yükleyerek eğitim ve değer dizilerimin tanımlamasını gerçekleştiriyorum;
>>> from sklearn import tree
>>> X = [[0, 0], [1, 1]]
>>> Y = [0, 1]
>>> clf = tree.DecisionTreeClassifier()
>>> clf = clf.fit(X, Y)
2-Yapımı algoritmaya uygun kurduktan sonra örnek sınıfını tahmin için kullanmaya başlıyorum;
>>> clf.predict([[2., 2.]])
3-Alternatif olarak aynı eğitim sınıfında olan eğitim örnekleri ile, diğer yapraklardaki değer olasılığını tahminlemeye başlıyorum;
>>> clf.predict_proba([[2., 2.]])
4-Modeli oluşturduktan sonra model eğitimi için, hazır veriler içeren iris veritabanı (Genel bitki özellikleri veri bankası) üzerinden çeşitli bitki özellikleri ile oluşan genetik yapılanmayı ağaç diagramı olarak kurgulayıp-yapılandırıyorum;
>>> from sklearn.datasets import load_iris
>>> from sklearn import tree
>>> X, y = load_iris(return_X_y=True)
>>> clf = tree.DecisionTreeClassifier()
>>> clf = clf.fit(X, y)
5-Model eğitimini tamamlayıp yapılandırmayı oluşturduktan sonra da karar ağacını çizdiriyoruz;
>>> tree.plot_tree(clf)
sonuç çıktısı olarak tüm değerleri ve ağaç diagramını elde ediyoruz.
Burada ki örnek üzerinde budama işlemine yönelik herhangi bir faaliyet ya da ek işlem gerçekleştirmedik.
İlgili veritabanı üzerinden çeşitli değerleri baz alarak eğitim ya da analiz-değer verilerinden budanacak verileri-değerleri çıkartabilir ve diagram yapımızı yeniden yapılandırabiliriz.
Çıktı olarak aldığımız karar ağacı modelimizin derinliği ise 6‘dır; 1 kök, 4 yaprak, 1’de son düğümden oluşmaktadır.
Python üzerinde deneyimlediğimiz karar ağacı algoritmasını Microsoft Power BI üzerinde de test edelim.
Mevcut çözümü Python görselinde tekrarlayacağınız gibi, R üzerinde çalışan Decision Tree görselinde de içeri aldığımız verilerimiz üzerinde herhangi bir kod yazımı-düzenlemesi gerçekleştirmeden karar ağacı modellemesini uygulayabiliriz.
Decision Tree görseline; Visualizations (Görselleştirme) paneli üzerindeki Get More Visual seçeneğinde Microsoft’un lisanslı görselleri altından erişerek, raporunuza ekleyebilirsiniz.
Öğe bilgi eki;
Görseli ekledikten sonra sisteminiz üzerinde R derleyicisi yok ise hata alacak ve yükleme için yönlendirileceksiniz.
Yükleme gerçekleştikten ve ilgili ayarlamalar yapıldıktan sonra mini bir test verisi ile görselimiz üzerinde test gerçekleştirebiliriz;
İçeri atadığımız baz alınacak değer (Hedef Değer) üzerinde parametreleri çalıştırarak otomatik olarak bir ağaç diagramı oluşturuyor.
Burada budama işlemini doğrudan veri kaynağında ya da rapor üzerinde ki veri filtrelemeleri ile gerçekleştiriyoruz.
Ek olarak;
Power BI üzerinde birçok istatiksel ve analize dayalı algoritmalara yönelik hazır görseller bulunmaktadır.Ek bir kod yazımı gerçekleştirmeden doğrudan görsellere ilgili parametreleri vererek çıktılarınıza kolayca ulaşabilirsiniz.
*** R üzerine küçük bir değinmede bulunmuşken R programlama dilini yeni öğrenmek isteyenler ya da ileri seviyede olan programcılar için R diline ait tavsiyeler ve pratik çalışmalar yer alan açık kaynak notlar yayınlandı.Faydalı olması dileğiyle.
Bu bölümde genel manada Sınıflandırma metoduna ve Karar Ağaçları algoritmasına değinmeye çalıştım.
Gelecek yazımda Karar Destek Vektör Makinesi algoritmasını ele almaya çalışacağım.
İyi günler, iyi çalışmalar…