Büyük Veri Analitiği - Karar Ağaçları

Karar Ağacı, sınıflandırma veya regresyon gibi denetimli öğrenme problemleri için kullanılan bir algoritmadır. Karar ağacı veya sınıflandırma ağacı, her bir dahili (yaprak olmayan) düğümün bir giriş özelliği ile etiketlendiği bir ağaçtır. Bir özellik ile etiketlenmiş bir düğümden gelen yaylar, özelliğin olası değerlerinin her biri ile etiketlenir. Ağacın her yaprağı bir sınıf veya sınıflar üzerinde olasılık dağılımı ile etiketlenir.

Bir ağaç, kaynak kümesini bir öznitelik değeri testine göre alt kümelere bölerek "öğrenilebilir". Bu süreç, türetilmiş her alt kümede adı verilen özyinelemeli bir şekilde tekrarlanır.recursive partitioning. Yineleme, bir düğümdeki alt küme hedef değişkenin tüm değerine sahip olduğunda veya bölme artık tahminlere değer katmadığında tamamlanır. Karar ağaçlarının bu yukarıdan aşağıya indüksiyon süreci, açgözlü bir algoritma örneğidir ve karar ağaçlarını öğrenmek için en yaygın stratejidir.

Veri madenciliğinde kullanılan karar ağaçları iki ana türdendir -

  • Classification tree - yanıt nominal bir değişken olduğunda, örneğin bir e-postanın istenmeyen posta olup olmadığı.

  • Regression tree - tahmin edilen sonucun gerçek bir sayı olarak kabul edilebildiği durumlarda (örneğin bir işçinin maaşı).

Karar ağaçları basit bir yöntemdir ve bu nedenle bazı sorunları vardır. Bu sorunlardan biri, karar ağaçlarının ürettiği sonuç modellerinde yüksek varyans olmasıdır. Bu sorunu hafifletmek için karar ağaçlarının toplu yöntemleri geliştirilmiştir. Şu anda yaygın olarak kullanılan iki grup toplu yöntem vardır -

  • Bagging decision trees- Bu ağaçlar, eğitim verilerini değiştirerek tekrar tekrar örnekleyerek ve ağaçları bir fikir birliği tahmini için oylayarak çoklu karar ağaçları oluşturmak için kullanılır. Bu algoritmaya rastgele orman adı verilmiştir.

  • Boosting decision trees- Gradyan artırma, zayıf öğrencileri birleştirir; bu durumda, karar ağaçları yinelemeli bir şekilde tek bir güçlü öğrenciye dönüşür. Verilere zayıf bir ağaç sığdırır ve önceki modelin hatasını düzeltmek için zayıf öğrenenleri yinelemeli olarak uydurmaya devam eder.

# Install the party package
# install.packages('party') 
library(party) 
library(ggplot2)  

head(diamonds) 
# We will predict the cut of diamonds using the features available in the 
diamonds dataset. 
ct = ctree(cut ~ ., data = diamonds) 

# plot(ct, main="Conditional Inference Tree") 
# Example output 
# Response:  cut  
# Inputs:  carat, color, clarity, depth, table, price, x, y, z  

# Number of observations:  53940  
#  
# 1) table <= 57; criterion = 1, statistic = 10131.878 
#   2) depth <= 63; criterion = 1, statistic = 8377.279 
#     3) table <= 56.4; criterion = 1, statistic = 226.423 
#       4) z <= 2.64; criterion = 1, statistic = 70.393 
#         5) clarity <= VS1; criterion = 0.989, statistic = 10.48 
#           6) color <= E; criterion = 0.997, statistic = 12.829 
#             7)*  weights = 82  
#           6) color > E  

#Table of prediction errors 
table(predict(ct), diamonds$cut) 
#            Fair  Good Very Good Premium Ideal 
# Fair       1388   171        17       0    14 
# Good        102  2912       499      26    27 
# Very Good    54   998      3334     249   355 
# Premium      44   711      5054   11915  1167 
# Ideal        22   114      3178    1601 19988 
# Estimated class probabilities 
probs = predict(ct, newdata = diamonds, type = "prob") 
probs = do.call(rbind, probs) 
head(probs)