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)