1 Pendahuluan

Dalam analisis data dan machine learning, klasifikasi merupakan salah satu metode supervised learning yang digunakan untuk memprediksi kelas atau kategori dari suatu objek berdasarkan karakteristik tertentu.

Contoh permasalahan klasifikasi dalam kehidupan sehari-hari antara lain:

  1. Menentukan apakah sebuah email termasuk spam atau non-spam
  2. Mengklasifikasikan hewan sebagai mamalia atau non-mamalia
  3. Mengidentifikasi jenis bunga berdasarkan ukuran kelopaknya

Pada modul ini, mahasiswa akan mempelajari:

  1. Konsep dasar klasifikasi 2, Teori statistik sederhana di balik klasifikasi
  2. Algoritma Decision Tree
  3. Penerapan klasifikasi menggunakan data Iris
  4. Evaluasi model menggunakan confusion matrix dan akurasi

2 Konsep Dasar Klasifikasi

Klasifikasi adalah metode untuk memprediksi variabel target (Y) yang bersifat kategorikal, berdasarkan satu atau lebih variabel prediktor (X).

  1. Variabel target (Y): kelas yang ingin diprediksi
  2. Variabel prediktor (X): atribut atau ciri yang digunakan untuk melakukan prediksi

Contoh:

Karena target bersifat kategori, maka metode regresi tidak cocok, dan digunakan metode klasifikasi.

3 Pengenalan Decision Tree

Decision Tree (Pohon Keputusan) adalah metode klasifikasi yang bekerja dengan cara membuat struktur pohon keputusan berdasarkan aturan if-then.

Karakteristik Decision Tree:

  1. Setiap node berisi pertanyaan
  2. Setiap cabang menunjukkan jawaban
  3. Setiap daun (leaf) menunjukkan kelas hasil prediksi

Kelebihan Decision Tree:

  1. Mudah dipahami secara visual
  2. Cocok untuk pembelajaran awal
  3. Tidak membutuhkan asumsi statistik yang kompleks

4 Studi Kasus Bidang Teknologi Industri Pertanian

Dalam bidang Teknologi Industri Pertanian, klasifikasi sering digunakan untuk membantu proses pengambilan keputusan berbasis data, misalnya dalam pengendalian mutu hasil pertanian atau proses pascapanen.

Pada studi kasus ini, kita akan melakukan klasifikasi mutu biji kopi berdasarkan karakteristik fisik dan kimia yang diukur di laboratorium.

Tujuan klasifikasi:

  1. Menentukan apakah biji kopi termasuk Mutu Tinggi atau Mutu Rendah
  2. Membantu proses quality control pada industri pengolahan kopi

4.1 Deskripsi data

Dataset yang digunakan merupakan data simulasi yang merepresentasikan kondisi nyata di industri pertanian.

Variabel prediktor (X):

  • kadar_air (%)
  • ukuran_biji (mm)
  • warna_biji (skor 1–5)
  • cacat (jumlah cacat per 100 gram)

Variabel target (Y):

  • mutu (Tinggi, Rendah)

Target bersifat kategorikal, sehingga metode klasifikasi sangat sesuai digunakan.

4.2 Dataset iris

Dataset Iris merupakan dataset klasik yang sering digunakan untuk pembelajaran klasifikasi.

Isi dataset:

  • 150 data bunga Iris
  • 4 variabel numerik
  • 1 variabel target (Species)

Variabel prediktor:

  • Sepal.Length
  • Sepal.Width
  • Petal.Length
  • Petal.Width

Variabel target: Species (setosa, versicolor, virginica)

4.3 Persiapan data

# Memanggil dataset Iris yang sudah tersedia di R
data(iris)


# Melihat struktur data:
# - tipe variabel
# - jumlah observasi
# - memastikan target bertipe factor
str(iris)
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

Output yang Dilihat:

  1. Jumlah observasi: 150
  2. Variabel numerik: 4
  3. Variabel target (Species): factor dengan 3 kelas

