6  Pembentukan Fitur Turunan

Data mentah sering belum langsung menjawab pertanyaan prediksi. Pertanyaan seperti apakah belanja pelanggan sedang meningkat atau sudah berapa lama pelanggan tidak aktif memerlukan kolom baru yang diturunkan dari kolom yang sudah ada. Kolom baru tersebut dapat berupa rasio, selisih, interaksi, agregat riwayat, jarak waktu, atau representasi siklik. Setiap fitur turunan merupakan hipotesis tentang struktur masalah yang sedang dihadapi.

Hipotesis semacam ini dapat membantu, tetapi dapat juga salah (Zheng and Casari 2018). Penyebut rasio dapat bernilai nol. Agregat riwayat dapat tanpa sengaja memakai masa depan. Kombinasi fitur dapat tumbuh terlalu banyak dan membawa noise. Bab ini membahas pembentukan fitur turunan melalui operasi aritmetika dasar, ekspansi polinomial, agregasi berbasis grup, fitur relasional dengan kebenaran titik-dalam-waktu (point-in-time correctness), fitur berbasis domain, serta fitur tanggal dan siklus. Bab ini juga menguraikan risiko ledakan fitur (feature explosion) dan cara memvalidasi apakah fitur baru benar-benar menambah nilai.

6.1 Rasio, Selisih, dan Fitur Interaksi

Operasi aritmetika sederhana sering menjadi pintu pertama pembentukan fitur turunan. Rasio menjawab pertanyaan relatif tentang pembanding yang membuat suatu nilai terlihat besar atau kecil. Contoh kerja pada Bagian ini menggunakan dataset Online Retail, yaitu catatan transaksi sebuah toko online. Setiap baris mencatat satu item dalam invoice, dengan identitas pelanggan, waktu transaksi, jumlah barang, dan harga unit. Setelah catatan tersebut diringkas menjadi level pelanggan, rata-rata belanja per invoice membagi total belanja dengan jumlah invoice, sedangkan nilai per item membandingkan gross value dengan jumlah unit. Dua pelanggan dapat mempunyai total belanja yang sama, tetapi pola transaksinya berbeda jika yang satu berbelanja sedikit namun sering, sementara yang lain berbelanja besar hanya sesekali.

Selisih menyatakan jarak, perubahan, atau deviasi dari acuan. Nilai invoice bulan ini dikurangi rata-rata nilai invoice sebelumnya memberi sinyal perubahan perilaku. Nilai aktual dikurangi nilai yang diharapkan memberi sinyal penyimpangan. Dalam data ini, selisih hari sejak pembelian terakhir mengubah tanggal mentah menjadi recency, yaitu jarak waktu yang langsung dapat dipakai model sebagai ukuran kebaruan aktivitas. Fitur seperti ini membuat arah dan besar perubahan lebih eksplisit daripada tanggal aslinya.

Interaksi dipakai ketika dua kondisi bersama-sama mempunyai makna yang tidak muncul dari masing-masing kolom secara terpisah. Secara sederhana, interaksi dua fitur dapat ditulis sebagai berikut.

\[x_{\text{interaksi}} = x_i \times x_j\]

Jika jumlah unit dikalikan dengan harga unit, fitur baru tersebut menjadi nilai kotor baris item. Pada riwayat pelanggan, jumlah invoice dapat berarti lain ketika recency sangat pendek dibanding ketika pelanggan sudah lama tidak bertransaksi. Interaksi menyatakan hubungan bersyarat seperti itu, ketika makna satu fitur berubah saat fitur lain berubah.

Kekuatan rasio, selisih, dan interaksi terletak pada maknanya. Fitur tersebut membantu model yang sederhana menangkap hubungan non-linear atau bersyarat tanpa langsung berpindah ke model yang lebih kompleks. Risikonya juga datang dari operasi yang sama. Rasio harus menjaga penyebut nol atau sangat kecil. Selisih hanya masuk akal jika satuannya sepadan. Interaksi mudah berkembang menjadi terlalu banyak kombinasi. Outlier pada salah satu komponen dapat membesar pada fitur hasil.

Tabel 6.1 merangkum keluarga fitur turunan yang digunakan dalam bab ini. Setiap baris menunjukkan struktur yang ingin dinyatakan, contoh bentuknya, dan risiko yang perlu diperiksa kembali saat fitur dievaluasi.

