Email             :
Instagram     : https://www.instagram.com/naaufald
RPubs            : https://rpubs.com/naaufaldd/
Address         : ARA Center, Matana University Tower
                         Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.



1 Pendahuluan

Klasifikasi adalah proses pengelompokan objek atau data ke dalam kategori atau kelas berdasarkan ciri-ciri atau atribut tertentu. Metode klasifikasi merupakan algoritma atau teknik yang digunakan untuk melakukan proses klasifikasi tersebut.

Keterangan umum terkait metode Klasifikasi adalah sebagai berikut:

  • K-Nearest Neighbors (K-NN): Metode ini mengklasifikasikan objek berdasarkan mayoritas kelas tetangga terdekatnya. Jika suatu objek memiliki sebagian besar tetangga dari suatu kelas tertentu, maka objek tersebut diklasifikasikan ke dalam kelas tersebut.
  • Decision Trees: Decision trees adalah model prediktif yang menggunakan struktur pohon keputusan untuk melakukan klasifikasi. Pada setiap simpul pohon, keputusan dibuat berdasarkan nilai dari suatu atribut.
  • Naive Bayes: Metode klasifikasi ini berdasarkan teorema Bayes dengan asumsi independensi antara setiap pasangan atribut. Meskipun sederhana, Naive Bayes sering kali efektif dan cepat, terutama untuk dataset dengan jumlah atribut yang besar.
  • Support Vector Machines (SVM): SVM mencari hyperplane terbaik yang memisahkan dua kelas dalam ruang atribut. Tujuan utamanya adalah untuk mencari hyperplane yang memiliki margin terbesar antara dua kelas.
  • Random Forest: Random Forest adalah teknik ensemble learning yang menggabungkan banyak decision trees ke dalam satu model. Setiap decision tree dibangun secara independen, dan hasil klasifikasi akhir diperoleh dengan mengambil mayoritas suara dari semua pohon.
  • Neural Networks: Jaringan saraf tiruan (Neural Networks) adalah model komputasi yang terdiri dari neuron-neuron yang saling terhubung. Dalam konteks klasifikasi, neural networks dapat digunakan sebagai metode yang sangat kuat untuk mempelajari pola-pola yang kompleks dari data.
  • Logistic Regression: Logistic regression adalah metode statistik yang digunakan untuk klasifikasi biner, di mana model berusaha memprediksi probabilitas masuk ke dalam salah satu dari dua kelas.
  • Gradient Boosting Machines (GBM): Menggabungkan beberapa model lemah (misalnya, decision trees) secara bertahap untuk meningkatkan kinerja.
  • AdaBoost: Membuat model yang berurutan, di mana setiap model mencoba untuk memperbaiki kesalahan yang dilakukan oleh model sebelumnyaGradient Boosting Machines (GBM): Menggabungkan beberapa model lemah (misalnya, decision trees) secara bertahap untuk meningkatkan kinerja.
  • Ensemble Methods: Ensemble methods menggabungkan prediksi dari beberapa model klasifikasi untuk meningkatkan kinerja prediksi. Contoh lain dari ensemble methods adalah Boosting dan Bagging.

Setiap metode klasifikasi memiliki kelebihan dan kelemahan tertentu tergantung pada sifat data yang dihadapi dan tujuan dari klasifikasi tersebut. Pemilihan metode klasifikasi yang tepat memerlukan pemahaman yang baik tentang data yang digunakan serta eksperimen untuk menentukan metode yang paling cocok untuk kasus tertentu.

Catatan: Matakuliah Pengantar Sains Data ini, fokus membahas K-Nearest Neighbors (K-NN) dan Decision Trees Saja.

2 K-Nearest Neighbors (K-NN)

K-Nearest Neighbors (K-NN) adalah salah satu metode klasifikasi yang sederhana dan intuitif. Metode ini beroperasi dengan prinsip bahwa objek yang memiliki atribut serupa cenderung berada dalam kelas yang sama.

2.1 Proses Kerja KNN

K-NN melakukan klasifikasi dengan mencari sejumlah K tetangga terdekat dari data yang akan diprediksi dan menentukan mayoritas kelas dari tetangga tersebut.

Prosesnya dapat dijelaskan sebagai berikut:

  1. Menentukan titik awal berdasarkan jumlah klasifikasi yang ada.
  2. Mengukur jarak: K-NN mengukur jarak antara data yang akan diprediksi dengan semua data latih.
  3. Memilih K tetangga terdekat: K-NN memilih K tetangga terdekat berdasarkan jarak yang diukur.
  4. Menentukan mayoritas kelas: K-NN menentukan mayoritas kelas dari K tetangga terdekat dan mengklasifikasikan data yang akan diprediksi ke dalam kelas tersebut.

2.2 Penggunaan KNN

Berikut adalah contoh penggunaan K-NN dalam R:

library(class)      # untuk model Klasifikasi

# Contoh data
data <- data.frame(x1 = c(1, 2, 3, 4, 5), x2 = c(2, 3, 4, 5, 6), class = c(0, 0, 1, 1, 1))

# Training data
train_data <- data[, -3]