Artinya:

  1. Dataset cukup besar untuk latihan klasifikasi
  2. Variabel target sudah berbentuk kategorikal
  3. Data siap digunakan tanpa transformasi tambahan

Dari struktur data terlihat bahwa:

  1. Variabel prediktor bertipe numerik
  2. Variabel target (Species) bertipe factor Ini sudah sesuai untuk analisis klasifikasi.

Interpretasi Dataset berhasil dimuat ke dalam lingkungan kerja R. Hasil pemeriksaan struktur data menunjukkan bahwa dataset terdiri dari 150 observasi dengan empat variabel prediktor bertipe numerik dan satu variabel target bertipe faktor. Hal ini menunjukkan bahwa dataset telah memenuhi syarat untuk dilakukan analisis klasifikasi, karena variabel target bersifat kategorikal dan variabel prediktor dapat digunakan sebagai dasar pembentukan aturan keputusan.

4.4 Pembagian data traini dan testing

Untuk menguji performa model, data dibagi menjadi:

  • Data training: digunakan untuk membangun model
  • Data testing: digunakan untuk menguji model
# Menetapkan seed agar hasil pembagian data dapat direproduksi
set.seed(123)


# Mengambil 70% indeks data secara acak
index <- sample(1:nrow(iris), 0.7*nrow(iris))


# Data training digunakan untuk membangun model
train <- iris[index, ]


# Data testing digunakan untuk menguji model
# (data yang tidak ikut dilatih)
test <- iris[-index, ]

Sebanyak 70% data digunakan sebagai training dan 30% sebagai testing.

Output yang Dilihat

  1. Tidak ada angka spesifik
  2. Objek train dan test terbentuk

Interpretasi

  1. Data dibagi menjadi 70% training dan 30% testing
  2. Model tidak diuji pada data yang sama dengan data pelatihan

Ini mensimulasikan kondisi nyata di industri: model diuji pada data baru yang belum pernah dilihat.

Interpretasi

Data dibagi menjadi dua bagian, yaitu data pelatihan (training) dan data pengujian (testing). Sebanyak 70% data digunakan untuk membangun model, sedangkan 30% data digunakan untuk mengevaluasi kinerja model. Pembagian ini bertujuan untuk menguji kemampuan model dalam mengklasifikasikan data baru yang tidak digunakan pada proses pelatihan, sehingga hasil evaluasi lebih mencerminkan kondisi nyata.

4.5 Membangun Model Decision Tree

# Memanggil package rpart untuk membuat decision tree
library(rpart)


# Membangun model decision tree
# Species ~ . artinya Species diprediksi oleh semua variabel lain
# data = train menunjukkan data yang digunakan adalah data training
# method = "class" menandakan bahwa ini adalah klasifikasi
model_tree <- rpart(Species ~ ., data = train, method = "class")


# Menampilkan ringkasan model decision tree
model_tree
## n= 105 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 105 68 virginica (0.34285714 0.30476190 0.35238095)  
##   2) Petal.Length< 2.45 36  0 setosa (1.00000000 0.00000000 0.00000000) *
##   3) Petal.Length>=2.45 69 32 virginica (0.00000000 0.46376812 0.53623188)  
##     6) Petal.Width< 1.75 35  4 versicolor (0.00000000 0.88571429 0.11428571) *
##     7) Petal.Width>=1.75 34  1 virginica (0.00000000 0.02941176 0.97058824) *

Model ini mempelajari pola hubungan antara atribut bunga dan jenis spesiesnya.

Output yang Dilihat

  1. Daftar node
  2. Variabel pemisah
  3. Nilai kompleksitas

Interpretasi

  1. Model berhasil mempelajari pola hubungan antara atribut dan kelas
  2. Variabel yang muncul di awal pohon adalah variabel paling berpengaruh
  3. Struktur pohon menunjukkan aturan keputusan

Model Decision Tree berhasil dibangun menggunakan data pelatihan. Model ini mempelajari hubungan antara variabel prediktor dan variabel target melalui proses pemilihan variabel pemisah terbaik pada setiap node. Struktur model yang terbentuk menunjukkan bahwa algoritma telah mengidentifikasi variabel-variabel yang paling berpengaruh dalam proses klasifikasi dan menyusunnya dalam bentuk aturan keputusan yang hierarkis.

