Makine Öğrenmesi Dersleri 5b: Random Forest (Regresyon)

Hakkı Kaan Simsek
Veri Bilimi Türkiye
4 min readSep 1, 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 kısaca başarılı bir karar ağacı günlük hayatta bilgi kazancını arttıracak doğru 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 sayıda öznitelik verip en faydalı x 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.

Modelimizdeki hedef değişken ‘median_house_value’ olduğu için onun dağılımına bakıyoruz ve veri setinin geri kalanından ayırıyoruz.

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. Ayrıca ‘total_bedroom’ değişkenindeki eksik değerleri doldurmamız gerekiyor.

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

  • ocean_proximity değişkeni pd.get_dummies() fonksiyonuyla zenginleştirilir.
  • Bu değişken veri setinden atılır.
  • total_bedroom değişkeni yine o sütunun median() değeriyle doldurulur.

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

  1. Veriyi eğitim ve test alt-veri setlerine 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.

5. Gerçek değerle tahmin arasındaki benzerliğe göre mean absolute error, mean squared error ve root mean squared error hesaplama.

6. Rastgele ormandan bir karar ağacı çekip görselleştirme.

7. Sınıflandırma modeli kurulurken yapılan öznitelik önem sıralamasını görselleştirme.

Burada derinliği 8 olan yeni bir model kurup o modelin başarı oranına bakıyoruz ve öznitelik sıralamasını görselleştiriyoruz.

Başarı oranımız ciddi bir şekilde arttı. 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.
  • Yeni modelin başarı metriklerine bakma ve ö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.

--

--