Bagaimana cara melakukan rekayasa fitur pada fitur yang tidak dikenal?

19

Saya berpartisipasi dalam kompetisi kaggle. Dataset memiliki sekitar 100 fitur dan semuanya tidak diketahui (dalam hal apa yang sebenarnya mereka wakili). Pada dasarnya mereka hanya angka.

Orang-orang melakukan banyak rekayasa fitur pada fitur-fitur ini. Saya bertanya-tanya bagaimana tepatnya seseorang dapat melakukan rekayasa fitur pada fitur yang tidak diketahui? Dapatkah seseorang tolong bantu saya memahami ini dan beberapa tips tentang bagaimana saya bisa melakukan rekayasa fitur pada fitur yang tidak dikenal?

pengguna2409011
sumber

Jawaban:

19

Anda tidak perlu pengetahuan domain (pengetahuan tentang apa artinya data Anda ) untuk melakukan rekayasa fitur (menemukan cara yang lebih ekspresif dalam membingkai data Anda).


Seperti yang dijelaskan Tu N. , Anda dapat menemukan kombinasi fitur "cepat dan kotor" yang dapat membantu dengan cukup mudah. Diberikan keluaran dan fitur individual , Anda dapat mengambil transformasi berikut, . Pemeriksaan cepat kegunaan transformasi adalah jika korelasi antara lebih tinggi dari korelasi antara .x x { e x , log ( x ) , x 2 , x 3 , tanh ( x ) } { y , x } { y , x }yxx{ex,log(x),x2,x3,tanh(x)}{y,x}{y,x}

Peringatan pada korelasi: Korelasi tidak menunjukkan segalanya dan tergantung pada model yang Anda gunakan (sangat non-linear seperti NN atau RF) dan interaksi dengan variabel lain, perubahan dalam korelasi dapat berarti apa-apa.

Namun, jika Anda menggunakan model linier sederhana seperti regresi logistik, itu adalah indikator kinerja yang OK. Namun, cara terbaik untuk mengevaluasi transformasi seperti itu, sebagaimana dicatat oleh Fokhruz Zaman , adalah membangun sebuah model dengan dan tanpa fitur yang diubah, dan melihat bagaimana kesalahan validasi (pada lipatan Validasi Lintas Anda) berkembang.

Agak mudah untuk melihat transformasi fitur tunggal dengan cara ini. Itu berlaku untuk banyak data, di mana hubungan yang lebih ekspresif antara input dan output Anda bisa pada skala yang berbeda. Sebagai contoh, hubungan antara Penghasilan dan "Kebahagiaan" tampaknya bersifat logaritmik, tetapi Anda tidak akan pernah mencatat log penghasilan peserta secara langsung.


Menemukan kombinasi fitur lebih sulit. Sebagai permulaan, jika Anda ingin menguji setiap penambahan 2 fitur, dan Anda memiliki fitur , Anda memiliki urutan transformasi untuk diuji. Untuk menemukan transformasi seperti itu, Anda dapat menerapkan model nonlinear (seperti NN atau RF) untuk masalah dan mencoba melihat apa yang sedang dipelajari. Jika Anda dapat mengidentifikasi apa yang dilakukan lapisan menengah dalam NN, Anda dapat melakukan pra-komputasi hasilnya dan menambahkannya sebagai fitur baru. Tidak perlu menghitungnya lagi, dan mungkin akan mencoba mempelajari sesuatu yang baru.D 2DD2

Mungkin sulit untuk menafsirkan representasi internal NN, atau bahkan menafsirkan pentingnya fitur di Hutan Acak. Metode yang lebih mudah, dan mungkin lebih cocok untuk tujuan ini, model akan Meningkatkan dengan pohon keputusan. Ada banyak perpustakaan yang menerapkan Boosting, dan jika Anda masuk ke dalam persaingan Kaggle seperti yang tampaknya disiratkan oleh pos Anda, XGBoost tampaknya digunakan oleh banyak peserta, sehingga Anda mungkin menemukan beberapa bantuan / tutorial tentang apa yang akan saya uraikan.

