Mengapa fitur rekayasa bekerja?


20

Baru-baru ini saya telah belajar bahwa salah satu cara untuk menemukan solusi yang lebih baik untuk masalah ML adalah dengan membuat fitur. Seseorang dapat melakukannya dengan, misalnya, menjumlahkan dua fitur.

Sebagai contoh, kami memiliki dua fitur "serangan" dan "pertahanan" semacam pahlawan. Kami kemudian membuat fitur tambahan yang disebut "total" yang merupakan jumlah dari "serangan" dan "pertahanan". Sekarang yang menurut saya aneh adalah bahwa "serangan" dan "pertahanan" yang tangguh sekalipun hampir sepenuhnya berkorelasi dengan "total" kita masih mendapatkan informasi yang bermanfaat.

Apa matematika di balik itu? Atau apakah saya beralasan salah?

Selain itu, apakah itu bukan masalah, untuk pengklasifikasi seperti kNN, bahwa "total" akan selalu lebih besar dari "serangan" atau "pertahanan"? Jadi, bahkan setelah standarisasi kita akan memiliki fitur yang mengandung nilai dari rentang yang berbeda?


Praktek menjumlahkan dua fitur tentu tidak mewakili "rekayasa fitur" secara umum.
xji

Jawaban:


21

Anda mempertanyakan judul dan isinya sepertinya tidak cocok untuk saya. Jika Anda menggunakan model linier, tambahkan fitur total selain serangan dan pertahanan akan memperburuk keadaan.

Pertama saya akan menjawab mengapa fitur rekayasa bekerja secara umum.

Sebuah gambar bernilai ribuan kata. Gambar ini dapat memberi tahu Anda beberapa wawasan tentang rekayasa fitur dan mengapa ia bekerja ( sumber gambar ):

masukkan deskripsi gambar di sini

  • Data dalam koordinat Cartesian lebih rumit, dan relatif sulit untuk menulis aturan / membangun model untuk mengklasifikasikan dua jenis.

  • Data dalam koordinat Polar jauh lebih mudah :, kita dapat menulis aturan sederhana tentang untuk mengklasifikasikan dua jenis.r

Ini memberi tahu kami bahwa representasi data sangat penting. Di ruang tertentu, jauh lebih mudah untuk melakukan tugas-tugas tertentu daripada ruang lain.

Di sini saya menjawab pertanyaan yang disebutkan dalam contoh Anda (total pada serangan dan pertahanan)

Bahkan, rekayasa fitur yang disebutkan dalam contoh serangan dan pertahanan ini, tidak akan bekerja dengan baik untuk banyak model seperti model linier dan itu akan menyebabkan beberapa masalah. Lihat Multikolinearitas . Di sisi lain, rekayasa fitur tersebut dapat bekerja pada model lain, seperti pohon keputusan / hutan acak. Lihat jawaban @ Imran untuk detailnya.

Jadi, jawabannya adalah tergantung pada model yang Anda gunakan, beberapa rekayasa fitur akan membantu pada beberapa model, tetapi tidak untuk model lain.


Jumlahnya tidak harus collinear dengan tambahan. Lihat misalnya jawaban saya.
Kodiologist

15

Jenis model yang kami gunakan mungkin tidak terlalu efisien untuk mempelajari kombinasi fitur tertentu yang ada.

Sebagai contoh, perhatikan contoh Anda di mana fitur berada adan d, dan kami menggunakan pohon keputusan untuk memprediksi hasil biner yang akan menjadi jika dan jika .a + d < 0 1 a + d 00Sebuah+d<01Sebuah+d0

Karena pohon keputusan hanya dapat dibagi sepanjang sumbu fitur individual, model kami pada akhirnya akan mencoba membangun tangga agar sesuai dengan garis, yang akan terlihat seperti ini:

masukkan deskripsi gambar di sini

Seperti yang Anda lihat ini tidak akan menggeneralisasi dengan sempurna ke data baru. Kita dapat memiliki lingkaran di atas garis keputusan sebenarnya yang berada di bawah batas keputusan kita dan sebaliknya untuk persilangan.

Namun, jika kita menambahkan a+dsebagai fitur maka masalahnya menjadi sepele untuk pohon keputusan. Itu dapat mengabaikan individu adan dfitur dan memecahkan masalah dengan a+d<0tunggul keputusan tunggal .

masukkan deskripsi gambar di sini

Namun, jika Anda menggunakan regresi linier, maka model Anda akan benar-benar mampu mempelajari tanpa menambahkan fitur tambahan.Sebuah+d

