Siapkan Data

Meskipun kursus Persiapan Data dan Engineering Fitur untuk Machine Learning membahas persiapan data umum, kursus ini membahas persiapan khusus untuk pengelompokan.

Dalam pengelompokan, Anda menghitung kemiripan di antara dua contoh dengan menggabungkan semua data fitur untuk contoh tersebut ke dalam nilai numerik. Penggabungan data fitur mengharuskan data memiliki skala yang sama. Bagian ini membahas cara menormalisasi, mentransformasi, dan membuat kuantil, serta membahas alasan kuantil sebagai pilihan default terbaik untuk mengubah distribusi data apa pun. Dengan memiliki pilihan default, Anda dapat mengubah data tanpa memeriksa distribusi data.

Menormalisasi Data

Anda dapat mengubah data untuk beberapa fitur pada skala yang sama dengan menormalisasi data. Secara khusus, normalisasi sangat cocok untuk memproses distribusi data yang paling umum, yaitu distribusi Gaussian. Dibandingkan dengan kuantil, normalisasi memerlukan lebih sedikit data untuk dihitung. Normalisasi data dengan menghitung skor-z sebagai berikut:

\[x'=(x-\mu)/\sigma\\ \begin{align*} \text{where:}\quad \mu &= \text{mean}\\ \sigma &= \text{standard deviation}\\ \end{align*} \]

Mari kita lihat kesamaan antara contoh dengan dan tanpa normalisasi. Pada Gambar 1, Anda mendapati bahwa warna merah tampaknya lebih mirip biru daripada kuning. Namun, fitur pada sumbu x dan y tidak memiliki skala yang sama. Oleh karena itu, kesamaan yang diamati mungkin merupakan artefak dari data yang tidak diskalakan. Setelah normalisasi menggunakan skor-z, semua fitur memiliki skala yang sama. Sekarang, Anda mendapati bahwa warna merah sebenarnya lebih mirip dengan warna kuning. Jadi, setelah menormalisasi data, Anda dapat menghitung kesamaan dengan lebih akurat.

Dua grafik yang membandingkan data fitur sebelum dan setelah normalisasi
Gambar 1: Perbandingan data fitur sebelum dan sesudah normalisasi.

Singkatnya, terapkan normalisasi jika salah satu hal berikut berlaku:

  • Data Anda memiliki distribusi Gaussian.
  • Set data Anda tidak memiliki cukup data untuk membuat kuantil.

Menggunakan Transformasi Log

Terkadang, set data sesuai dengan distribusi power law yang mengelompokkan data di bagian bawah. Pada Gambar 2, merah lebih dekat ke kuning daripada biru.

Diagram batang dengan sebagian besar data berada di ujung bawah
Gambar 2: Distribusi hukum daya.

Proses distribusi power-law menggunakan transformasi log. Pada Gambar 3, transformasi log menciptakan distribusi yang lebih halus, dan merah lebih dekat ke biru daripada kuning.

Grafik yang menampilkan distribusi normal (Gaussian)
Gambar 3: Distribusi normal (Gaussian).

Menggunakan Quantiles

Normalisasi dan transformasi log menangani distribusi data tertentu. Bagaimana jika data tidak sesuai dengan distribusi Gaussian atau hukum daya? Apakah ada pendekatan umum yang berlaku untuk setiap distribusi data?

Mari kita coba memproses proses distribusi ini lebih dulu.

Grafik yang menunjukkan distribusi data sebelum pemrosesan awal
Gambar 4: Distribusi yang tidak dapat dikategorikan sebelum pra-pemrosesan.

Secara intuitif, jika kedua contoh hanya memiliki beberapa contoh di antara keduanya, kedua contoh ini serupa, terlepas dari nilai keduanya. Sebaliknya, jika kedua contoh tersebut memiliki banyak contoh di antara keduanya, kedua contoh tersebut akan kurang mirip. Dengan demikian, kesamaan antara dua contoh akan menurun seiring dengan meningkatnya jumlah contoh di antara contoh tersebut.

Menormalisasi data hanya mereproduksi distribusi data karena normalisasi adalah transformasi linear. Menerapkan transformasi log juga tidak akan memunculkan intuisi Anda tentang cara kerja kesamaan, seperti yang ditunjukkan pada Gambar 5 di bawah.

Grafik yang menunjukkan distribusi data setelah transformasi log
Gambar 5: Distribusi setelah transformasi log.

Sebagai gantinya, bagi data menjadi interval dengan setiap interval berisi jumlah contoh yang sama. Batas interval ini disebut kuantil.

Konversi data Anda menjadi kuantil dengan melakukan langkah-langkah berikut:

  1. Tentukan jumlah interval.
  2. Tentukan interval sehingga setiap interval memiliki jumlah contoh yang sama.
  3. Ganti setiap contoh dengan indeks interval kemunculannya.
  4. Pindahkan indeks ke rentang yang sama dengan data fitur lainnya dengan menskalakan nilai indeks ke [0,1].
Grafik yang menunjukkan data setelah konversi
  menjadi kuantil. Garis mewakili 20 interval.]