Table 6.1: Keluarga fitur turunan
Keluarga Mengekspresikan Contoh Risiko utama
Rasio Proporsi relatif, skala terhadap acuan Belanja per invoice Penyebut nolkecil dan outlier
Selisih Perubahan, defisit, gap Hari sejak pembelian terakhir Satuan tidak sepadan
Interaksi Efek gabungan bersyarat Quantity x UnitPrice Ledakan kombinasi
Agregat grupriwayat Konteks entitas dan sejarah Belanja 30 hari terakhir Leakage lintas cutoff
Temporalsiklik Ritme dan jarak waktu Jam, hari, sincos Pilihan periode salah
Domain Pengetahuan pakar BMI, LTV Aturan usang, proksi sensitif

Pola pada tabel tersebut menunjukkan bahwa fitur turunan tidak perlu dikumpulkan sebanyak mungkin. Fitur dipilih ketika ada struktur yang memang perlu dinyatakan. Setelah operasi aritmetika dasar, pangkat dan interaksi otomatis menjadi bentuk yang paling cepat memperbesar ruang fitur.

6.2 Fitur Polinomial

Fitur polinomial memperluas fitur asli menjadi pangkat dan interaksi. Jika dua fitur awal adalah \(x_1\) dan \(x_2\), pemetaan derajat dua dapat ditulis sebagai berikut.

\[\phi(x_1, x_2) = [\,1,\ x_1,\ x_2,\ x_1^2,\ x_1 x_2,\ x_2^2\,]\]

Angka 1 pada vektor tersebut merupakan bias term. Dua anggota berikutnya adalah fitur linear asli. Setelah itu muncul dua suku kuadrat, \(x_1^2\) dan \(x_2^2\), serta satu suku interaksi, \(x_1 x_2\). Dengan pemetaan ini, model linear tidak hanya bekerja pada garis lurus di ruang asli. Model menerima data pada ruang fitur yang lebih tinggi, sehingga batas linear di ruang baru dapat tampak sebagai kurva ketika diproyeksikan kembali ke ruang awal. Jika model hilir sudah mengestimasi intercept, gunakan include_bias=False pada ekspansi polinomial agar hanya ada satu mekanisme konstanta.

Gambar 6.1 menampilkan intuisi tersebut. Panel kiri memperlihatkan data dua dimensi yang tidak bisa dipisahkan oleh satu garis. Panel kanan menambahkan sumbu kuadrat atau interaksi. Pemisah datar di ruang baru kemudian berpadanan dengan batas melengkung pada ruang asli.

Figure 6.1: Proyeksi polinomial dari ruang asli ke ruang fitur

Manfaat tersebut dibayar dengan pertumbuhan jumlah kolom. Dengan \(d\) fitur input dan derajat 2, ekspansi memuat \(d\) fitur linear, \(\binom{d}{2}\) interaksi pasangan, dan \(d\) suku kuadrat. Untuk \(d = 100\), jumlahnya menjadi 100 + 4.950 + 100 = 5.150 kolom tanpa bias, atau 5.151 jika bias dihitung. Jika derajat naik menjadi 3, jumlah kolom dapat masuk ke ratusan ribu untuk skala input yang sama.

Pertumbuhan ini mempunyai konsekuensi langsung. Suku polinomial dapat memiliki magnitudo yang jauh berbeda dari fitur asal, sehingga scaling sering diperlukan, terutama untuk model linear atau model berbasis jarak. Derajat yang terlalu tinggi juga mudah overfit dan sulit dijelaskan. Interaksi \(x_1 x_2 x_3\) mungkin meningkatkan skor validasi pada satu split, tetapi belum tentu stabil atau wajar secara domain.

Karena itu, fitur polinomial biasanya lebih aman dipakai secara selektif. Pilih fitur asal yang memang mempunyai alasan untuk berinteraksi, batasi derajat pada 2 atau 3, gunakan opsi seperti interaction_only bila hanya interaksi yang diinginkan, lalu pasangkan dengan regularisasi atau seleksi fitur. Sinyal dari banyak masalah, meskipun demikian, tidak selalu muncul dari kombinasi kolom dalam satu baris. Sering kali satu sampel baru bermakna setelah ditempatkan di dalam riwayatnya.

6.3 Agregasi dan Fitur Berbasis Grup

