Big Data Analytics - Pohon Keputusan

Decision Tree adalah algoritma yang digunakan untuk masalah pembelajaran yang diawasi seperti klasifikasi atau regresi. Pohon keputusan atau pohon klasifikasi adalah pohon di mana setiap simpul internal (nonleaf) diberi label dengan fitur masukan. Busur yang berasal dari node yang diberi label dengan fitur diberi label dengan masing-masing nilai yang mungkin dari fitur tersebut. Setiap daun pohon diberi label dengan kelas atau distribusi probabilitas di atas kelas.

Sebuah pohon dapat "dipelajari" dengan memisahkan kumpulan sumber menjadi beberapa subset berdasarkan pengujian nilai atribut. Proses ini diulangi pada setiap subset turunan secara rekursif yang disebutrecursive partitioning. Rekursi selesai ketika subset pada node memiliki semua nilai yang sama dari variabel target, atau ketika pemisahan tidak lagi menambah nilai pada prediksi. Proses induksi pohon keputusan dari atas ke bawah adalah contoh algoritme rakus, dan ini adalah strategi paling umum untuk mempelajari pohon keputusan.

Pohon keputusan yang digunakan dalam penambangan data terdiri dari dua jenis utama -

  • Classification tree - bila responnya adalah variabel nominal, misalnya jika email adalah spam atau bukan.

  • Regression tree - ketika hasil yang diprediksi dapat dianggap sebagai angka nyata (misalnya gaji seorang pekerja).

Pohon keputusan adalah metode sederhana, dan karena itu memiliki beberapa masalah. Salah satu masalah ini adalah varians yang tinggi dalam model yang dihasilkan yang dihasilkan pohon keputusan. Untuk mengatasi masalah ini, metode ansambel pohon keputusan dikembangkan. Ada dua kelompok metode ensemble yang saat ini digunakan secara luas -

  • Bagging decision trees- Pohon-pohon ini digunakan untuk membangun beberapa pohon keputusan dengan mengambil sampel ulang data pelatihan berulang kali dengan penggantian, dan memilih pohon untuk prediksi konsensus. Algoritma ini disebut hutan acak.

  • Boosting decision trees- Peningkatan gradien menggabungkan pelajar yang lemah; dalam hal ini, keputusan pohon menjadi pembelajar tunggal yang kuat, secara berulang. Ini menyesuaikan pohon yang lemah dengan data dan secara berulang terus menyesuaikan pelajar yang lemah untuk memperbaiki kesalahan dari model sebelumnya.

# 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)