Decision Tree menyederhanakan data kompleks menjadi aturan yang mudah dipahami.

4.6 Visualisasi Pohon Keputusan

Visualisasi pohon keputusan menampilkan struktur model dalam bentuk diagram pohon. Setiap node merepresentasikan kondisi pemisahan berdasarkan nilai variabel tertentu, sedangkan setiap daun (leaf) menunjukkan kelas hasil klasifikasi. Struktur ini memudahkan interpretasi model karena proses pengambilan keputusan dapat ditelusuri secara logis dari node awal hingga node akhir.

Install package rpart.plot (SATU KALI SAJA)

#install.packages("rpart.plot")
# Memanggil package untuk visualisasi pohon keputusan
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.4.3
# Menampilkan struktur decision tree dalam bentuk grafik
# Setiap node menunjukkan aturan pemisahan data
rpart.plot(model_tree)

Gambar decision tree menunjukkan proses klasifikasi jenis bunga Iris berdasarkan Petal.Length dan Petal.Width. Model membagi data secara bertahap hingga diperoleh keputusan akhir pada setiap daun (leaf).

Visualisasi ini membantu memahami bagaimana model mengambil keputusan berdasarkan aturan tertentu.

Output yang Dilihat

  1. Diagram pohon
  2. Pertanyaan di setiap node
  3. Kelas dominan di setiap leaf

Interpretasi Visual 1. Jalur keputusan dari atas ke bawah 2. Aturan seperti:

  • Jika Petal.Length < nilai tertentu → kelas A

Setiap jalur dari akar ke daun = satu aturan klasifikasi.

Visualisasi pohon keputusan menampilkan struktur model dalam bentuk diagram pohon. Setiap node merepresentasikan kondisi pemisahan berdasarkan nilai variabel tertentu, sedangkan setiap daun (leaf) menunjukkan kelas hasil klasifikasi. Struktur ini memudahkan interpretasi model karena proses pengambilan keputusan dapat ditelusuri secara logis dari node awal hingga node akhir.

Berdasarkan hasil visualisasi decision tree, variabel Petal.Length dan Petal.Width merupakan faktor utama dalam proses klasifikasi bunga Iris. Model mampu memisahkan kelas Setosa secara sempurna, serta membedakan kelas Versicolor dan Virginica dengan tingkat ketepatan yang tinggi. Aturan keputusan yang dihasilkan bersifat sederhana dan mudah diinterpretasikan.

Dari pohon keputusan, dapat dirangkum aturan berikut:

  1. Jika Petal.Length < 2.5 → Setosa
  2. Jika Petal.Length ≥ 2.5 dan Petal.Width < 1.8 → Versicolor
  3. Jika Petal.Length ≥ 2.5 dan Petal.Width ≥ 1.8 → Virginica

Penjelasan detail visual:

  1. Node Akar (Root Node)

Informasi pada Node

Proporsi kelas:

  • Setosa: 34%
  • Versicolor: 30%
  • Virginica: 35%
  • Total data: 100%

Interpretasi: Node akar merepresentasikan seluruh data pelatihan. Distribusi kelas relatif seimbang, dengan kelas virginica memiliki proporsi terbesar. Pada tahap ini, model belum melakukan pemisahan dan masih mengandung ketidakpastian yang tinggi.

Makna penting

Model perlu melakukan pemisahan karena data masih bercampur antar kelas.

  1. Pemisahan Pertama: Petal.Length < 2.5

Pemisahan pertama dilakukan berdasarkan panjang kelopak bunga (Petal.Length).

Interpretasi Statistik

Variabel Petal.Length dipilih karena mampu mengurangi ketidakpastian paling besar dibandingkan variabel lainnya. Artinya, variabel ini merupakan faktor paling berpengaruh dalam membedakan kelas bunga.

  1. Cabang Kiri: Petal.Length < 2.5 (Yes)

