Topik ini membahas cara merumuskan masalah data menjadi masalah machine learning, mulai dari membedakan keluarga supervised dan unsupervised hingga mengenali peran fitur dan target. Penentuan keluarga ini adalah keputusan pertama yang mengikat sisa pekerjaan pemodelan, karena jenis algoritma, keluaran model, dan cara evaluasinya semuanya ditentukan pada tahap ini. Setelah membaca topik ini, dataset iris bawaan scikit-learn dapat diinspeksi, data tanpa label dapat dibuat dengan generator bawaan, dan alur dari data hingga prediksi dapat digambarkan dengan tiga kotak sederhana.
Supervised dan unsupervised learning#
Masalah machine learning terbagi atas dua keluarga besar berdasarkan satu pertanyaan, yaitu ada atau tidaknya label pada data. Supervised learning adalah pembelajaran dari data yang setiap sampelnya disertai label, yaitu nilai yang menjadi jawaban yang benar. Keluarga ini mencakup klasifikasi, yang labelnya berupa kelas seperti nama spesies, dan regresi, yang labelnya berupa angka kontinu seperti suhu atau jarak.
Unsupervised learning bekerja tanpa label sama sekali, sehingga model mencari struktur yang tersembunyi di dalam data. Tugas utamanya meliputi clustering, yakni pengelompokan sampel yang mirip, dan reduksi dimensi, yakni memampatkan banyak kolom menjadi sedikit kolom yang mewakili informasi utama. Tanpa label, penilaian hasilnya pun berbeda, karena tidak ada jawaban benar yang dapat dibandingkan secara langsung.
Tabel berikut memasangkan kedua keluarga dengan tugas dan contoh algoritmanya. Pemilihan keluarga ditentukan oleh data yang tersedia, bukan oleh selera, karena algoritma supervised menuntut kolom label yang nyata. Pertanyaan yang hendak dijawab oleh model turut menentukan tugasnya, misalnya memisahkan kelas atau memperkirakan angka.
| Keluarga | Label | Tugas | Contoh algoritma |
|---|---|---|---|
| Supervised | Ada | Klasifikasi | LogisticRegression, DecisionTreeClassifier |
| Supervised | Ada | Regresi | LinearRegression, Ridge |
| Unsupervised | Tidak ada | Clustering | KMeans, DBSCAN |
| Unsupervised | Tidak ada | Reduksi dimensi | PCA |
Fitur dan target#
Dokumentasi scikit-learn menetapkan dua simbol yang digunakan di seluruh pustaka. Huruf X menunjuk fitur, yaitu atribut angka yang menggambarkan setiap sampel, dan dikemas sebagai matriks dua dimensi berukuran n_samples × n_features. Huruf y menunjuk target, yaitu nilai yang ingin diprediksi, dan dikemas sebagai vektor satu dimensi sepanjang n_samples.
Bentuk kedua struktur tersebut menentukan banyak pesan error di scikit-learn. Matriks X selalu dua dimensi sekalipun fiturnya hanya satu kolom, sedangkan vektor y selalu satu dimensi. Fitur tunggal pun tetap disajikan sebagai matriks dengan satu kolom.
Label pada supervised learning disimpan di y, sehingga keberadaan kolom label pada data mentah menjadi penanda masalah supervised. Apabila kolom itu tidak ada, pilihannya adalah mengumpulkannya lebih dahulu atau berpindah ke pendekatan unsupervised. Keputusan ini tidak dapat ditunda karena menentukan algoritma yang tersedia.
Menginspeksi dataset iris#
Dataset iris bawaan scikit-learn menyediakan contoh masalah supervised yang kecil dan lengkap. Datanya berisi 150 sampel bunga iris dari tiga spesies, yaitu setosa, versicolor, dan virginica, dengan empat pengukuran per bunga sebagai fitur. Karena setiap sampel menyertakan label spesies, dataset ini cocok untuk masalah klasifikasi.
Inspeksi bentuk data dilakukan sebelum memodelkan, dan kode berikut menunjukkan cara paling ringkasnya. Metode print digunakan secara sengaja agar setiap fakta muncul pada baris keluarannya sendiri. Bentuk yang tidak sesuai dugaan lebih mudah ditelusuri dari keluaran yang terpecah per baris.
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data # matriks fitur
y = iris.target # vektor target
print(X.shape)
print(y.shape)
print(iris.feature_names)
print(iris.target_names)
print(y[:10])(150, 4)
(150,)
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
['setosa' 'versicolor' 'virginica']
[0 0 0 0 0 0 0 0 0 0]Keluaran membentuk peta data secara utuh. Bentuk (150, 4) menyatakan matriks fitur dengan 150 baris dan 4 kolom, sedangkan (150,) menyatakan vektor target satu dimensi yang panjangnya sama dengan jumlah baris. Daftar feature_names memberi nama keempat kolom, daftar target_names memetakan angka 0, 1, dan 2 ke nama spesies, dan sepuluh target pertama yang semuanya bernilai 0 menunjukkan bahwa data tersusun per spesies.
Data tanpa label#
Data tanpa label dibuat dengan generator bawaan bernama make_blobs agar contoh unsupervised dapat dicoba tanpa berkas eksternal. Generator ini menghasilkan titik-titik yang terkumpul dalam beberapa gugus di ruang dua dimensi. Pada pemakaian nyata, data semacam ini muncul tanpa kolom jawaban, misalnya pengukuran sensor yang belum pernah dikelompokkan.
from sklearn.datasets import make_blobs
X, _ = make_blobs(n_samples=150, centers=3, n_features=2, random_state=42)
print(X.shape)
print(X[:3])(150, 2)
[[-2.54502366 10.57892978]
[-3.34841515 8.70507375]
[-6.59863532 -7.50280911]]Bentuk (150, 2) memperlihatkan 150 sampel dengan 2 fitur tanpa kolom target di sampingnya. Tanda garis bawah pada penugasan X, _ menandakan label sengaja diabaikan, karena generator memang mengembalikan label kebenaran sebagai alat bantu, sedangkan data nyata yang belum diberi label tidak memilikinya. Tiga baris pertama berisi koordinat titik, dan algoritma clustering kelak mengelompokkan 150 titik itu hanya dari koordinatnya.
Alur dari data menuju prediksi#
Semua rumusan masalah di atas mengalir melalui tiga tahap yang sama. Data disiapkan terlebih dahulu, berupa matriks X saja untuk unsupervised atau X beserta y untuk supervised. Estimator kemudian dilatih dengan metode fit, lalu model yang telah dilatih menghasilkan keluaran melalui metode predict. Diagram berikut merangkum alur tersebut untuk kasus supervised.
Untuk kasus unsupervised, alurnya identik tetapi y tidak ada, sehingga fit menerima X saja dan keluaran modelnya berupa penugasan kelompok atau penyusutan kolom, bukan prediksi label. Alur tiga kotak ini berlaku untuk setiap estimator di scikit-learn, dari model linear hingga pengelompok. Nama metodenya pun sama, sehingga peralihan antarkasus tidak menuntut sintaks baru.
Kesalahan umum#
Dua kesalahan berikut paling sering muncul pada tahap perumusan masalah. Keduanya tidak merusak data, tetapi membuang waktu bila penyebabnya dikenali terlambat. Keduanya juga terdeteksi dengan satu pemeriksaan bentuk data yang singkat.
Membalik peran X dan y#
Metode fit menuntut X berbentuk matriks dua dimensi dan y berbentuk vektor satu dimensi. Kesalahan yang lazim adalah memberikan fitur tunggal sebagai vektor satu dimensi, sehingga muncul pesan ValueError yang menyatakan array satu dimensi tidak diterima. Perbaikannya sederhana, yaitu menyajikan fitur itu sebagai matriks dengan satu kolom, misalnya lewat reshape(-1, 1) pada array NumPy. Kebiasaan mencetak X.shape sebelum memanggil fit mencegah kesalahan ini terulang.
Memaksakan label yang tidak ada#
Kesalahan kedua adalah memperlakukan data tanpa label seolah-olah supervised, misalnya menyalin nilai dari kolom lain sebagai target agar fit dapat dipanggil. Model yang dilatih dari label palsu menghasilkan angka yang tampak wajar tetapi tidak bermakna, dan kesalahan ini sulit terlihat dari keluarannya. Apabila kolom label memang tidak tersedia, pendekatan unsupervised seperti clustering adalah pilihan yang jujur, atau proses pelabelan data dirancang terlebih dahulu.
Ringkasan#
- Masalah berlabel masuk keluarga supervised, yaitu klasifikasi untuk label kelas dan regresi untuk label angka, sedangkan masalah tanpa label masuk keluarga unsupervised, yaitu clustering dan reduksi dimensi.
- Fitur dikemas sebagai matriks X dua dimensi berukuran
n_samples × n_features, sedangkan target dikemas sebagai vektor y satu dimensi. - Dataset iris bawaan memperlihatkan bentuk supervised yang lengkap, dan
make_blobsmemperlihatkan data tanpa label. - Alur data, model, lalu prediksi berlaku untuk semua estimator, dengan atau tanpa y.
Referensi#
- Dataset load_iris — scikit-learn — Dokumentasi resmi dataset iris yang digunakan pada inspeksi di atas.
- User Guide — scikit-learn — Panduan resmi yang membagi bahasan menjadi supervised dan unsupervised learning.
- Glossary — scikit-learn — Definisi resmi istilah n_samples, n_features, dan label.
- Datasets — scikit-learn — Daftar dataset bawaan dan generator sampel, termasuk make_blobs.