Gambar 6: Distribusi setelah konversi menjadi kuantil.

Setelah mengonversi data menjadi kuantil, kemiripan antara dua contoh tersebut berbanding terbalik dengan jumlah contoh di antara kedua contoh tersebut. Atau, secara matematis, dengan “x” adalah contoh dalam set data:

  • \(sim(A,B) \approx 1 − | \text{prob}[x > A] − \text{prob}[x > B] |\)
  • \(sim(A,B) \approx 1 − | \text{quantile}(A) − \text{quantile}(B) |\)

Quantiles adalah pilihan default terbaik untuk mengubah data. Namun, untuk membuat kuantil yang merupakan indikator andal dari distribusi data yang mendasarinya, Anda membutuhkan banyak data. Prinsipnya adalah untuk membuat \(n\) kuantil, Anda harus memiliki setidaknya \(10n\) contoh. Jika Anda tidak memiliki cukup data, tetap gunakan normalisasi.

Periksa Pemahaman Anda

Untuk pertanyaan berikut, asumsikan Anda memiliki data yang cukup untuk membuat kuantil.

Pertanyaan Satu

Plot yang menampilkan tiga distribusi data
Bagaimana Anda akan memproses distribusi data ini?
Buat kuantil.
Benar. Karena distribusi tidak cocok dengan distribusi data standar, Anda harus kembali untuk membuat kuantil.
Normalkan.
Anda biasanya menormalisasi data jika:
  • Distribusi data adalah Gaussian.
  • Anda memiliki insight tentang apa yang diwakili oleh data, yang memberi tahu Anda bahwa data tidak boleh diubah secara nonlinear. Akibatnya, Anda menghindari kuantil dan memilih normalisasi sebagai gantinya.
Kedua kasus ini tidak berlaku. Distribusi data bukan Gaussian karena tidak simetris. Dan Anda tidak memiliki insight tentang apa yang dimaksud dengan nilai tersebut di dunia nyata.
Log transformasi.
Bukan pilihan terbaik karena ini bukan distribusi power-law yang sempurna.

Pertanyaan Dua

Plot yang menampilkan tiga distribusi data
Bagaimana Anda akan memproses distribusi data ini?
Normalkan.
Benar. Ini adalah distribusi Gaussian.
Buat kuantil.
Salah. Karena ini adalah distribusi Gaussian, transformasi yang disukai adalah normalisasi.
Log transformasi.
Salah. Hanya terapkan transformasi log ke distribusi hukum daya.

Data Tidak Ada

Jika set data memiliki contoh dengan nilai yang tidak ada untuk fitur tertentu, tetapi contoh tersebut jarang terjadi, Anda dapat menghapus contoh tersebut. Jika contoh seperti itu sering terjadi, kita dapat memilih untuk menghapus semua fitur ini, atau memprediksi nilai yang tidak ada dari contoh lain dengan menggunakan model machine learning. Misalnya, Anda dapat menyimpulkan data numerik yang tidak ada dengan menggunakan model regresi yang dilatih pada data fitur yang ada.