Hasil

  • Kelas: Setosa
  • Probabilitas:
  • Setosa: 100%
  • Versicolor: 0%
  • Virginica: 0%
  • Proporsi data: 34%

Interpretasi Seluruh data dengan panjang petal kurang dari 2.5 diklasifikasikan sebagai setosa tanpa kesalahan. Hal ini menunjukkan bahwa kelas setosa memiliki karakteristik petal yang sangat berbeda dan mudah dipisahkan dari kelas lainnya.

Makna keputusan

Jika panjang petal < 2.5, maka bunga pasti termasuk kelas setosa.

4️⃣ Cabang Kanan: Petal.Length ≥ 2.5 (No)

Informasi Node

  • Proporsi kelas:
  • Versicolor: 46%
  • Virginica: 54%
  • Proporsi data: 66%

Interpretasi

Setelah setosa dipisahkan, data yang tersisa masih terdiri dari dua kelas (versicolor dan virginica) yang cukup mirip, sehingga diperlukan pemisahan lanjutan.

  1. Pemisahan Kedua: Petal.Width < 1.8

Pada cabang ini, model menggunakan lebar kelopak (Petal.Width) sebagai variabel pemisah berikutnya.

Interpretasi Statistik

Variabel Petal.Width dipilih karena paling efektif membedakan antara versicolor dan virginica pada subset data ini.

  1. Cabang Kanan–Kiri: Petal.Width < 1.8

Hasil

  • Kelas dominan: Versicolor
  • Probabilitas:
  • Versicolor: 89%
  • Virginica: 11%
  • Proporsi data: 33%

Interpretasi Sebagian besar bunga dengan Petal.Length ≥ 2.5 dan Petal.Width < 1.8 diklasifikasikan sebagai versicolor. Masih terdapat sedikit kemungkinan kesalahan karena karakteristik versicolor dan virginica cukup berdekatan.

Makna keputusan

Jika petal panjang dan lebar relatif kecil, bunga cenderung versicolor.

  1. Cabang Kanan–Kanan: Petal.Width ≥ 1.8

Hasil

  • Kelas dominan: Virginica
  • Probabilitas:
  • Virginica: 97%
  • Versicolor: 3%
  • Proporsi data: 32%

Interpretasi Bunga dengan petal panjang dan lebar besar hampir seluruhnya termasuk virginica. Tingkat ketepatan klasifikasi pada node ini sangat tinggi.

Makna keputusan

Jika petal panjang dan lebar besar, bunga hampir pasti virginica.

4.6.1 Prediksi Data Testing

# Melakukan prediksi kelas pada data testing
# type = "class" berarti hasil prediksi berupa kelas, bukan probabilitas
prediksi <- predict(model_tree, test, type = "class")


# Menampilkan hasil prediksi
prediksi
##          1          2          3          5         11         18         19 
##     setosa     setosa     setosa     setosa     setosa     setosa     setosa 
##         28         29         33         36         45         48         49 
##     setosa     setosa     setosa     setosa     setosa     setosa     setosa 
##         55         56         57         58         59         61         62 
## versicolor versicolor versicolor versicolor versicolor versicolor versicolor 
##         65         66         68         70         77         83         84 
## versicolor versicolor versicolor versicolor versicolor versicolor versicolor 
##         94         95         98        100        101        104        105 
## versicolor versicolor versicolor versicolor  virginica  virginica  virginica 
##        111        113        116        125        131        133        135 
##  virginica  virginica  virginica  virginica  virginica  virginica versicolor 
##        140        141        145 
##  virginica  virginica  virginica 
## Levels: setosa versicolor virginica

Hasil prediksi ini akan dibandingkan dengan kelas sebenarnya.

Output yang Dilihat: Daftar kelas hasil prediksi

Interpretasi

  1. Setiap baris hasil prediksi mewakili satu data uji
  2. Model menerapkan aturan pohon pada data baru

Model Decision Tree digunakan untuk melakukan prediksi terhadap data pengujian. Setiap observasi pada data testing diklasifikasikan berdasarkan aturan keputusan yang telah dibentuk pada tahap pelatihan. Hasil prediksi berupa kelas kategorikal yang menunjukkan kelas yang diperkirakan oleh model untuk setiap data uji.