Pertama, jalankan algoritme peningkatan Anda menggunakan hanya tunggul , pohon keputusan 1 tingkat. Tunggul sangat lemah, tetapi Meningkatkan membuatnya menjadi model yang masuk akal. Ini akan bertindak sebagai garis dasar Anda. Bergantung pada pustaka yang Anda gunakan, Anda harus dapat menampilkan dengan mudah fitur mana yang paling banyak digunakan, dan Anda harus memplotnya terhadap respons (atau melakukan histogram jika responsnya kategorikal) untuk mengidentifikasi beberapa pola. Ini mungkin memberi Anda intuisi tentang apa yang akan menjadi transformasi fitur tunggal yang baik.

Selanjutnya, jalankan algoritma Boosting dengan pohon keputusan 2-tingkat. Model ini jauh lebih kompleks daripada yang sebelumnya; jika dua variabel yang diambil bersama-sama memiliki kekuatan lebih dari yang diambil secara individual, model ini harus mengungguli yang sebelumnya (sekali lagi, tidak dalam hal kesalahan pelatihan, tetapi pada kesalahan validasi!). Berdasarkan ini, Anda harus dapat mengekstraksi variabel mana yang sering digunakan bersama, dan ini akan mengarahkan Anda ke transformasi multi-fitur yang potensial.


Pada materi terkait, saya akan menyarankan video berikut karena mudah diikuti

Mengedipkan mata
sumber
4

Anda dapat mengambil kombinasi berbagai fitur seperti jumlah fitur: feat_1 + feat_2 + feat_3..., atau produk dari fitur tersebut. Atau Anda dapat mengubah fitur dengan log, atau eksponensial, sigmoid ... atau bahkan menghapus fitur numerik menjadi fitur kategorikal. Ini adalah ruang tanpa batas untuk dijelajahi.

Kombinasi atau transformasi apa pun yang meningkatkan kinerja Cross-Validation atau Test Set Anda, maka Anda harus menggunakannya.

Tu N.
sumber
2
Saya akan mengambil sedikit masalah dengan "Kombinasi atau transformasi apa pun yang meningkatkan kinerja Cross-Validation atau Test Set Anda maka Anda harus menggunakannya." Mencoba hal-hal buta sampai sesuatu meningkatkan metrik kinerja Anda dapat menghasilkan menemukan hubungan yang tidak masuk akal dan menyebabkan overfitting. Ini benar-benar dapat merusak kinerja pada pengamatan baru di jalan.
Hersheezy
1

Bisakah Anda menjelaskan lebih banyak dengan contoh spesifik tentang pernyataan Anda berikut ini?

The dataset has around 100 features and all are unknown (in terms of what actually they represent). Basically they are just numbers.

Saya tidak yakin bagaimana Anda bisa melakukan Teknik Fitur tanpa pemahaman yang baik tentang Kumpulan Data Anda dan atribut yang diberikan !!

Data tabular dijelaskan dalam bentuk observasi atau instance (baris) yang terdiri dari variabel atau atribut (kolom). Atribut dapat berupa fitur.

"Gagasan fitur, terpisah dari atribut, lebih masuk akal dalam konteks masalah. Fitur adalah atribut yang berguna atau bermakna untuk masalah Anda. Ini adalah bagian penting dari pengamatan untuk belajar tentang struktur masalah yang dimodelkan ... ... ...

Dalam visi komputer, gambar adalah pengamatan, tetapi fitur dapat menjadi garis dalam gambar.

Dalam pemrosesan bahasa alami, dokumen atau tweet dapat menjadi pengamatan, dan frasa atau jumlah kata dapat menjadi fitur.

Dalam pengenalan ucapan, ucapan bisa menjadi pengamatan, tetapi fitur mungkin satu kata atau fonem. "

Silakan kunjungi URL berikut untuk lebih lanjut:

Temukan Fitur Rekayasa, Cara Insinyur Fitur dan Cara Mendapatkan Bagus

Fokhruz Zaman
sumber
Atribut dalam kasus OP telah dianonimkan ke titik di mana pengetahuan domain tidak dapat digunakan. Ini sangat umum di kompetisi Kaggle, namun bentuk terbatas dari fitur engineering masih memungkinkan. Biasanya fitur baru dibuat secara massal kemudian diuji, sebagai lawan menggunakan pengetahuan subjek untuk memandu generasi mereka. Contoh: kaggle.com/c/bnp-paribas-cardif-claims-management/data
Neil Slater
seperti yang dikatakan Neil, fitur-fiturnya dianonimkan, itulah yang saya maksudkan dari pernyataan saya itu.
user2409011