Lensa ML

Cara Kerja Data Preprocessing

Membersihkan dan menyiapkan data sebelum masuk ke modelmu

Langkah 1 dari 6: Data Mentah Itu Berantakan

Missing value, skala berbeda, format aneh

NamaUsiaPendapatanKotaSkorAlice2550kNYC82Bob?120kLA91Carol350.003NYC?Dave4285kChicago76Eve?1000kLA95Frank3167kChicago?
Missing value (?)
Skala tidak sebanding
Teks kategoris

Tabel ini punya ketiga masalah itu. Missing value menyisakan celah di Usia dan Skor, perbedaan skala membuat Pendapatan berada di ratusan ribu, dan teks kategoris di Kota tidak bisa langsung masuk ke sebagian besar algoritma. Data preprocessing membereskan semuanya sebelum training.

Perhatikan keenam baris dan tiga jenis masalah yang diberi warna. Usia kosong untuk Bob dan Eve, sedangkan Skor kosong untuk Carol dan Frank, jadi empat dari enam baris punya celah. Pendapatan Carol sebesar 0,003 adalah masalah jenis lain: nilainya ada, tetapi hampir pasti salah, mungkin karena dimasukkan dengan satuan yang keliru. Sel kosong mudah ditemukan, sedangkan nilai yang salah perlu dicek rentangnya. Kolom Nama adalah masalah ketiga. Kolom ini menunjukkan identitas orang, jadi model bisa menghafalnya tanpa mempelajari apa pun yang berlaku umum, dan kolom ini tidak boleh dipakai sebagai feature.

Langkah 2 dari 6: Menangani Missing Value

Isi, hapus, atau impute: strategi untuk celah data

Kolom Usia25R1NULL35R342R4NULL31R6

Menghapus baris membuang setiap baris yang punya missing value. Di sini, 2 dari 6 baris terbuang, beserta nilai Pendapatan dan Kota-nya. Cara ini aman kalau baris yang terdampak sedikit.

Klik Hapus Baris, Isi Rata-rata, dan Interpolasi, lalu bandingkan batang untuk baris 2 dan 5. Aman atau tidaknya sebuah strategi bergantung pada alasan nilainya hilang. Kalau hilangnya benar-benar acak, menghapus atau mengisi dengan rata-rata terutama mengurangi presisi. Kalau celahnya bergantung pada nilai itu sendiri, misalnya orang berpenghasilan tinggi melewatkan pertanyaan soal pendapatan, setiap cara pengisian sederhana membuat hasilnya bias. Solusi yang umum adalah melakukan imputation dan menambahkan kolom 0/1 "pernah hilang" supaya model bisa memanfaatkan informasi celah itu. Median lebih aman daripada rata-rata kalau kolomnya punya outlier.

Langkah 3 dari 6: Feature Scaling

Membawa semua feature ke rentang yang sama

12515007501000
Pendapatan
Skor

Tanpa scaling, Pendapatan (0-1000k) mendominasi Skor (0-1). Pada model berbasis jarak atau berbasis gradient, angka yang besar menenggelamkan angka yang kecil.

Klik Mentah, Min-Max, dan Z-Score, lalu lihat garis Pendapatan dan Skor berpindah ke sumbu yang sama. Pendapatan dinyatakan dalam ribuan, jadi angka 1.000 milik Eve berarti $1 juta, sementara pendapatan lainnya paling tinggi 120. Untuk satu nilai ekstrem seperti itu, robust scaling, (x − median) / IQR, sering mengalahkan kedua metode di sini, karena median dan interquartile range mengabaikan ekor distribusi. Log transform sebelum scaling adalah solusi lain untuk kolom uang yang miring. Apa pun metodenya, statistiknya berasal dari baris training dan dipakai apa adanya pada baris test.

Langkah 4 dari 6: Encoding Kategori

Mengubah kata menjadi angka yang dimengerti mesin

Warnais_merahis_biruis_hijau→Merah100Biru010Hijau001Merah100Biru010

One-hot encoding membuat satu kolom biner untuk setiap kategori, jadi tidak ada urutan palsu: Merah tidak "lebih besar dari" Biru.

Klik One-Hot Encoding dan Ordinal Encoding, lalu bandingkan kolom hasilnya. One-hot mengubah kolom dengan k kategori menjadi k kolom biner, yang jadi masalah kalau k besar: kolom kode pos bisa menambah ribuan kolom yang isinya hampir semua nol. Model linear dengan intercept biasanya membuang salah satu dari k kolom itu, karena k − 1 kolom lainnya sudah menentukannya. Untuk kolom high-cardinality, target encoding mengganti setiap kategori dengan rata-rata nilai targetnya, dihitung secara out-of-fold untuk menghindari leakage. LightGBM dan CatBoost juga bisa menangani kategori secara langsung.

Langkah 5 dari 6: Train-Test Split

Jangan menguji model dengan data training

Seluruh dataset (100%)

Data training mengajari model. Data validation dipakai untuk mengatur hyperparameter. Data test memberi skor akhir yang tidak bias. Kalau data test bocor ke training, skornya terlalu optimistis dan tidak lagi mengukur generalisasi.