Satu baris kejadian jarang cukup untuk menjawab pertanyaan tentang perilaku. Prediksi churn membutuhkan riwayat pelanggan. Prediksi risiko pasien membutuhkan kunjungan, obat, dan hasil lab sebelumnya. Prediksi performa siswa membutuhkan riwayat kehadiran, nilai, dan aktivitas belajar. Agregasi mengubah banyak catatan menjadi fitur untuk satu sampel.

Agregasi dapat berupa jumlah, total, rata-rata, median, maksimum, minimum, atau distinct count. Unit agregasinya bergantung pada masalah, misalnya pelanggan, sekolah, produk, wilayah, perangkat, pasien, atau akun. Untuk pelanggan, fitur agregat dapat berupa jumlah pembelian 30 hari terakhir, rata-rata nilai transaksi, jumlah komplain sebelum tanggal prediksi, atau jumlah kategori produk yang pernah dibeli.

Agregasi tidak hanya meringkas banyak baris. Agregasi juga memberi konteks terhadap kebiasaan entitas. Transaksi Rp2.000.000 mungkin biasa bagi satu pelanggan dan aneh bagi pelanggan lain. Jika fitur menyatakan “transaksi ini dibandingkan dengan rata-rata pelanggan tersebut”, model mendapat ukuran yang lebih dekat dengan sinyal perilaku. Pola ini sering muncul pada deteksi anomali, churn, risiko kredit, dan pemantauan operasional.

Batas waktunya harus jelas. Jika prediksi dibuat pada 1 Agustus, agregat “total komplain tahun ini” tidak boleh menghitung komplain pada September atau Oktober. Kesalahan seperti ini sering tersembunyi karena query tetap berjalan normal dan skor eksperimen tampak baik. Masalahnya baru terlihat saat produksi karena masa depan belum tersedia. Kemunculan pelanggan yang sama di data pelatihan dan validasi bukan otomatis leakage. Untuk memprediksi masa depan pelanggan yang sudah dikenal, gunakan evaluasi temporal dan fitur yang benar pada titik waktunya. Gunakan pemisahan sadar grup (group-aware split) ketika tujuan penerapan memang generalisasi ke pelanggan baru yang tidak muncul dalam pelatihan.

Tabel 6.2 merangkum empat pola jendela agregasi yang umum. Kolom tengah menunjukkan pertanyaan yang dijawab oleh tiap pola, sehingga pilihan jendela tidak hanya menjadi pilihan teknis, tetapi juga pilihan makna.

Table 6.2: Pola jendela agregasi
Pola Menjawab pertanyaan Contoh
Sliding window Bagaimana perilaku terkini? Total belanja 30 hari terakhir
Expanding window Bagaimana akumulasi sejarah? Total transaksi sejak akun dibuat
Recency-weighted Pentingnya tren terbaru Rata-rata berbobot peluruhan eksponensial
Session-based Bagaimana perilaku per episode? Agregat di-reset setelah jeda inaktif

Pada jendela berbobot kebaruan, bobot sebuah event dapat ditulis sebagai berikut.

\[w_i = e^{-\lambda \cdot \Delta t_i}\]

dengan \(\Delta t_i\) sebagai umur event terhadap waktu prediksi, dan \(\lambda\) sebagai pengatur kecepatan penurunan bobot. Event terbaru mendapat bobot lebih besar daripada event lama.

Gambar 6.2 meletakkan keempat pola tersebut pada satu timeline pelanggan. Cutoff menjadi garis batas. Semua bracket dan shading berada sebelum garis itu, karena hanya masa lalu yang sah dipakai sebagai fitur.

Figure 6.2: Pola jendela agregasi pada timeline pelanggan

Ekstraksi fitur deret waktu dapat diotomatisasi. Library seperti tsfresh, misalnya, dapat menghasilkan ratusan fitur ringkasan dari tiap seri dan menyediakan penyaringan signifikansi. Kekuatan ini berguna, tetapi juga menjadi pintu masuk ke feature explosion. Otomatisasi agregasi tetap membutuhkan cutoff yang benar dan evaluasi kontribusi fitur. Ide jendela tersebut menjadi lebih penting lagi ketika riwayat tersimpan dalam banyak tabel dan banyak event log.

Pendalaman

Agregasi berbobot kebaruan

