Apakah ini praktik rekayasa fitur yang bagus?

10

Saya punya pertanyaan praktis tentang rekayasa fitur ... katakanlah saya ingin memprediksi harga rumah dengan menggunakan regresi logistik dan menggunakan banyak fitur termasuk kode pos. Kemudian dengan memeriksa pentingnya fitur, saya menyadari zip adalah fitur yang cukup bagus, jadi saya memutuskan untuk menambahkan beberapa fitur berdasarkan zip - misalnya, saya pergi ke biro sensus dan mendapatkan penghasilan rata-rata, populasi, jumlah sekolah, dan jumlah rumah sakit masing-masing zip. Dengan keempat fitur baru ini, saya menemukan performa model yang lebih baik sekarang. Jadi saya menambahkan lebih banyak fitur yang berhubungan dengan zip ... Dan siklus ini terus berlanjut. Akhirnya model akan didominasi oleh fitur-fitur terkait zip ini, kan?

Pertanyaan saya:

  1. Apakah masuk akal melakukan ini di tempat pertama?
  2. Jika ya, bagaimana saya tahu kapan waktu yang tepat untuk menghentikan siklus ini?
  3. Jika tidak, mengapa tidak?
pengguna3768495
sumber

Jawaban:

6

Jika Anda dapat terus menambahkan data baru (berdasarkan konsep utama seperti area yaitu kode ZIP) dan kinerja model Anda meningkat, maka tentu saja diperbolehkan ... dengan asumsi Anda hanya peduli dengan hasil akhir.

Ada metrik yang akan mencoba memandu Anda dengan hal ini, seperti Akaike Information Criterion (AIC) atau Bayesian Information Criterion (BIC) yang sebanding . Ini pada dasarnya membantu memilih model berdasarkan kinerjanya, dihukum untuk semua parameter tambahan yang diperkenalkan dan yang harus diperkirakan. AIC terlihat seperti ini:

SEBUAHsayaC=2k-2dalam(L.^)

di mana adalah jumlah parameter yang akan diperkirakan, yaitu jumlah fitur yang Anda terapkan, karena masing-masing akan memiliki satu koefisien dalam regresi logistik Anda. adalah nilai maksimum dari Kemungkinan Maksimum (setara dengan skor optimal). BIC hanya menggunakan sedikit berbeda untuk menghukum model.kL.^k

Kriteria ini dapat membantu memberi tahu Anda kapan harus berhenti, karena Anda dapat mencoba model dengan lebih banyak parameter, dan cukup mengambil model yang memiliki nilai AIC atau BIC terbaik.

Jika Anda masih memiliki fitur lain dalam model, yang tidak terkait dengan ZIP, mereka berpotensi menjadi kewalahan - itu tergantung pada model yang Anda gunakan. Namun, mereka juga dapat menjelaskan hal-hal tentang dataset yang tidak dapat dimasukkan dalam informasi ZIP, seperti luas lantai rumah (dengan asumsi ini relatif independen dari kode ZIP).

Dalam hal ini Anda dapat membandingkannya dengan sesuatu seperti Principal Component Analysis, di mana kumpulan fitur menjelaskan satu dimensi varian dalam kumpulan data, sementara fitur lainnya menjelaskan dimensi lain. Jadi, tidak peduli berapa banyak fitur terkait ZIP yang Anda miliki, Anda mungkin tidak akan pernah menjelaskan pentingnya luas lantai.

n1k31t4
sumber
7

1) Ya, itu masuk akal. Mencoba membuat fitur secara manual akan membantu peserta didik (yaitu model) untuk mendapatkan lebih banyak informasi dari data mentah karena data mentah tidak selalu dalam bentuk yang dapat dipelajari, tetapi Anda selalu dapat membuat fitur dari itu. Fitur yang Anda tambahkan didasarkan pada satu fitur. Ini biasa. Namun, pelajar Anda, regresi logistik, sensitif terhadap multi-collinearity. Anda harus berhati-hati pada fitur mana dan berapa banyak fitur untuk ditambahkan. Jika tidak, Anda bisa jadi model yang cocok.

2) Karena Anda menggunakan regresi logistik, Anda selalu dapat menggunakan AIC atau melakukan uji signifikansi statistik, seperti uji chi-square (menguji goodness of fit) sebelum menambahkan struktur baru, untuk memutuskan apakah distribusi respons benar-benar berbeda. dengan dan tanpa struktur ini. Ini sangat berguna ketika data Anda langka. Cara lain adalah menambahkan istilah penalti ke model Anda. Misalnya, regresi laso logistik.