Klik tombol Tampilkan untuk melihat apa yang terjadi tanpa split, lalu bandingkan batang Train (70%), Val (15%), dan Test (15%). Random split tepat untuk baris yang saling independen, tetapi tidak untuk semua dataset. Time series dibagi menurut tanggal, jadi model selalu diuji pada periode setelah periode yang dipelajarinya. Data dengan entitas berulang, seperti beberapa hasil pindaian dari pasien yang sama, dibagi per entitas supaya tidak ada pasien yang muncul di kedua sisi. Untuk kelas yang langka, stratified split menjaga rasio kelas tetap sama di setiap bagian.

Langkah 6 dari 6: Preprocessing Pipeline

Menggabungkan semuanya secara berurutan

1DataMentah2Train/TestSplit3TanganiMissing4ScalingFeature5EncodingKategori6SiapInput berantakan yang belum diolahTahap pipeline 1 / 6

Preprocessing pipeline merangkai langkah-langkah ini. Split dilakukan lebih dulu, jadi setiap langkah sesudahnya di-fit hanya pada baris training, lalu diterapkan apa adanya ke baris test. Pipeline dari scikit-learn memastikan urutan ini.

Arahkan kursor ke setiap tahap untuk membaca fungsinya, sementara sorotan berputar melewati keenam tahap. Objek pipeline memisahkan fit dari transform. Memanggil fit pada training set mempelajari nilai imputation, statistik scaling, dan daftar kategori. Memanggil transform menerapkan angka yang persis sama itu ke data apa pun setelahnya, termasuk satu request di produksi. Menjalankan cross-validation pada seluruh pipeline akan melakukan fit ulang setiap langkah di dalam tiap fold, dan ini cara paling sederhana untuk mencegah leakage. Kategori yang baru muncul saat test juga perlu aturan, misalnya baris one-hot yang semuanya nol.

Apa itu data preprocessing dalam machine learning?

Data preprocessing adalah rangkaian langkah yang mengubah data mentah menjadi input numerik bersih untuk training model. Biasanya isinya menangani missing value, melakukan scaling pada feature numerik, melakukan encoding pada feature kategoris, dan membagi data menjadi training set, validation set, dan test set. Setiap langkah dipelajari dari data training, lalu diterapkan apa adanya ke data baru.

Sebagian besar kualitas model sudah ditentukan oleh preprocessing sebelum training dimulai. Model berbasis jarak seperti KNN dan SVM memberi jawaban yang salah pada feature tanpa scaling, sebagian besar library menolak kategori berupa teks dan sel kosong, dan split yang ceroboh bisa membuat model lemah terlihat sangat bagus. Dalam praktik, alat seperti Pipeline dan ColumnTransformer dari scikit-learn membungkus langkah-langkah ini agar transformasi yang sama berjalan saat training, evaluasi, dan produksi.

Ide utama

  • Data preprocessing mengubah data mentah yang berantakan menjadi input numerik bersih untuk training model.
  • Missing value bisa dihapus atau diisi dengan imputation, dan pilihan yang tepat bergantung pada alasan nilainya hilang.
  • Scaling membuat rentang feature sebanding, dan outlier menentukan metode scaling mana yang paling cocok.
  • One-hot encoding cocok untuk kategori tanpa urutan, sedangkan ordinal encoding cocok untuk kategori yang punya urutan nyata.
  • Data dibagi sebelum langkah preprocessing apa pun di-fit, dan setiap langkah di-fit hanya pada baris training.
  • Pipeline menerapkan transformasi hasil belajar yang sama ke data training, test, dan produksi.

Pertanyaan umum

Apa bedanya data cleaning dan data preprocessing?

Data cleaning memperbaiki kesalahan pada data: duplikat, salah ketik, nilai yang mustahil, dan satuan yang tidak konsisten. Preprocessing lebih luas dan juga mencakup transformasi yang bukan perbaikan, seperti scaling, encoding, dan split. Cleaning biasanya dilakukan sekali pada dataset, sedangkan langkah preprocessing di-fit pada data training dan diterapkan lagi ke setiap input baru.

Apa itu data leakage?

Data leakage terjadi ketika informasi yang tidak tersedia saat prediksi sampai ke model selama training. Contoh yang umum adalah melakukan fit scaler pada seluruh dataset sebelum split, atau memakai feature yang dihitung dari target. Leakage membuat skor validasi terlihat lebih bagus daripada performa di dunia nyata.

Apakah neural network butuh data preprocessing?

Ya, walaupun feature engineering-nya lebih sedikit. Input tetap melalui scaling, misalnya untuk gambar dengan mengurangi rata-rata setiap kanal warna lalu membaginya dengan simpangan bakunya. Teks diubah menjadi ID bilangan bulat lewat tokenization, dan missing value tetap perlu diputuskan penanganannya sebelum training.

Bagaimana cara menangani outlier?

Cek dulu apakah outlier itu kesalahan atau nilai ekstrem yang nyata. Kesalahan diperbaiki atau dibuang. Nilai ekstrem yang nyata bisa dipertahankan dan ditangani dengan log transform, clipping pada persentil tinggi, robust scaling, atau model seperti decision tree yang lebih tahan terhadapnya.

Penjelasan terkait

Referensi

  1. scikit-learn User Guide, "Preprocessing data"
  2. James, Witten, Hastie & Tibshirani, "An Introduction to Statistical Learning" (ISLR)
  3. Rubin (1976), "Inference and Missing Data", Biometrika

Terakhir diperbarui