Rata-rata berbobot kebaruan dapat ditulis sebagai \(\bar{v} = \dfrac{\sum_i v_i\, e^{-\lambda \Delta t_i}}{\sum_i e^{-\lambda \Delta t_i}}\). Nilai \(v_i\) adalah nilai event ke-\(i\), sedangkan \(\Delta t_i\) adalah jarak waktu event itu dari cutoff. Parameter \(\lambda\) menentukan kecepatan peluruhan. Half-life menyatakan jumlah hari hingga bobot sebuah event tinggal setengah. Session reset mengejar tujuan serupa untuk perilaku yang episodik. Semua \(\Delta t_i\) diukur terhadap cutoff, sehingga aturan waktu dari Bab 1 masuk langsung ke dalam rumus.

6.4 Fitur Relasional dan Event Log untuk Join, Agregasi, dan Point-in-Time Correctness

Riwayat tidak selalu tersimpan sebagai satu timeline yang rapi. Dalam sistem nyata, informasi pelanggan berada di tabel profil, transaksi berada di event log, alamat berubah dalam tabel riwayat, sedangkan komplain, pembayaran, login, hasil lab, dan aktivitas aplikasi mempunyai timestamp masing-masing. Fitur relasional terbentuk saat tabel-tabel tersebut digabung, dipotong menurut waktu, lalu diringkas ke unit prediksi.

Kesalahan pertama adalah fan-out. Misalkan satu baris sampel mewakili satu pelanggan pada satu tanggal prediksi. Jika baris tersebut langsung digabung dengan semua transaksi pelanggan, satu baris pelanggan berubah menjadi banyak baris. Model tidak lagi menerima satu sampel per pelanggan, tetapi duplikasi yang mengubah bobot observasi dan dapat merusak target. Biasanya solusi yang benar bukan join mentah, melainkan agregasi event ke unit sampel, seperti jumlah transaksi, total belanja, rata-rata nilai transaksi, atau statistik lain sebelum tanggal prediksi.

Kesalahan kedua lebih halus. Bentuk join sudah benar, tetapi waktunya salah. Point-in-time correctness berarti setiap nilai yang digabung atau dihitung harus valid dan sudah tersedia pada cutoff. Karena itu, event time perlu dibedakan dari waktu ketersediaan atau waktu ingesti. Catatan yang peristiwanya terjadi sebelum cutoff, tetapi baru tiba atau direvisi sesudahnya, belum boleh masuk ke snapshot historis tersebut. Jika model churn memakai cutoff 1 Agustus, fitur “total komplain tahun ini” tidak boleh menghitung komplain September dan Oktober ataupun komplain Juli yang baru tercatat setelah 1 Agustus. Skor validasi dapat tampak sangat baik bila eksperimen memakai informasi yang pada saat keputusan sebenarnya belum tersedia.

As-of join membantu menjaga batas waktu tersebut. Alih-alih mengambil sembarang baris yang cocok, as-of join mencocokkan setiap sampel dengan catatan terakhir yang waktu berlaku atau waktu kejadiannya tidak melewati cutoff dan sudah tersedia pada saat itu. Snapshot pelanggan pada 1 Agustus, misalnya, memakai alamat terakhir yang diketahui pada 1 Agustus, bukan alamat terbaru di database saat query dijalankan. Pada data kesehatan, prediksi saat pasien masuk rumah sakit hanya boleh memakai hasil lab yang sudah keluar sebelum waktu prediksi, bukan hasil yang sampelnya sudah diambil tetapi baru tersedia setelahnya.

Gambar 6.3 membandingkan dua alur. Panel kiri menunjukkan join naif yang membuat satu baris pelanggan menjadi banyak baris transaksi. Panel kanan menunjukkan pre-aggregation dan as-of join. Semua event dipotong oleh index time, diringkas ke unit pelanggan, lalu menghasilkan satu baris fitur.

Figure 6.3: Fan-out join dan as-of join pada fitur relasional

Relational feature synthesis dapat mengotomatisasi sebagian pola ini. Alat seperti Featuretools membangun fitur dari relasi antarentitas mengikuti gagasan deep feature synthesis (Kanter and Veeramachaneni 2015), misalnya agregasi transaksi per pelanggan atau statistik produk per kategori. Namun, otomatisasi tidak menghapus keputusan konseptual. Analis tetap harus mendefinisikan entitas, relasi, time index, cutoff, dan unit prediksi. Pada praktik harian dalam SQL atau pandas, point-in-time correctness dari Bab 1 berubah menjadi aturan kerja. Setelah bentuk relasi dan waktu ketersediaannya aman, masih ada fitur yang tidak lahir dari struktur tabel, melainkan dari pengetahuan domain.

