Dalam pembelajaran, setiap mahasiswa memiliki kebiasaan dan pola belajar yang berbeda. Karena itu, memahami karakteristik mahasiswa menjadi hal yang penting. Salah satu cara yang dapat digunakan adalah analisis klaster atau clustering.
Clustering merupakan salah satu metode dalam Unsupervised Machine Learning yang digunakan untuk mengelompokkan objek berdasarkan kemiripan karakteristiknya tanpa membutuhkan label kelompok sejak awal. Dengan metode ini, mahasiswa yang memiliki pola perilaku belajar yang mirip dapat dikelompokkan ke dalam klaster yang sama.
Dataset yang digunakan dalam analisis ini adalah User Knowledge Modeling Dataset yang diperoleh dari UCI Machine Learning Repository. Dataset ini terdiri dari 403 observasi mahasiswa dengan lima indikator perilaku belajar, yaitu:
STG (Study Time Goal) Menunjukkan durasi waktu yang digunakan mahasiswa untuk mempelajari materi utama. SCG (Study Cycle Goal) Menunjukkan frekuensi mahasiswa dalam mengulang materi utama. STR (Study Time Related) Menunjukkan durasi waktu yang digunakan mahasiswa untuk mempelajari materi pendukung. LPR (Exam Performance Related) Menunjukkan performa nilai ujian mahasiswa pada materi pendukung. PEG (Exam Performance Goal) Menunjukkan performa nilai ujian mahasiswa pada materi utama.
Tahap pertama adalah menyiapkan beberapa packages R yang digunakan selama proses analisis.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.4.3
## Welcome to factoextra!
## Want to learn more? See two factoextra-related books at https://www.datanovia.com/en/product/practical-guide-to-principal-component-methods-in-r/
library(dbscan)
## Warning: package 'dbscan' was built under R version 4.4.3
##
## Attaching package: 'dbscan'
## The following object is masked from 'package:stats':
##
## as.dendrogram
library(mclust)
## Warning: package 'mclust' was built under R version 4.4.3
## Package 'mclust' version 6.1.2
## Type 'citation("mclust")' for citing this R package in publications.
library(fpc)
## Warning: package 'fpc' was built under R version 4.4.3
##
## Attaching package: 'fpc'
## The following object is masked from 'package:dbscan':
##
## dbscan
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
Data dibaca dari dua sheet, yaitu Training_Data dan Test_Data. Setelah itu, kedua data digabungkan agar dapat dianalisis sebagai satu dataset.
# Membaca data
train_df <- read_xls(
"D:/SEMESTER 4/SML/Data_User_Modeling_Dataset.xls",
sheet = "Training_Data"
)
## New names:
## • `` -> `...7`
## • `` -> `...8`
test_df <- read_xls(
"D:/SEMESTER 4/SML/Data_User_Modeling_Dataset.xls",
sheet = "Test_Data"
)
## New names:
## • `` -> `...7`
## • `` -> `...8`
# Menggabungkan data
df_gabungan <- rbind(train_df, test_df)
# Mengambil lima variabel numerik utama
df_numerik <- df_gabungan[, 1:5]
set.seed(123)
Sebelum masuk ke tahap clustering, kita perlu melihat ringkasan statistik dari kelima variabel yang digunakan.
summary(df_numerik)
## STG SCG STR LPR
## Min. :0.0000 Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.2000 1st Qu.:0.2000 1st Qu.:0.2650 1st Qu.:0.2500
## Median :0.3000 Median :0.3000 Median :0.4400 Median :0.3300
## Mean :0.3531 Mean :0.3559 Mean :0.4577 Mean :0.4313
## 3rd Qu.:0.4800 3rd Qu.:0.5100 3rd Qu.:0.6800 3rd Qu.:0.6500
## Max. :0.9900 Max. :0.9000 Max. :0.9500 Max. :0.9900
## PEG
## Min. :0.0000
## 1st Qu.:0.2500
## Median :0.4000
## Mean :0.4564
## 3rd Qu.:0.6600
## Max. :0.9900
Berdasarkan hasil summary(), seluruh variabel STG, SCG, STR, LPR, dan PEG berada pada rentang nilai yang sama, yaitu 0 sampai 1. Artinya, setiap variabel sudah berada pada skala yang sebanding.
Pada analisis klaster, scaling biasanya diperlukan apabila terdapat perbedaan satuan atau rentang antarvariabel yang cukup besar. Namun, pada dataset ini kondisi tersebut tidak ditemukan. Oleh karena itu, proses scaling tidak dilakukan agar nilai asli tetap dapat digunakan dan lebih mudah diinterpretasikan.
Sebelum melakukan clustering, kita perlu melihat terlebih dahulu seperti apa pola penyebaran datanya. Data yang digunakan memiliki lima variabel sehingga cukup sulit untuk melihat keseluruhan pola secara langsung.
Untuk membantu visualisasi, digunakan Principal Component Analysis (PCA) untuk mereduksi data menjadi dua dimensi, yaitu PC1 dan PC2.
# Reduksi dimensi menggunakan PCA
pca_res <- prcomp(df_numerik, scale. = FALSE)
# Menghitung persentase varians setiap komponen utama
var_persen <- (pca_res$sdev^2) /
sum(pca_res$sdev^2) * 100
# Membuat dataframe untuk PC1 dan PC2
df_pca <- as.data.frame(pca_res$x[, 1:2])
colnames(df_pca) <- c("PC1", "PC2")
# Visualisasi data awal
ggplot(df_pca, aes(x = PC1, y = PC2)) +
geom_point(
color = "deeppink4",
alpha = 0.7,
size = 2
) +
theme_minimal() +
labs(
title = "Pola Sebaran Data Mahasiswa",
x = paste0(
"Principal Component 1 (",
sprintf("%.2f", var_persen[1]),
"%)"
),
y = paste0(
"Principal Component 2 (",
sprintf("%.2f", var_persen[2]),
"%)"
)
)
Berdasarkan hasil PCA, PC1 mampu menjelaskan sekitar 29,18% keragaman data, sedangkan PC2 menjelaskan sekitar 23,99%. Jika digabungkan, kedua komponen tersebut mampu menjelaskan sekitar 53,17% variasi dari data asli.
Dari grafik, titik-titik mahasiswa terlihat menyebar secara kontinu dan cenderung membentuk satu kelompok besar. Batas antar kelompok juga tidak terlihat sangat jelas. Hal ini menunjukkan bahwa karakteristik perilaku belajar mahasiswa memiliki pola yang cukup beragam dan batas antar kelompoknya tidak terlalu tegas.
Kondisi tersebut menjadi pertimbangan dalam pemilihan metode clustering yang akan digunakan pada tahap berikutnya.
Untuk melihat metode yang paling sesuai dengan karakteristik data, digunakan tiga metode clustering, yaitu DBSCAN, Spectral Clustering, dan Gaussian Mixture Model (GMM).
DBSCAN merupakan metode clustering yang mengelompokkan data berdasarkan kepadatan titik dalam suatu area. Metode ini juga dapat mengidentifikasi data yang dianggap sebagai noise atau pencilan.
Sebelum menjalankan DBSCAN, nilai eps ditentukan menggunakan grafik jarak tetangga terdekat.
# Menentukan nilai eps menggunakan k-NN Distance Plot
plot_knn <- kNNdistplot(
df_numerik,
k = 4
)
plot_knn +
ggplot2::geom_hline(
yintercept = 0.18,
color = "deeppink4",
linetype = "dashed"
)
## NULL
# Menjalankan DBSCAN
fit_dbscan <- dbscan::dbscan(
df_numerik,
eps = 0.18,
minPts = 5
)
# Melihat jumlah anggota setiap klaster
table(fit_dbscan$cluster)
##
## 0 1 2 3 4 5 6
## 344 13 26 6 7 3 4
Pada DBSCAN, label klaster bernilai 0 menunjukkan data yang dianggap sebagai noise. Artinya, observasi tersebut tidak termasuk dalam kelompok utama karena tidak memenuhi kepadatan yang ditentukan oleh parameter DBSCAN.
Spectral Clustering menggunakan hubungan kemiripan antarobjek dalam bentuk similarity matrix. Selanjutnya, matriks tersebut digunakan untuk memperoleh struktur eigenvector yang kemudian dikelompokkan menggunakan K-Means.
# Membuat similarity matrix
sim_matrix <- exp(
-as.matrix(dist(df_numerik))^2
)
# Dekomposisi nilai eigen
eigen_res <- eigen(sim_matrix)
# Menentukan jumlah klaster
k_target <- 4
# Mengambil eigenvector
eigenvectors_pilihan <-
eigen_res$vectors[, 1:k_target]
# K-Means pada eigenvector
fit_spectral <- kmeans(
eigenvectors_pilihan,
centers = k_target,
nstart = 25
)
# Melihat jumlah anggota setiap klaster
table(fit_spectral$cluster)
##
## 1 2 3 4
## 93 82 113 115
Metode ketiga yang digunakan adalah Gaussian Mixture Model atau GMM. Metode ini mengasumsikan bahwa data merupakan gabungan dari beberapa distribusi Gaussian.
Pada analisis ini, pemodelan dilakukan menggunakan package mclust.
# Menjalankan Gaussian Mixture Model
fit_gmm <- Mclust(df_numerik)
# Melihat hasil model
summary(fit_gmm)
## ----------------------------------------------------
## Gaussian finite mixture model fitted by EM algorithm
## ----------------------------------------------------
##
## Mclust EEI (diagonal, equal volume and shape) model with 8 components:
##
## log-likelihood n df BIC ICL
## 259.9384 403 52 207.932 155.8023
##
## Clustering table:
## 1 2 3 4 5 6 7 8
## 36 91 90 43 77 13 32 21
Berdasarkan hasil pemodelan, konfigurasi model terbaik yang diperoleh adalah VVE dengan jumlah empat klaster.
Setelah ketiga metode clustering dijalankan, tahap berikutnya adalah membandingkan kualitas klaster yang dihasilkan. Evaluasi dilakukan menggunakan Silhouette Width.
Silhouette Width digunakan untuk melihat seberapa dekat suatu objek dengan anggota klasternya sendiri dibandingkan dengan klaster lainnya. Nilainya berada pada rentang -1 sampai 1. Nilai yang semakin mendekati 1 menunjukkan bahwa objek lebih sesuai dengan klasternya dan memiliki pemisahan yang lebih baik dari klaster lain.
# Membuat matriks jarak dari lima variabel utama
jarak_data <- dist(df_numerik[, 1:5])
# Evaluasi DBSCAN
# Data noise tidak digunakan dalam perhitungan
non_noise_idx <- which(
fit_dbscan$cluster > 0
)
jarak_dbscan_bersih <-
dist(df_numerik[non_noise_idx, 1:5])
label_dbscan_bersih <-
fit_dbscan$cluster[non_noise_idx]
eval_dbscan <- cluster.stats(
jarak_dbscan_bersih,
label_dbscan_bersih
)
sil_dbscan <-
eval_dbscan$avg.silwidth
# Evaluasi Spectral Clustering
eval_spectral <- cluster.stats(
jarak_data,
fit_spectral$cluster
)
sil_spectral <-
eval_spectral$avg.silwidth
# Evaluasi GMM
eval_gmm <- cluster.stats(
jarak_data,
fit_gmm$classification
)
sil_gmm <-
eval_gmm$avg.silwidth
# Menampilkan hasil
cat(
"Nilai Silhouette Width DBSCAN (Tanpa Noise):",
sil_dbscan,
"\n"
)
## Nilai Silhouette Width DBSCAN (Tanpa Noise): 0.2700658
cat(
"Nilai Silhouette Width Spectral:",
sil_spectral,
"\n"
)
## Nilai Silhouette Width Spectral: 0.1816577
cat(
"Nilai Silhouette Width GMM:",
sil_gmm,
"\n"
)
## Nilai Silhouette Width GMM: 0.1035962
Berdasarkan hasil perhitungan, DBSCAN menghasilkan nilai Silhouette Width sebesar 0,2700658 setelah data yang dikategorikan sebagai noise tidak dimasukkan dalam perhitungan.
Sementara itu, Spectral Clustering menghasilkan nilai Silhouette Width sebesar 0,1828335. Nilai tersebut lebih rendah dibandingkan DBSCAN, tetapi hasilnya perlu dilihat bersama dengan kondisi data dan jumlah observasi yang berhasil dikelompokkan.
Pada DBSCAN, lebih dari 70% data mahasiswa dikategorikan sebagai noise. Artinya, sebagian besar observasi tidak masuk ke dalam klaster utama. Kondisi ini menjadi pertimbangan penting karena tujuan analisis adalah mendapatkan segmentasi yang dapat menggambarkan seluruh mahasiswa.
Sebaliknya, Spectral Clustering mampu memasukkan seluruh 403 mahasiswa ke dalam empat klaster. Walaupun nilai Silhouette Width-nya lebih rendah, tidak ada observasi yang dikeluarkan sebagai noise.
Dengan mempertimbangkan hasil evaluasi dan karakteristik data, Spectral Clustering digunakan sebagai model akhir. Pemilihan ini tidak hanya didasarkan pada nilai Silhouette Width, tetapi juga mempertimbangkan apakah hasil clustering dapat digunakan untuk menggambarkan keseluruhan data mahasiswa.
Setelah Spectral Clustering dipilih sebagai model akhir, hasil pengelompokan divisualisasikan menggunakan ruang PCA yang telah dibuat sebelumnya.
Label hasil clustering dimasukkan ke dalam data PCA. Dengan cara ini, setiap mahasiswa dapat ditampilkan berdasarkan kelompoknya pada grafik dua dimensi.
set.seed(123)
# Memasukkan label klaster Spectral Clustering
df_pca$Cluster_Terpilih <-
as.factor(fit_spectral$cluster)
# Visualisasi hasil clustering
ggplot(
data = df_pca,
aes(
x = PC1,
y = PC2
)
) +
geom_point(
aes(
color = Cluster_Terpilih
),
alpha = 0.8,
size = 2.5
) +
theme_minimal() +
labs(
title = "Hasil Clustering dengan Spectral Clustering",
subtitle = "Visualisasi Klaster pada Ruang PCA Dua Dimensi",
x = paste0(
"Dimensi 1 (",
sprintf("%.2f", var_persen[1]),
"%)"
),
y = paste0(
"Dimensi 2 (",
sprintf("%.2f", var_persen[2]),
"%)"
),
color = "Klaster"
)
Berdasarkan hasil visualisasi, sebanyak 403 mahasiswa berhasil dikelompokkan ke dalam empat klaster.
Ruang PCA yang digunakan mampu menjelaskan 53,17% keragaman data. Dimensi 1 menjelaskan 29,18% variasi, sedangkan Dimensi 2 menjelaskan 23,99%.
Persentase tersebut sama dengan visualisasi data awal karena proses Spectral Clustering hanya memberikan label pada setiap observasi. Posisi data pada ruang PCA tidak mengalami perubahan.
Jika dilihat dari grafik, keempat klaster memiliki pola penyebaran yang cukup beragam. Beberapa kelompok terlihat berdekatan dan masih terdapat area yang saling tumpang tindih.
Hal tersebut menunjukkan bahwa perilaku belajar mahasiswa tidak terbagi menjadi kelompok yang benar-benar terpisah. Sebaliknya, terdapat kemiripan karakteristik antara beberapa mahasiswa dari klaster yang berbeda.
Meskipun demikian, Spectral Clustering tetap mampu memberikan segmentasi terhadap seluruh mahasiswa berdasarkan hubungan kemiripan antarobservasi.
Setelah mendapatkan empat kelompok, langkah berikutnya adalah melihat karakteristik dari masing-masing klaster.
Karakteristik setiap kelompok dianalisis berdasarkan nilai rata-rata dari lima variabel, yaitu STG, SCG, STR, LPR, dan PEG.
profil_cluster <- aggregate(
df_numerik,
by = list(
Klaster = fit_spectral$cluster
),
FUN = mean
)
print(profil_cluster)
## Klaster STG SCG STR LPR PEG
## 1 1 0.4978065 0.4725699 0.4128495 0.5624731 0.7418280
## 2 2 0.2876707 0.3557195 0.5475610 0.7185366 0.2401220
## 3 3 0.3418142 0.2763186 0.2166372 0.3109823 0.3088496
## 4 4 0.2939652 0.3400174 0.6666087 0.2387826 0.5246348
Hasil rata-rata tersebut digunakan untuk melihat variabel mana yang memiliki nilai relatif tinggi atau rendah pada setiap klaster.
Mahasiswa pada Klaster 1 menunjukkan karakteristik belajar yang relatif konsisten. Nilai STG sebesar 0,498 dan SCG sebesar 0,473 menunjukkan bahwa aktivitas belajar materi utama dan frekuensi pengulangan materi berada pada tingkat yang cukup tinggi.
Selain itu, nilai PEG sebesar 0,742 merupakan nilai tertinggi dibandingkan klaster lainnya. Nilai LPR sebesar 0,562 juga menunjukkan hasil yang cukup tinggi pada materi pendukung.
Dari karakteristik tersebut, Klaster 1 dapat digambarkan sebagai kelompok mahasiswa yang memiliki aktivitas belajar cukup konsisten dan memperoleh hasil evaluasi akademik yang relatif tinggi.
Klaster 2 memiliki nilai LPR sebesar 0,719 yang merupakan nilai tertinggi dibandingkan kelompok lainnya. Nilai STR sebesar 0,548 juga menunjukkan bahwa aktivitas belajar pada materi tambahan cukup tinggi.
Namun, nilai PEG pada kelompok ini hanya sebesar 0,240 dan menjadi nilai terendah dibandingkan klaster lainnya.
Hal ini menunjukkan adanya perbedaan antara capaian pada materi pendukung dan materi utama. Mahasiswa dalam kelompok ini terlihat lebih kuat pada materi pendukung, sedangkan hasil pada materi utama masih relatif rendah.
Klaster 3 menunjukkan nilai yang relatif rendah pada beberapa indikator aktivitas belajar.
Nilai STR sebesar 0,217 merupakan nilai terendah dibandingkan kelompok lainnya. Nilai SCG sebesar 0,276 juga menunjukkan bahwa frekuensi pengulangan materi masih relatif rendah.
Selain itu, capaian pada materi utama dan materi pendukung juga berada pada tingkat yang relatif rendah.
Berdasarkan karakteristik tersebut, Klaster 3 dapat menggambarkan kelompok mahasiswa dengan tingkat aktivitas belajar yang relatif rendah dibandingkan kelompok lainnya.
Klaster 4 memiliki nilai STR sebesar 0,667. Nilai tersebut merupakan yang tertinggi di antara seluruh klaster sehingga menunjukkan aktivitas yang cukup tinggi dalam mempelajari materi tambahan.
Nilai PEG sebesar 0,525 juga tergolong cukup baik dan menjadi nilai kedua tertinggi setelah Klaster 1.
Namun, nilai LPR sebesar 0,239 merupakan yang terendah dibandingkan klaster lainnya.
Dengan demikian, Klaster 4 dapat menggambarkan mahasiswa yang cukup aktif mempelajari materi tambahan, tetapi hasil evaluasi pada materi pendukung masih relatif rendah.
Berdasarkan hasil perhitungan rata-rata setiap variabel, diperoleh empat karakteristik utama mahasiswa.
Klaster 1: mahasiswa dengan aktivitas belajar yang relatif konsisten dan capaian akademik yang tinggi.
Klaster 2: mahasiswa yang memiliki capaian lebih tinggi pada materi pendukung, tetapi hasil pada materi utama masih relatif rendah.
Klaster 3: mahasiswa dengan aktivitas belajar dan capaian akademik yang relatif rendah.
Klaster 4: mahasiswa yang aktif mempelajari materi tambahan dengan capaian akademik yang cukup baik pada materi utama.
Hasil clustering menunjukkan bahwa mahasiswa memiliki pola belajar yang berbeda-beda. Perbedaan tersebut dapat terlihat dari aktivitas belajar, frekuensi pengulangan materi, aktivitas mempelajari materi tambahan, serta hasil evaluasi pada materi utama dan pendukung.
Dengan adanya segmentasi ini, karakteristik masing-masing kelompok dapat menjadi informasi tambahan untuk memahami pola belajar mahasiswa. Pendekatan pembelajaran juga dapat disesuaikan dengan karakteristik kelompok sehingga analisis yang dilakukan tidak hanya menghasilkan kelompok secara numerik, tetapi juga memberikan gambaran yang lebih mudah dipahami mengenai perilaku belajar mahasiswa.