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)