# Target class
target_class <- data[, 3]

# Prediksi menggunakan K-NN dengan K = 3
knn_pred <- knn(train_data, train_data, target_class, k = 3)

# Print hasil prediksi
print(knn_pred)
## [1] 0 0 1 1 1
## Levels: 0 1

2.3 Evaluasi Model

Evaluasi model klasifikasi adalah langkah penting dalam pengembangan model untuk memastikan kinerja yang baik dalam memprediksi kelas dari data baru. Dalam evaluasi model klasifikasi, terdapat beberapa metrik evaluasi yang umum digunakan adalah dengan Matriks kebingungan menampilkan jumlah prediksi yang benar dan yang salah untuk setiap kelas.

  1. Akurasi (Accuracy):
    • Akurasi mengukur seberapa sering model memberikan prediksi yang benar dari total prediksi yang dilakukan.
    • Formula: Akurasi = (TP + TN) / (TP + TN + FP + FN)
  2. Presisi (Precision):
    • Presisi mengukur seberapa sering prediksi positif dari model adalah benar.
    • Formula: Presisi = TP / (TP + FP)
  3. Recall (Sensitivity atau True Positive Rate):
    • Recall mengukur seberapa sering model berhasil mendeteksi kelas positif.
    • Formula: Recall = TP / (TP + FN)
  4. F1-Score:
    • F1-score adalah rata-rata harmonik dari presisi dan recall. Ini memberikan keseimbangan antara kedua metrik ini.
    • Formula: F1-score = 2 * (Presisi * Recall) / (Presisi + Recall)

Keterangan:

  • TP: True Positives
  • TN: True Negatives
  • FP: False Positives
  • FN: False Negatives
library(caret)      # Evaluasi Model

# Menghitung akurasi
accuracy <- sum(knn_pred == target_class) / length(target_class)

# Menghitung presisi
precision <- sum(knn_pred == 1 & target_class == 1) / sum(knn_pred == 1)
precision
## [1] 1
# Menghitung recall
recall <- sum(knn_pred == 1 & target_class == 1) / sum(target_class == 1)

# Menghitung F1-score
f1_score <- 2 * (precision * recall) / (precision + recall)

# Menampilkan hasil evaluasi
print(paste("Akurasi:", accuracy))
## [1] "Akurasi: 1"
print(paste("Presisi:", precision))
## [1] "Presisi: 1"
print(paste("Recall:", recall))
## [1] "Recall: 1"
print(paste("F1-score:", f1_score))
## [1] "F1-score: 1"

Berikut ini adalah cara lain untuk melakukan evaluasi model dengan R.

# Matriks kebingungan
confusion_matrix <- confusionMatrix(knn_pred, as.factor(target_class))

# Akurasi
accuracy <- confusion_matrix$overall['Accuracy']

# Presisi
precision <- confusion_matrix$byClass['Pos Pred Value']

# Recall
recall <- confusion_matrix$byClass['Sensitivity']

# F1-Score
f1_score <- confusion_matrix$byClass['F1']

# Menampilkan hasil evaluasi
print(paste("Akurasi:", accuracy))
## [1] "Akurasi: 1"
print(paste("Presisi:", precision))
## [1] "Presisi: 1"
print(paste("Recall:", recall))
## [1] "Recall: 1"
print(paste("F1-Score:", f1_score))
## [1] "F1-Score: 1"

2.4 Latihan 1

Gunakan dataset “Iris” yang tersedia dalam paket datasets di R. Dataset ini berisi informasi tentang atribut-atribut bunga Iris (panjang dan lebar sepal dan petal) serta label kelas (jenis spesies bunga Iris). Lakukan proses klasifikasi dengan menggunakan KNN!

# Memuat library yang diperlukan
library(datasets)
library(class)

# Memuat dataset Iris
data(iris)

set.seed(123)  # Untuk reproducibility
train_index <- sample(1:nrow(iris), 0.7 * nrow(iris))
train_data <- iris[train_index, ]
test_data <- iris[-train_index, ]

# Klasifikasi menggunakan KNN
k <- 3  # Jumlah tetangga terdekat yang akan digunakan
predicted_species <- knn(train_data[, 1:4], test_data[, 1:4], train_data$Species, k)

# Evaluasi akurasi
accuracy <- sum(predicted_species == test_data$Species) / nrow(test_data) * 100
cat("Akurasi Klasifikasi:", accuracy, "%\n")
## Akurasi Klasifikasi: 97.77778 %

3 Decision Trees

Decision Trees (Pohon Keputusan) adalah model pembelajaran mesin yang sangat populer untuk tugas klasifikasi dan regresi. Mereka menghasilkan model yang mudah dipahami dan mudah diinterpretasikan, mirip dengan logika manusia.

3.1 Proses Kerja Decision Trees