6.5 Fitur Berbasis Domain

Ketika data sudah rapi secara bentuk dan waktu, pertanyaan berikutnya adalah makna. Sebagian fitur terbaik tidak lahir dari kombinasi mekanis, tetapi dari pengetahuan domain. Seorang ahli kredit tahu bahwa rasio pemakaian limit dapat lebih bermakna daripada nominal utang. Seorang dokter tahu bahwa kombinasi tanda vital dan hasil lab dapat membentuk skor risiko. Seorang pendidik tahu bahwa kehadiran berturut-turut, tren nilai, dan jumlah percobaan sebelum benar dapat menggambarkan proses belajar.

Fitur domain mengodekan mekanisme, aturan bisnis, ukuran ilmiah, atau definisi institusional. Manfaatnya ada dua. Pertama, fitur semacam ini sering lebih mudah ditafsirkan oleh pemangku kepentingan. Kedua, fitur domain dapat meningkatkan sample efficiency. Ketika data terbatas, pengetahuan yang sudah mapan dapat membantu model belajar lebih cepat daripada menunggu model menemukan pola dari nol.

Contohnya muncul di banyak sektor. Di kesehatan, skor komposit seperti APACHE dan SOFA merangkum banyak variabel klinis menjadi ukuran keparahan atau risiko. Di keuangan, loan-to-value (LTV), debt-service coverage ratio (DSCR), RSI, MACD, dan Altman Z-score merupakan contoh indeks atau indikator yang membawa definisi domain. Dalam learning analytics, time-on-task, attempts-before-correct, login streaks, dan assignment completion ratio merangkum perilaku belajar menjadi fitur yang lebih dekat ke mekanisme pendidikan.

Pola di balik contoh-contoh tersebut sama. Pakar mengompresi beberapa pengukuran mentah menjadi satu variabel yang menjelaskan mekanisme dan tidak berhenti pada korelasi. Karena itu, fitur domain perlu dirancang dan ditinjau bersama orang yang memahami konteksnya. Formula yang sah di satu institusi belum tentu cocok di institusi lain.

Risikonya juga nyata. Aturan domain dapat usang. Fitur dapat menyimpan bias operasional lama. Sebuah rasio atau skor dapat menjadi proksi untuk kelompok sensitif, wilayah tertentu, atau akses layanan yang tidak merata. Fitur domain tetap fitur model yang memerlukan validasi, audit kewajaran, dan pemeriksaan apakah definisinya sesuai dengan tujuan prediksi saat ini.

6.6 Fitur Tanggal, Waktu, dan Siklus

Waktu hampir selalu muncul dalam data aplikasi. Satu timestamp dapat diturunkan menjadi jam, hari dalam minggu, bulan, kuartal, tahun, musim, masa libur, semester sekolah, business hours, usia akun, days since last event, atau days until deadline. Tidak semua turunan waktu perlu dipakai. Pilihannya harus mengikuti domain dan waktu prediksi.

Fitur kalender umumnya jatuh ke tiga kelompok. Pertama, unit absolut seperti hour, day-of-week, month, dan quarter. Kedua, penanda konteks biner seperti weekend, holiday, business hours, atau masa ujian. Ketiga, jarak temporal seperti lama sejak transaksi terakhir, lama sejak login terakhir, atau sisa hari menuju tenggat.

Sebagian variabel waktu bersifat siklik. Pukul 23 dekat dengan pukul 0, Desember dekat dengan Januari, dan Minggu dekat dengan Senin dalam banyak pola aktivitas. Jika jam diperlakukan sebagai angka lurus 0 sampai 23, model berbasis jarak atau linear menempatkan pukul 0 dan 23 di dua ujung yang jauh, padahal secara waktu hanya berjarak satu jam. Geometri fiturnya memberi jarak palsu.

Encoding sin/cos menempatkan nilai siklik pada lingkaran.

\[x_{\sin} = \sin\!\left(\dfrac{2\pi x}{P}\right), \qquad x_{\cos} = \cos\!\left(\dfrac{2\pi x}{P}\right)\]

