Representasi: Kualitas Fitur Baik

Kita telah mengeksplorasi cara untuk memetakan data mentah ke dalam vektor fitur yang sesuai, tetapi itu hanya sebagian dari prosesnya. Sekarang kita harus mengeksplorasi jenis nilai apa yang benar-benar membuat fitur baik dalam vektor fitur tersebut.

Menghindari nilai fitur diskret yang jarang digunakan

Nilai fitur baik akan muncul lebih dari 5 kali dalam kumpulan data. Tindakan ini memungkinkan model mempelajari hubungan nilai fitur ini dengan label. Artinya, memiliki banyak contoh dengan nilai diskret yang sama memberi model kesempatan untuk melihat fitur dalam setelan yang berbeda, dan pada akhirnya, menentukan kapan itu merupakan prediktor yang baik untuk label. Misalnya, fitur house_type kemungkinan akan berisi banyak contoh yang nilainya adalah victorian:

house_type: victorian

Sebaliknya, jika nilai fitur hanya muncul sekali atau sangat jarang, model tidak dapat membuat prediksi berdasarkan fitur tersebut. Misalnya, unique_house_id adalah fitur yang buruk karena setiap nilainya hanya akan digunakan sekali, sehingga model tidak dapat mempelajari apa pun:

unique_house_id: 8SK982ZZ1242Z

Lebih memilih makna yang jelas dan pasti

Setiap fitur harus memiliki makna yang jelas dan pasti bagi siapa pun dalam proyek. Misalnya, fitur baik berikut diberi nama dengan jelas dan nilainya masuk akal sehubungan dengan namanya:

 house_age_years: 27 

Sebaliknya, makna dari nilai fitur berikut cukup sulit diuraikan oleh siapa pun kecuali engineer yang membuatnya:

house_age: 851472000

Pada beberapa kasus, data yang memiliki derau (bukan pilihan rekayasa yang buruk) menyebabkan nilai yang tidak jelas. Misalnya, user_age_years berikut berasal dari sumber yang tidak memeriksa nilai yang sesuai:

user_age_years: 277

Jangan gabungkan nilai "ajaib" dengan data aktual

Fitur floating point yang baik tidak berisi nilai "ajaib" atau diskon di luar jangkauan yang aneh. Misalnya, fitur menyimpan nilai floating point antara 0 dan 1. Jadi, nilai seperti berikut diperbolehkan:

quality_rating: 0.82
quality_rating: 0.37

Namun, jika pengguna tidak memasukkan quality_rating, mungkin set data menunjukkan ketidakhadirannya dengan nilai ajaib seperti berikut:

quality_rating: -1

Untuk menandai nilai ajaib secara eksplisit, buat fitur Boolean yang menunjukkan apakah quality_rating disediakan atau tidak. Beri fitur Boolean ini nama seperti is_quality_rating_defined.

Dalam fitur asli, ganti nilai ajaib sebagai berikut:

  • Untuk variabel yang menggunakan set nilai terbatas (variabel diskret), tambahkan nilai baru ke set tersebut dan gunakan untuk menunjukkan bahwa nilai fitur hilang.
  • Untuk variabel berkelanjutan, pastikan nilai yang hilang tidak memengaruhi model dengan menggunakan nilai rata-rata data fitur.

Perhitungkan ketidakstabilan upstream

Definisi fitur tidak boleh berubah dari waktu ke waktu. Misalnya, nilai berikut berguna karena nama kota mungkin tidak akan berubah. (Perhatikan bahwa kita masih perlu mengonversi string seperti "br/sao_paulo" menjadi vektor one-hot.)

city_id: "br/sao_paulo"

Namun, mengumpulkan nilai yang disimpulkan oleh model lain akan menimbulkan biaya tambahan. Mungkin nilai "219" saat ini mewakili Sao Paulo, tetapi representasi tersebut dapat dengan mudah berubah pada penggunaan model lain di masa mendatang:

inferred_city_cluster: "219"