Email : naufal.fadhlullah@student.matanauniversity.ac.id
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.
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:
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.
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.
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:
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
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.
Keterangan:
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"
## [1] "Presisi: 1"
## [1] "Recall: 1"
## [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"
## [1] "Presisi: 1"
## [1] "Recall: 1"
## [1] "F1-Score: 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 %
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.
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:
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.
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.
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.
Penentuan Label Setelah pembagian data selesai, algoritma menentukan label (kelas atau nilai) untuk setiap daun pohon berdasarkan mayoritas kelas atau nilai dalam setiap subgrup.
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:
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).
Pertama-tama, kita perlu memuat dataset dan mempersiapkan data:
## '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 ...
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) *
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"
## [1] "Akurasi: 0.96"
## [1] "Presisi: NaN"
## [1] "Recall: 0"
## [1] "F1-score: NaN"
Kita juga dapat memvisualisasikan model Decision Trees yang telah kita latih
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