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
:
✔This is a good example: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:
The following is an example of a unique value. This should be avoided.✘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:
✔The meaning of the following value is clear from the label and value.house_age_years: 27
Sebaliknya, makna dari nilai fitur berikut cukup sulit diuraikan oleh siapa pun kecuali engineer yang membuatnya:
✘The following is an example of a value that is unclear. This should be avoidedhouse_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:
✘The following is an example of noisy/bad data. This should be avoided.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:
✔The following is a good example: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:
✘The following is an example of a magic value. This should be avoided.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.)
✔This is a good example: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:
✘The following is an example of a value that could change. This should be avoided.inferred_city_cluster: "219"