Decision Trees (Pohon Keputusan) adalah algoritma pembelajaran mesin yang menggunakan struktur pohon berhierarki untuk melakukan prediksi. Di bawah ini adalah langkah-langkah umum tentang cara kerja algoritma Decision Trees:

  1. Pemilihan Fitur Algoritma Decision Trees memilih fitur mana yang akan digunakan untuk membagi data menjadi subgrup yang lebih kecil. Pemilihan fitur ini dilakukan berdasarkan kriteria tertentu seperti Gini Impurity atau Information Gain.

  2. Pembagian Data Setelah fitur dipilih, algoritma membagi data menjadi dua atau lebih subgrup berdasarkan nilai fitur yang dipilih. Setiap subgrup akan mewakili cabang-cabang dari pohon keputusan.

  3. Pengulangan Proses pembagian data di atas diulangi pada setiap cabang pohon secara rekursif hingga satu atau lebih kondisi berhenti terpenuhi, seperti mencapai jumlah data minimum dalam satu cabang atau kedalaman maksimum pohon.

  4. Penentuan Label Setelah pembagian data selesai, algoritma menentukan label (kelas atau nilai) untuk setiap daun pohon berdasarkan mayoritas kelas atau nilai dalam setiap subgrup.

  5. Pruning (Pemangkasan) Beberapa algoritma Decision Trees dapat melakukan pruning setelah pembangunan pohon untuk mencegah overfitting, yaitu dengan menghapus cabang-cabang yang tidak signifikan.

Berikut adalah beberapa konsep penting yang digunakan dalam algoritma Decision Trees:

  • Gini Impurity: Metrik yang mengukur seberapa seragam sebuah himpunan sampel dari kelas tertentu.
  • Information Gain: Metrik yang mengukur penurunan ketidakpastian setelah pemisahan himpunan sampel.
  • Entropy: Konsep dari teori informasi yang digunakan untuk menghitung Information Gain.

3.2 Penggunaan Decision Trees

Kita akan menggunakan dataset “Iris” yang tersedia dalam paket datasets di R. Dataset ini berisi informasi tentang atribut-atribut bunga Iris (panjang dan lebar sepal dan petal) serta label kelas (jenis spesies bunga Iris).

3.2.1 Persiapan Data

Pertama-tama, kita perlu memuat dataset dan mempersiapkan data:

# Load dataset
data(iris)

# Lihat struktur dataset
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 ...

3.2.2 Pelatihan Model

Selanjutnya, kita melatih model klasifikasi menggunakan algoritma Decision Trees:

# Pisahkan fitur dan target
X <- iris[, 1:4]
y <- iris[, 5]

# Pelatihan model Decision Trees
library(rpart)
tree_model <- rpart(y ~ ., data = X, method = "class")
tree_model
## n= 150 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 150 100 setosa (0.33333333 0.33333333 0.33333333)  
##   2) Petal.Length< 2.45 50   0 setosa (1.00000000 0.00000000 0.00000000) *
##   3) Petal.Length>=2.45 100  50 versicolor (0.00000000 0.50000000 0.50000000)  
##     6) Petal.Width< 1.75 54   5 versicolor (0.00000000 0.90740741 0.09259259) *
##     7) Petal.Width>=1.75 46   1 virginica (0.00000000 0.02173913 0.97826087) *

3.2.3 Evaluasi Model

Setelah melatih model, kita dapat mengevaluasi kinerjanya dengan menggunakan dataset yang sama:

library(caret)
# Prediksi kelas
prediksi <- predict(tree_model, X, type = "class")

# Hitung akurasi
akurasi <- sum(prediksi == y) / length(y)
print(paste("Akurasi model Decision Trees:", akurasi)) 
## [1] "Akurasi model Decision Trees: 0.96"
# Menghitung presisi
precision1 <- sum(prediksi == 1 & target_class == 1) / sum(prediksi == 1)
print(paste("Presisi model Decision Trees:", precision1)) 
## [1] "Presisi model Decision Trees: NaN"
# Menghitung recall
recall2 <- sum(prediksi == 1 & target_class == 1) / sum(target_class == 1)
print(paste("Recall model Decision Trees:", recall2)) 
## [1] "Recall model Decision Trees: 0"
# Menghitung F1-score
f1_score3 <- 2 * (precision1 * recall2) / (precision1 + recall2)
print(paste("F1-Score model Decision Trees:", f1_score3)) 
## [1] "F1-Score model Decision Trees: NaN"
# Menampilkan hasil evaluasi
print(paste("Akurasi:", akurasi))
## [1] "Akurasi: 0.96"
print(paste("Presisi:", precision1))
## [1] "Presisi: NaN"
print(paste("Recall:", recall2))
## [1] "Recall: 0"
print(paste("F1-score:", f1_score3))
## [1] "F1-score: NaN"

3.2.4 Visualisasi Model

Kita juga dapat memvisualisasikan model Decision Trees yang telah kita latih

# Load library untuk plotting
library(rpart.plot)

# Plot Decision Trees
rpart.plot(tree_model)

3.2.5 Interpretasi Hasil

Berdasarkan hasil evaluasi, kita dapat mengevaluasi seberapa baik model kita dalam memprediksi jenis spesies bunga Iris berdasarkan atribut-atribut yang ada dalam dataset. Selain itu, kita juga dapat menginterpretasi struktur pohon keputusan untuk memahami bagaimana model membuat keputusan