Topik ini membahas pembelajaran tak terawasi (unsupervised learning), yaitu pembelajaran dari data yang tidak memiliki label. Pembahasan mencakup tujuan menemukan struktur tersembunyi, mekanisme clustering dengan K-Means, serta perbedaan cara menilai hasilnya dibandingkan pembelajaran terawasi. Satu skrip Python menunjukkan algoritma K-Means yang mengelompokkan data iris tanpa pernah melihat label spesies. Hasil pengelompokan itu kemudian diperiksa untuk menilai seberapa jauh struktur asli data tertangkap.
Makna pembelajaran tanpa label#
Pembelajaran tak terawasi bekerja pada dataset yang hanya berisi fitur, tanpa kolom jawaban. Tidak ada label yang menjadi pengawas, sehingga model tidak diminta memprediksi sesuatu yang sudah diketahui, melainkan diminta menemukan pola yang tersimpan dalam data. Pola itu dimungkinkan oleh satu kenyataan sederhana, yaitu contoh yang mirip biasanya berdekatan di ruang fitur. Kedekatan itulah yang dimanfaatkan metode-metode pada keluarga ini. Kegiatan semacam ini berguna ketika label mahal atau mustahil diperoleh, misalnya pada data pengguna yang belum pernah diberi kategori oleh siapa pun.
Tiga tujuan muncul paling sering pada praktik. Clustering mengelompokkan contoh yang mirip ke dalam satu cluster, sehingga data terbagi menjadi beberapa kelompok alami. Reduksi dimensi (dimensionality reduction) memampatkan banyak fitur menjadi beberapa fitur baru yang menyimpan sebagian besar informasi, misalnya untuk visualisasi data berdimensi tinggi. Deteksi anomali (anomaly detection) mencari contoh yang menyimpang dari mayoritas, dan contoh penyimpang semacam itu biasanya disebut outlier. Pada pemantauan mesin, outlier berupa catatan sensor suhu yang meloncat jauh dari pola harian, dan kejadian seperti itu layak ditandai untuk diperiksa.
Cara menilai hasil pembelajaran tak terawasi berbeda dari pembelajaran terawasi. Tidak ada jawaban benar tunggal yang dapat dibandingkan, sehingga tidak ada akurasi dalam arti biasa. Hasil clustering dinilai dari kepadatan dan keterpisahan kelompok, dari masuk akalnya kelompok menurut pengetahuan tentang bidang data, atau dari kegunaannya bagi keputusan berikutnya. Karena itu, pemodelan tak terawasi sering memerlukan pemeriksaan hasil oleh manusia, bukan sekadar satu angka metrik.
Clustering dengan K-Means#
K-Means adalah algoritma clustering yang paling sering menjadi titik awal. Algoritma ini memerlukan jumlah cluster yang ditetapkan lebih dahulu, lalu menempatkan centroid, yaitu titik tengah setiap cluster, secara acak di ruang fitur. Setiap contoh diberikan kepada centroid terdekatnya, kemudian setiap centroid digeser ke rata-rata anggota-anggotanya. Perpindahan dan pengelompokan ulang ini berulang sampai posisi centroid tidak berubah berarti.
Proses tersebut secara implisit meminimalkan jumlah kuadrat jarak antara setiap contoh dan centroid clusternya.
Notasi menunjukkan centroid dari cluster , sedangkan menunjukkan jumlah cluster yang dipilih. Nilai yang diminimalkan ini biasanya disebut inersia (inertia), dan nilai yang lebih kecil menandakan kelompok yang lebih rapat.
Hasil K-Means bergantung pada penempatan awal centroid, sehingga algoritma dapat berakhir pada solusi yang berbeda untuk data yang sama. Argumen n_init membuat algoritma dijalankan beberapa kali dengan penempatan awal yang berbeda, lalu hasil dengan inersia terendah disimpan. Argumen random_state menetapkan seed, yaitu benih bilangan acak, bagi keacakan tersebut agar hasil dapat direproduksi.
Contoh kode dan pembacaan hasil#
Skrip berikut menjalankan K-Means pada seluruh data iris tanpa memberikan label apa pun kepada model. Jumlah cluster ditetapkan tiga, sama seperti jumlah spesies yang diketahui, untuk keperluan demonstrasi. Setelah clustering selesai, tabel silang antara cluster dan spesies dihitung dengan fungsi crosstab dari pandas. Perhitungan ini hanya berperan sebagai alat pemeriksaan, bukan bagian dari pelatihan. Skrip dijalankan dari folder topik dengan perintah python3 -B demo-tak-terawasi.py.
"""Contoh pembelajaran tak terawasi: clustering iris tanpa melihat label."""
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
pd.set_option("display.width", 80)
iris = load_iris()
X = iris.data # label tidak diberikan ke model sama sekali
kmeans = KMeans(n_clusters=3, random_state=42, n_init=10)
cluster = kmeans.fit_predict(X)
# jumlah anggota tiap cluster
jumlah = pd.Series(cluster).value_counts().sort_index()
for id_cluster, n in jumlah.items():
print(f"cluster {id_cluster}: {n} baris")
# bandingkan hasil cluster dengan spesies sebenarnya (hanya untuk pemeriksaan)
spesies = pd.Series(iris.target).map(dict(enumerate(iris.target_names)))
tabel = pd.crosstab(cluster, spesies, rownames=["cluster"], colnames=["spesies"])
print(tabel)cluster 0: 62 baris
cluster 1: 50 baris
cluster 2: 38 baris
spesies setosa versicolor virginica
cluster
0 0 48 14
1 50 0 0
2 0 2 36Tabel silang tersebut memberi gambaran yang jelas. Cluster 1 memuat seluruh 50 baris setosa tanpa campuran, artinya kelompok yang paling khas tertangkap sempurna tanpa label. Baris versicolor dan virginica terbagi tidak rapi antara cluster 0 dan cluster 2, yaitu 48 versicolor dan 14 virginica di cluster 0, serta 2 versicolor dan 36 virginica di cluster 2. Pola ini sesuai dengan kenyataan biologis, karena versicolor dan virginica memang memiliki ukuran bunga yang saling menyelimuti. Satu cluster yang tercampur seperti ini bukan kegagalan alat, melainkan informasi bahwa dua kelompok tersebut sulit dipisahkan hanya dengan fitur yang tersedia.
Dua catatan jujur menyertai hasil di atas. Pertama, model tidak pernah tahu nama spesies, sehingga label cluster 0, 1, dan 2 hanyalah nomor urut tanpa makna. Pemberian nama pada cluster tetap menjadi pekerjaan manusia yang membaca isi setiap kelompok. Kedua, jumlah cluster tiga dipilih karena jumlah spesies sudah diketahui, sedangkan pada data yang aslinya tidak diketahui, jumlah cluster yang tepat harus dicari melalui eksperimen.
Ringkasan#
- Pembelajaran tak terawasi mencari struktur pada data tanpa label, melalui clustering, reduksi dimensi, dan deteksi anomali.
- K-Means mengulangi penetapan anggota dan pergeseran centroid untuk meminimalkan jumlah kuadrat jarak ke centroid, dengan
n_initdanrandom_statemenjaga hasil tetap stabil dan dapat direproduksi. - Hasil clustering tidak memiliki jawaban benar tunggal, sehingga dinilai melalui pemeriksaan manusia, dan penamaan cluster tetap pekerjaan manusia.
Referensi#
- Clustering — scikit-learn — Panduan metode clustering di scikit-learn, termasuk K-Means beserta keterbatasannya.
- sklearn.cluster.KMeans — scikit-learn
— Dokumentasi API K-Means yang digunakan pada contoh kode, termasuk argumen
n_initdanrandom_state. - Unsupervised learning — scikit-learn — Gambaran umum pembelajaran tak terawasi yang didukung scikit-learn.
- pandas.crosstab — pandas
— Dokumentasi fungsi
crosstabyang digunakan untuk membandingkan cluster dengan spesies.