3) Terus menambahkan fitur baru tidak selalu merupakan ide yang baik. Hati-hati dengan kutukan dimensi tinggi. Saat menambahkan fitur baru, Anda sebenarnya menambahkan dimensi baru pada data Anda. Secara naif, orang mungkin berpikir bahwa mengumpulkan lebih banyak fitur tidak ada salahnya, karena paling buruk mereka tidak memberikan informasi baru tentang kelas. Namun pada kenyataannya manfaatnya mungkin lebih besar daripada kutukan dimensi. Saya berharap hal-hal yang berguna untuk diketahui tentang sesi pembelajaran mesin6 dapat membantu.

Fansly
sumber
Apakah @ user3768495 mengevaluasi kinerja model out-of-sample menggunakan misalnya validasi silang? Jika demikian, multi-collinearity seharusnya tidak menjadi masalah dan ia tidak perlu khawatir tentang overfitting karena ia akan mendapatkan indikasi overfitting melalui penurunan kinerja validasi.
rinspy
@rinspy overfitting memiliki banyak wajah. Melibatkan set validasi dapat membantu menghindari overfitting tetapi tidak dapat menyelesaikan masalah. Misalnya, distribusi yang tidak konsisten antara data pelatihan (yang dipecah menjadi perangkat pelatihan dan perangkat validasi) dan populasi nyata. Bahkan model berkinerja baik dalam data pelatihan, itu mungkin tidak digeneralisasi untuk situasi dunia nyata. Referensi dari jawaban saya juga berbicara tentang overfitting.
Fansly
Benar, tetapi menghindari multikolinearitas tidak akan membantu dengan 'overfitting' yang timbul dari pergeseran kovariat. Saya hanya mengatakan bahwa multikolinearitas kemungkinan tidak menjadi masalah jika ia tertarik untuk membangun model prediksi (dan bukan deskriptif).
rinspy
Konsep saya tentang overfitting adalah ketika sebuah model gagal digeneralisasi ke dataset baru, bukan dengan data pelatihan. Silakan lihat ini
Fansly
4

Biasanya, semakin kaya fitur semakin baik.

Satu hal yang perlu diingat, bagaimanapun, regresi, secara umum, tidak bekerja dengan baik dengan data yang sangat berkorelasi (multikolinieritas). Ketika Anda memperluas fitur Anda dengan cara ini, itu adalah sesuatu yang mungkin ingin Anda ingat.

Ada banyak informasi tentang topik ini (dan cara potensial untuk mengurangi), hanya regresi google dan multikolinieritas.

Pendeknya,

  1. Iya. Paling pasti.
  2. @ n1k31t4 memiliki beberapa saran bagus. Jangan ragu untuk menghasilkan fitur apa yang menurut Anda akan meningkatkan model Anda, maka Anda dapat menggunakan teknik seperti PCA dan teknik pemilihan fitur lainnya untuk membatasi diri Anda pada apa yang penting.
  3. Hal lain yang perlu dipertimbangkan adalah seberapa praktisnya dalam upaya vs hasil.
Lyrist
sumber
0

Fitur adalah informasi dari model Anda. Semakin banyak informasi, semakin baik kemampuannya untuk melakukan dan memprediksi. Semakin rendah, semakin sulit untuk memprediksi nilai. Jadi naser pendeknya adalah ya. Itu selalu layak untuk memiliki fitur sebanyak mungkin. Selalu ada batasan untuk ini karena informasi yang berlebihan juga dapat membakar prosesor Anda, jadi berhati-hatilah dengan berapa banyak fitur yang sedang direkayasa. Selain itu, fitur yang tidak perlu hanya menambah kejenuhan, jadi selalu praktik yang baik untuk membersihkan fitur tertentu. Seluruh fase preprocessing data adalah tentang itu.

Jawaban pertama memiliki beberapa detail yang bagus tentang itu. Sejauh menyangkut penghentian siklus, ada beberapa langkah dan faktor yang perlu Anda perhatikan untuk memeriksa di mana model Anda telah berhenti berkinerja lebih baik dan itu adalah langkah-langkah seperti RMSE. Contoh sederhana akan menggunakan xgboostregresi pada data Anda dan menentukan jumlah siklus. Jalankan model dan Anda akan mendapatkan RMSE untuk setiap siklus. Ini akan berkurang hingga batas yang setelahnya Anda akan dapat menyimpulkan bahwa model telah stabil setelah siklus tertentu. Beginilah cara penyetelan model dan pengoptimalan bekerja.

Shiv_90
sumber