Makine Öğrenmesi Dersleri 5a: Random Forest (Sınıflandırma)

Hakkı Kaan Simsek
Veri Bilimi Türkiye
4 min readMar 24, 2018

Rassal orman (Random Forest), hiper parametre kestirimi yapılmadan da iyi sonuçlar vermesi hem regresyon hem de sınıflandırma problemlerine uygulanabilir olmasından dolayı popüler makine öğrenmesi modellerinden biri. Rassal ormanı anlamak için önce bu modelin temel blogu olan karar ağaçlarını anlamak gerekiyor. 3. dersi bu konuya ayırmıştık başarılı bir karar ağacı günlük hayatta bilgi kazancını arttıracak sorular soran ve isabetli tahminler yapan insanlara benzetilebilir.

Fakat geleneksel yöntemlerden biri olan karar ağaçlarının en büyük problemlerinden biri aşırı öğrenme-veriyi ezberlemedir (overfitting). Rassal orman modeli bu problemi çözmek için hem veri setinden hem de öznitelik setinden rassal olarak 10'larca 100'lerce farklı alt-setler seçiyor ve bunları eğitiyor. Bu yöntemle 100'lerce karar ağacı oluşturuluyor ve her bir karar ağacı bireysel olarak tahminde bulunuyor. Günün sonunda problemimiz regresyonsa karar ağaçlarının tahminlerinin ortalamasını problemimiz sınıflandırmaysa tahminler arasında en çok oy alanı seçiyoruz.

Şimdi bütün bunları basit bir örnekle açıklamaya çalışalım: Örneğin bu akşam güzel bir film izlemek istiyorsunuz ve kafanız karışık. Bir arkadaşınızı ararsanız ve o size tercih ettiğiniz film türü, süre, yıl, oyuncu-yönetmen, hollywood-alternatif vs. soru setinden çeşitli sorularla daha önce izlediğiniz filmlere (training set) göre bir tahminde bulunursa bu karar ağacı olur. Eğer 20 arkadaşınız bu soru setinden farklı sorular seçip verdiğiniz cevaplara göre tavsiyede bulunursa ve siz en çok tavsiye edilen filmi seçerseniz bu rassal orman olur.

Rassal orman modelinde farklı veri setleri üzerinde eğitim gerçekleştiği için varyans, diğer bir deyişle karar ağaçlarının en büyük problemlerinden olan overfitting azalır. Ayrıca bootstrap yöntemiyle oluşturduğumuz alt-veri kümelerinde outlier bulunma şansını da düşürmüş oluruz.

Random forest modelinin diğer bir özelliği bize özniteliklerin ne kadar önemli olduğunu vermesi. (Bir özniteliğin önemli olması demek o özniteliğin bağımlı değişkendeki varyansın açıklanmasına ne kadar katkı yaptığıyla alakalı.) Random forest algoritmasına x sayıda öznitelik verip en faydalı y tanesini seçmesini isteyebiliriz ve istersek bu bilgiyi istediğimiz başka bir modelde kullanabiliriz.

İlk derslerde olduğu gibi bu dersi takip etmek için de bilgisayarınıza Python kurmanıza veya veri setini indirmenize gerek yok. İzlemeniz gereken adımlar sırasıyla şöyle:

  • Google hesabınızı açın.
  • https://colab.research.google.com/ adresine gidin.
  • NEW PYTHON 3 NOTEBOOK’a tıklayın.
  • Oradaki satıra aşağıdaki kodu yapıştırın ve play tuşuna basın.

İlk derste olduğu gibi sütunları isimlendirip veri tiplerini ve eksik veri olup olmadığını kontrol ettik. Modelimizdeki hedef değişken ‘salary’ olduğu için onun dağılımına bakıyoruz ve veri setinin geri kalanından ayırıyoruz.

Bu çalışmada işimize yaramasa da yanlış bir veri tipi olduğunda nasıl düzeltmemiz gerektiğine bir örnek yaptım. Capital-gain değişkeninin tipini ‘integer’ dan ‘float’ a çevirdim.

Şimdi de tipi object olan verilere hızlıca bir göz atalım.

Gördüğünüz gibi bazı veriler eksik olarak gözükmese de ‘?’ soru işareti ile doldurulmuş.

Yapmamız gerekenler sırasıyla şöyle:

  • Veri tipi ‘object’ olan sütunlar seçilir.
  • Bu sütunlar yine o sütunun mode() değeriyle doldurulur.

Makine öğrenmesi modelleri kategorik değişkenleri algılayamadığı için ‘object’ tipindeki değişkenleri one-hot-encoding yöntemiyle 0 ve 1'lere ayırıyoruz.

Modelimizi kurmaya hazırız şimdi standart modelleme süreçlerini uygulayacağız.

  1. Veriyi eğitim ve test alt-veri gruplarına ayırma.
  2. Karar ağacı modeli oluşturma.
  3. Modeli eğitim verisine ‘fit’ etme.

4. Görmediğimiz test verisine modele verip tahminde bulunma.

5a. Modelin başarı metrikleri: Confusion matrix

5b. Modelin başarı metrikleri: Precision, recall, f1-score

6. Karar ağaçlarından birini görselleştirme.

7. Modelin özniteliklerinin önem sıralamasını analiz etme.

Bu çalışma standart bir veri bilimi projesinin en basit hali olarak düşünülebilir.

Veri tiplerini kontrol etme/düzeltme.

  • Açıklayıcı veri analizi ve görselleştirme.
  • Eksik verileri tahmin etme/veri atama.
  • Kategori tipindeki verileri one-hot encoding ile nümerik formata çevirme.
  • Veri setini eğitim ve test veri-setlerine ayırma.
  • Modeli eğitme ve test verisi üzerinde tahmin yapma.
  • Sınıflandırma başarı metriklerine bakma.
  • Karar ağacını görselleştirme.
  • Modelin yaptığı öznitelik sıralamasını görselleştirme.

Çalışmadaki veri setine ve kodlara şuradan ulaşabilirsiniz.

Sorunuz olursa bana Linkedin veya Twitter hesaplarından yazabilirsiniz.

--

--