Model tidak menghafal data, tetapi menggeneralisasi aturan.

4.6.2 Evaluasi Model

Confusion Matrix

Confusion matrix digunakan untuk melihat performa klasifikasi secara detail.

# Membuat confusion matrix
# Baris: kelas aktual
# Kolom: kelas hasil prediksi
conf_matrix <- table(Actual = test$Species, Predicted = prediksi)


# Menampilkan confusion matrix
conf_matrix
##             Predicted
## Actual       setosa versicolor virginica
##   setosa         14          0         0
##   versicolor      0         18         0
##   virginica       0          1        12

Penjelasan:

  1. Baris menunjukkan kelas sebenarnya
  2. Kolom menunjukkan kelas hasil prediksi
  3. Nilai diagonal menunjukkan prediksi yang benar

Output yang Dilihat: Tabel perbandingan aktual vs prediksi

Interpretasi Detail

  1. Diagonal → prediksi benar
  2. Non-diagonal → kesalahan klasifikasi
  3. Bisa diketahui:
  • Kelas mana yang paling sering salah
  • Kelas mana yang paling mudah dikenali

Confusion matrix digunakan untuk membandingkan hasil prediksi model dengan kelas sebenarnya. Nilai pada diagonal utama menunjukkan jumlah data yang berhasil diklasifikasikan dengan benar, sedangkan nilai di luar diagonal menunjukkan kesalahan klasifikasi. Matriks ini memberikan gambaran rinci mengenai kinerja model pada setiap kelas, termasuk kelas yang paling sering mengalami kesalahan prediksi.

Confusion matrix memberi gambaran kualitas model secara detail, bukan hanya angka tunggal.

4.6.3 Akurasi Model

Akurasi menunjukkan proporsi prediksi yang benar.

# Menghitung akurasi model
# diag(conf_matrix) mengambil nilai prediksi yang benar
# sum(conf_matrix) adalah total seluruh data
akurasi <- sum(diag(conf_matrix)) / sum(conf_matrix)


# Menampilkan nilai akurasi
akurasi
## [1] 0.9777778
(diag(conf_matrix)) / sum(conf_matrix)
##     setosa versicolor  virginica 
##  0.3111111  0.4000000  0.2666667
akurasi
## [1] 0.9777778

Nilai akurasi mendekati 1 menunjukkan model bekerja dengan baik.

Output yang Dilihat: Angka antara 0 dan 1

Interpretasi

  1. Contoh: 0.95 berarti 95% data diklasifikasikan dengan benar
  2. Akurasi tinggi → model bekerja baik pada data uji

Akurasi model dihitung sebagai proporsi jumlah prediksi yang benar terhadap total data pengujian. Nilai akurasi yang tinggi menunjukkan bahwa model memiliki kemampuan klasifikasi yang baik secara keseluruhan. Namun demikian, akurasi perlu dianalisis bersama confusion matrix agar evaluasi model lebih komprehensif, terutama ketika distribusi kelas tidak seimbang.

Catatan penting: Akurasi saja tidak cukup jika data tidak seimbang.

4.7 Interpretasi Hasil

Berdasarkan hasil evaluasi:

  1. Decision Tree mampu mengklasifikasikan data Iris dengan baik
  2. Kesalahan prediksi relatif sedikit
  3. Model mudah dipahami dan diinterpretasikan

Namun, Decision Tree juga memiliki kelemahan, seperti mudah mengalami overfitting jika pohon terlalu kompleks.

4.8 Kesimpulan

Pada modul ini, mahasiswa telah mempelajari:

  1. Konsep dasar klasifikasi
  2. Cara kerja Decision Tree
  3. Implementasi klasifikasi menggunakan R
  4. Evaluasi model menggunakan confusion matrix dan akurasi

Decision Tree merupakan metode yang sangat cocok untuk tahap awal pembelajaran klasifikasi karena mudah dipahami secara konseptual dan visual.