Singkatnya, fitur tambahan tertentu dapat membantu tergantung pada jenis model yang Anda gunakan, dan Anda harus berhati-hati untuk mempertimbangkan data dan model ketika fitur teknik.


1
Inilah intinya. Pilihan fitur dan pilihan model harus dipertimbangkan bersama. Ini adalah perangkap umum untuk mencoba dan alasan pemilihan fitur tanpa mempertimbangkan jenis model yang digunakan.
Imran

1
Sebagai contoh jika Anda mencoba hal yang sama dengan regresi linier maka adan dakan cukup dan menambahkan a+dsebagai fitur tidak akan membuat perbedaan.
Imran

Saya telah memperbarui jawaban saya untuk menjadikan ini lebih eksplisit.
Imran

1
Lebih jauh, membelah melintasi garis diagonal membutuhkan satu split. Tangga yang Anda buat "habis" dengan tujuh split.
Akumulasi

3

totaltotalattackdefenseattackdefensetotalattacktotaldefense17

Selain itu, apakah itu bukan masalah, untuk pengklasifikasi seperti kNN, bahwa "total" akan selalu lebih besar dari "serangan" atau "pertahanan"? Jadi, bahkan setelah standarisasi kita akan memiliki fitur yang mengandung nilai dari rentang yang berbeda?

Jika Anda ingin membakukan prediktor Anda, Anda harus melakukannya setelah semuanya dibuat.


1
apakah ini benar? Tentu saja, dalam model linier sederhana, itu tidak: matriksnya [attack, defense, total]tentu saja peringkat 2. Saya bisa membayangkan dalam sesuatu seperti model linier yang dihukum itu bisa membuat perbedaan, tetapi itu didasarkan pada intuisi daripada sepenuhnya bekerja melewatinya. Bisakah Anda menjelaskan mengapa jika attackdan defensetidak berkorelasi kuat total(yang terjadi ketika attackdan defenseberkorelasi negatif sangat), mengapa totaldapat membantu?
Cliff AB

1
@CliffAB Kalau dipikir-pikir, saya agak sedikit fasih di sini. Saya benar dalam mengatakan bahwa fitur yang dibangun dapat berguna ketika tidak berkorelasi kuat dengan prediktor lain, dan yang totaltidak perlu berkorelasi kuat dengan attackatau defense, tetapi Anda tidak akan pernah menggunakan dua prediktor dan jumlah mereka dalam model yang sama, karena linier ketergantungan, dengan menyiratkan korelasi yang kuat antara beberapa dua dari tiga.
Kodiologis

1

Untuk memberikan jawaban umum, rekayasa fitur dalam kebanyakan kasus adalah tentang mengekstraksi fitur yang berarti dari data Anda, jadi jika Anda memberikan lebih banyak informasi ke model Anda, itu jelas harus berperilaku lebih baik. Katakan bahwa data Anda terdiri dari alamat email dalam bentuk 'name.surname@domain.country-code'. Jika Anda menggunakannya sebagaimana adanya dalam model Anda, setiap orang akan ditandai dengan email unik, jadi ini tidak akan banyak memberi tahu kami. Itu hanya memberi tahu kita bahwa satu email mungkin milik orang yang berbeda dari yang lain. Dengan rekayasa fitur, dari alamat seperti itu Anda dapat mengekstrak informasi tentang kemungkinan jenis kelamin (nama), latar belakang keluarga dan etnis (nama keluarga), kebangsaan (domain) dan banyak lagi - ini memberi Anda cukup banyak informasi, bukan?


1

Apa yang ingin Anda capai dengan total "fitur" Anda ? Jika Anda hanya membandingkan pahlawan, serangan dan pertahanan mungkin lebih bermanfaat. Jika Anda akan menemukan tipe build (bagaimana ofensif berorientasi versus seberapa defensif berorientasi) berguna, mungkin serangan / pertahanan akan lebih berguna. Atau mungkin MyAttack - YourDefense lebih berguna.

Itu benar-benar tergantung pada tujuan Anda dan bermuara pada Anda menyuntikkan pengetahuan tambahan ke masalah sehingga Anda bisa mendapatkan jawaban yang lebih baik. Anda mungkin pernah mendengar orang-orang melempar log dan kuadrat dan rasio dan segala macam cara Anda bisa membuat fitur, tetapi intinya adalah bahwa "berguna" tergantung pada tugas yang ada dan melibatkan mengubah data yang Anda miliki menjadi domain di mana keputusan diambil lebih sederhana.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.