dengan \(x\) sebagai nilai dalam siklus, dan \(P\) sebagai periode. Nilainya 24 untuk jam, 12 untuk bulan, atau 7 untuk hari dalam minggu. Periode harus mengikuti siklus, bukan nilai maksimum yang kebetulan muncul di data. Untuk jam, pembaginya 24, bukan 23, karena setelah pukul 23 siklus kembali ke 0.

Gambar 6.4 memperlihatkan perbedaannya. Pada garis lurus, 0 dan 23 tampak berjauhan. Pada lingkaran sin/cos, keduanya bersebelahan, sesuai makna waktu.

Figure 6.4: Encoding siklik untuk jam dalam sehari

Transformasi siklik dapat membuang kolom linear asli atau mempertahankannya. Implementasi seperti CyclicalFeatures secara bawaan dapat membagi dengan nilai maksimum yang muncul di data, bukan periode siklus. Untuk jam 0-23, pembagi bawaannya dapat menjadi 23, bukan 24. Pengguna perlu memberi periode yang benar secara eksplisit melalui parameter seperti max_values. Menyimpan jam asli kadang membantu jika ada tren hampir linear sepanjang hari, tetapi pilihan itu dapat mengembalikan masalah jarak palsu. Membuangnya membuat representasi murni siklik. Pilihan ini perlu divalidasi, terutama jika model yang dipakai sensitif terhadap geometri fitur.

6.7 Risiko Feature Explosion

Setiap keluarga fitur pada Tabel 6.1 berguna karena menyatakan struktur tertentu. Kebebasan yang sama dapat berubah menjadi produksi kolom tanpa kendali. Rasio untuk semua pasangan kolom, interaksi polinomial, serta agregat 7, 14, 30, 60, 90, 180, dan 365 hari untuk setiap pelanggan, produk, wilayah, dan kanal dapat menghasilkan puluhan ribu kolom dalam waktu singkat.

Risiko pertama adalah noise domination. Sebagian besar fitur otomatis mungkin tidak membawa sinyal, tetapi tetap memberi model kesempatan menemukan pola kebetulan. Risiko kedua adalah curse of dimensionality. Ketika dimensi tinggi dan sampel terbatas, titik data menjadi jarang di ruang fitur. Batas keputusan lebih mudah berubah menjadi hafalan. Risiko ketiga adalah compute waste. Pencarian split, tuning, penyimpanan, dan monitoring menjadi mahal untuk fitur yang tidak membantu.

Feature explosion juga menyulitkan manusia. Interpretasi model menjadi kabur, debugging pipeline lebih berat, dan perubahan definisi satu kolom mentah dapat berdampak ke banyak fitur turunan. Redundansi antarfitur juga dapat menyebabkan multikolinearitas, terutama pada model linear, sehingga koefisien menjadi tidak stabil walaupun performa prediksi tampak cukup baik.

Gambar 6.5 menunjukkan pertumbuhan jumlah fitur. Kurva polinomial derajat 2, derajat 3, dan rasio pasangan naik cepat ketika jumlah fitur input bertambah. Titik ketika jumlah fitur melebihi jumlah observasi perlu diberi perhatian khusus. Kondisi itu tidak selalu salah, tetapi risiko overfitting dan biaya evaluasi meningkat tajam.

Figure 6.5: Pertumbuhan jumlah fitur turunan

Kendali paling baik adalah generasi berbasis hipotesis. Buat fitur karena ada alasan domain atau mekanisme, bukan karena semua kombinasi bisa dibuat. Setelah itu, gunakan regularisasi, seleksi fitur, ablation, atau validasi lintas waktu untuk memeriksa manfaatnya. Bab 7 melanjutkan persoalan ini dengan metode seleksi fitur yang lebih sistematis.

Pendalaman

Mendeteksi redundansi dengan VIF

Variance inflation factor untuk fitur \(i\) dapat ditulis \(\text{VIF}_i = \dfrac{1}{1 - R_i^2}\), dengan \(R_i^2\) diperoleh dari regresi fitur \(i\) terhadap semua fitur lain. VIF tinggi berarti fitur tersebut sebagian besar dapat direkonstruksi dari fitur lain. Secara konvensional, rentang 5 sampai 10 sering dipakai sebagai sinyal pemeriksaan lebih lanjut, bukan hukum mutlak. Diagnostik ini berguna untuk himpunan fitur turunan yang masuk ke model linear atau parametrik. Tree ensemble lebih toleran terhadap redundansi, tetapi tetap membayar biaya komputasi dan interpretabilitas.

6.8 Memvalidasi Apakah Fitur Baru Membantu

Fitur turunan adalah hipotesis, dan hipotesis perlu diuji. Fitur baru berguna jika mampu memperbaiki tujuan model di bawah evaluasi yang sah, atau memperbaiki interpretabilitas, biaya, stabilitas, atau ketahanan tanpa merusak performa. Train error tidak cukup. Menambah dimensi hampir selalu memudahkan model menurunkan error pelatihan, bahkan ketika fitur tersebut hanya noise.

Cara dasarnya adalah membandingkan baseline feature set dengan dan tanpa fitur baru, atau dengan dan tanpa satu keluarga fitur. Misalnya, model dilatih dengan fitur dasar saja, lalu agregat 30 hari terakhir ditambahkan. Jika skor validasi meningkat secara konsisten di beberapa fold atau periode waktu, fitur tersebut mempunyai bukti awal. Jika skor hanya naik pada satu split, hasilnya perlu dicurigai.

Evaluasi juga harus mempertimbangkan ketersediaan dan biaya. Fitur yang tampak membantu tetapi belum tersedia pada waktu prediksi tidak boleh dipakai. Fitur yang mahal dihitung mungkin tidak cocok untuk sistem real-time. Fitur yang tidak stabil karena definisi bisnis sering berubah dapat menjadi beban pemeliharaan. Fitur yang memperbaiki skor sedikit tetapi menambah risiko proksi sensitif mungkin tidak layak dipertahankan.

Validasi akhir perlu melampaui kenaikan skor semata. Kenaikan tersebut harus sah, stabil, tersedia pada waktu prediksi, wajar secara domain, dan sepadan dengan biayanya. Bab 9 membahas evaluasi kualitas fitur secara lebih sistematis.

Pendalaman

Diagnostik kontribusi fitur melalui ablation, probe, dan atribusi

Group ablation menghapus satu keluarga fitur turunan sekaligus, misalnya rasio, agregat, atau temporal, lalu mengukur penurunan skor validasi. Probe features menambahkan kolom acak sebagai pembanding. Fitur rekayasa yang kalah penting dari probe acak sulit dibedakan dari noise, mengikuti ide shadow features pada Boruta. SHAP menjelaskan bagaimana model terlatih mengalokasikan prediksi kepada fitur; pada fitur yang berkorelasi, pembagian kreditnya dapat bergantung pada asumsi explainer. Nilai SHAP bukan bukti bahwa fitur memberi nilai prediktif tambahan. Untuk menguji nilai tambahan tersebut, gunakan group ablation atau uji permutasi pada prediksi out-of-fold. Semua ini adalah alat diagnosis dan penyaringan, bukan keputusan akhir.

Sintesis Bab

Fitur turunan adalah hipotesis tentang struktur data. Rasio, selisih, interaksi, agregat riwayat, fitur waktu, dan fitur domain masing-masing menyatakan jenis struktur yang berbeda. Tabel 6.1 dapat dipakai sebagai peta awal saat fitur baru dipertimbangkan. Namun, setiap fitur baru membawa asumsi. Satuan harus sepadan, penyebut harus aman, cutoff harus dihormati, periode siklik harus benar, dan definisi domain harus masih relevan.

Agregasi dan join relasional menuntut point-in-time correctness. Fitur yang memakai masa depan melanggar batas evaluasi dan menjadi leakage. Fitur polinomial dan ekstraksi otomatis dapat memperkaya representasi, tetapi juga memicu feature explosion. Pembentukan fitur perlu selalu diikuti alasan yang jelas dan evaluasi yang sah.

Prinsip kerjanya sederhana. Buat fitur karena ada alasan, pasang transformasinya secara reproducible, dan uji kontribusinya dengan evaluasi yang sah. Bab berikutnya melanjutkan pekerjaan ini dari sisi sebaliknya, yaitu memilih fitur mana yang benar-benar layak dipertahankan.

Bacaan Lanjutan

Rujukan

Kanter, James Max, and Kalyan Veeramachaneni. 2015. “Deep Feature Synthesis: Towards Automating Data Science Endeavors.” IEEE International Conference on Data Science and Advanced Analytics (DSAA). https://doi.org/10.1109/DSAA.2015.7344858.

Zheng, Alice, and Amanda Casari. 2018. Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists. O’Reilly Media.