Menggabungkan data yang jarang dan padat dalam pembelajaran mesin untuk meningkatkan kinerja

17

Saya memiliki fitur jarang yang bersifat prediksi, juga saya memiliki beberapa fitur padat yang juga dapat memprediksi. Saya perlu menggabungkan fitur-fitur ini bersama-sama untuk meningkatkan kinerja keseluruhan classifier.

Sekarang, masalahnya adalah ketika saya mencoba untuk menggabungkan ini bersama-sama, fitur padat cenderung lebih mendominasi fitur jarang, maka hanya memberikan peningkatan 1% pada AUC dibandingkan dengan model dengan hanya fitur padat.

Adakah yang mengalami masalah serupa? Sangat menghargai input, agak macet. Saya sudah mencoba banyak pengklasifikasi yang berbeda, kombinasi pengklasifikasi, transformasi fitur dan pemrosesan dengan algoritma yang berbeda.

Terima kasih sebelumnya atas bantuannya.

Edit :

Saya sudah mencoba saran yang diberikan di komentar. Apa yang saya amati adalah, untuk hampir 45% dari data, fitur jarang berkinerja sangat baik, saya mendapatkan AUC sekitar 0,9 dengan hanya fitur jarang, tetapi untuk fitur padat yang tersisa berkinerja baik dengan AUC sekitar 0,75. Saya agak mencoba memisahkan dataset ini, tetapi saya mendapatkan AUC 0,6, jadi, saya tidak bisa begitu saja melatih model dan memutuskan fitur mana yang akan digunakan.

Mengenai cuplikan kode, saya telah mencoba banyak hal, sehingga saya tidak yakin apa yang harus dibagikan :(

Sagar Waghmode
sumber
Seberapa jarang fitur Anda? Apakah 1% diisi atau bahkan kurang?
João Almeida
2
Anda juga harus mencatat bahwa jika fitur Anda jarang maka mereka hanya akan membantu mengklasifikasikan sebagian kecil dari dataset Anda, yang berarti secara keseluruhan akurasi tidak boleh berubah secara signifikan. Ini semacam dugaan, karena saya tidak tahu apa karakteristik dataset Anda.
João Almeida
@ JoãoAlmeida Mereka tidak jarang. Mereka diisi sekitar 5%. Masalahnya adalah ketika saya melihat perbedaan dalam prediksi dari dua model, di mana prediksi berbeda, model dengan fitur jarang cenderung berkinerja lebih baik, itu sebabnya saya berharap untuk melihat peningkatan AUC juga ketika saya menggabungkannya dengan fitur padat . Saya mendapat dorongan, tetapi tampaknya sangat rendah.
Sagar Waghmode
hum ... Saya tidak punya ide untuk Anda saat itu
João Almeida
Saya bertemu dengan masalah yang sama, mungkin hanya menempatkan fitur padat dan jarang dalam satu model bukan pilihan yang baik. mungkin Anda bisa mencoba model yang lebar dan dalam. lebar untuk fitur jarang dan mendalam untuk fitur padat, jika Anda mencoba metode ini, tolong beri tahu saya jawabannya.
Jianye Ji

Jawaban:

6

Ini sepertinya pekerjaan untuk Analisis Komponen Utama. Di Scikit adalah PCA diimplementasikan dengan baik dan itu membantu saya berkali-kali.

PCA, dengan cara tertentu, menggabungkan fitur Anda. Dengan membatasi jumlah komponen, Anda mengambil model Anda dengan data tanpa noise (dalam kasus terbaik). Karena model Anda sebagus data Anda.

Pertimbangkan di bawah ini contoh sederhana.

from sklearn.pipeline import Pipeline
pipe_rf = Pipeline([('pca', PCA(n_components=80)),
                    ('clf',RandomForestClassifier(n_estimators=100))])
pipe_rf.fit(X_train_s,y_train_s)

pred = pipe_rf.predict(X_test)

Mengapa saya memilih 80? Ketika saya plot varians kumulatif, saya mendapatkan ini di bawah ini, yang memberitahu saya bahwa dengan ~ 80 komponen, saya mencapai hampir semua varians. cumulative variance

Jadi saya akan mengatakan mencobanya, gunakan dalam model Anda. Itu akan membantu.

HonzaB
sumber
4

Cara terbaik untuk menggabungkan fitur adalah melalui metode ensemble. Pada dasarnya ada tiga metode berbeda: mengantongi, meningkatkan dan menumpuk. Anda dapat menggunakan Adabbost augmented dengan pemilihan fitur (dalam hal ini mempertimbangkan fitur yang jarang dan padat) atau berbasis susun (fitur acak - subruang acak) Saya lebih suka opsi kedua Anda dapat melatih sekumpulan pelajar dasar (keputusan. Pohon) dengan menggunakan acak himpunan bagian dan fitur acak (pertahankan pelajar basis pelatihan sampai Anda mencakup seluruh rangkaian fitur) Langkah selanjutnya adalah menguji set Pelatihan untuk menghasilkan meta data. Gunakan data meta ini untuk melatih meta classifier. Meta classifier akan mencari tahu fitur mana yang lebih penting dan hubungan seperti apa yang harus digunakan

Bashar Haddad
sumber
Bisakah Anda berbagi dokumentasi yang relevan? Tidak benar-benar mengerti maksud Anda?
Sagar Waghmode
Anda dapat membaca artikel tentang mempertaruhkan "masalah dalam teknik penumpukan, 1999" membaca tentang stackingC. Sangat penting untuk mengetahui bahwa saya berbicara tentang seluruh vektor (mis. 1x36 untuk Hog) sebagai satu fitur, tetapi bukan dimensi di dalamnya. Anda perlu melacak fitur mana yang digunakan dengan pelajar dasar mana. Hati-hati dengan masalah overfitting
Bashar Haddad
Jika Anda memberikan rincian lebih lanjut tentang basis data, jumlah kelas, jumlah sampel, kode, hal-hal apa yang Anda coba, hal-hal apa yang Anda perhatikan, apakah Anda memiliki masalah ketidakseimbangan data, sampel bising, ... Dll. Semua detail ini penting dan dapat membantu dalam memilih metode terbaik. Beri saya detail lebih lanjut jika ini ok dan saya dapat membantu dengan cara yang lebih baik
Bashar Haddad
1

Grup variabel mungkin multikolinier atau konversi antara jarang dan padat mungkin salah. Pernahkah Anda berpikir tentang menggunakan klasifikasi pemungutan suara / ensemble? http://scikit-learn.org/stable/modules/ensemble.html Dengan begitu Anda bisa menangani kedua masalah di atas.

Diego
sumber
Saya sudah mencoba teknik ensemble serta pengklasifikasi suara. Masih belum berhasil.
Sagar Waghmode
Jadi, apakah Anda melihat banyak tumpang tindih kemudian antara prediksi dari dua set data? Mungkin memang tidak ada informasi baru? Yakni datanya menceritakan kisah yang sama.
Diego
ya, saya telah melakukan hal itu. Meskipun prediksi tidak sepenuhnya berbeda, jumlah sampel di mana prediksi berbeda cukup tinggi (sekitar 15-20%) dari data. Untuk model sampel ini dengan fitur jarang berperforma lebih baik daripada model dengan fitur padat. Maksud saya adalah jika fitur jarang berkinerja lebih baik, mengapa tidak datang sebagai fitur penting dalam salah satu model yang telah saya coba sejauh ini.
Sagar Waghmode
Algoritma prediktor apa yang Anda gunakan?
Diego
Saya telah mencoba beberapa algoritma dan memilih Gradient Boosted Model, juga saya menggunakan Random Forests cukup banyak untuk masalah saya.
Sagar Waghmode
1

Selain beberapa saran di atas, saya akan merekomendasikan menggunakan pendekatan pemodelan dua langkah .

  1. Gunakan fitur jarang terlebih dahulu dan kembangkan model terbaik.
  2. Hitung probabilitas yang diprediksi dari model itu.
  3. Masukkan perkiraan probabilitas ke model kedua (sebagai fitur input), yang akan menggabungkan fitur padat. Dengan kata lain, gunakan semua fitur yang padat dan estimasi probabilitas untuk membangun model kedua.
  4. Klasifikasi akhir kemudian akan didasarkan pada model kedua.
Vishal
sumber
0

Coba PCA hanya pada fitur yang jarang, dan gabungkan output PCA dengan fitur yang padat.

Jadi Anda akan mendapatkan kumpulan fitur (asli) yang padat + kumpulan fitur yang padat (yang awalnya jarang).

+1 untuk pertanyaan. Harap perbarui kami dengan hasilnya.

Tagar
sumber
Wow, ini sebenarnya telah meruntuhkan AUC :( Tidak yakin, apa artinya, perlu memeriksa pentingnya fitur dan semuanya. Tetapi filosofi saya adalah, dari sekitar 2,3k fitur jarang, saya menggunakan fitur 1k yang menjelaskan rasio varian 0,97, hilangnya informasi ini mungkin telah meruntuhkan AUC
Sagar Waghmode
Menarik. Terima kasih telah berbagi. Kami memiliki dataset yang sangat mirip dengan milik Anda (fitur jarang 1k-2k). Hanya karena penasaran, berapa banyak komponen utama yang telah Anda hasilkan? Jika angka itu terlalu rendah, ini bisa menjelaskan mengapa AUC turun.
Tagar
Seperti yang saya katakan sebelumnya, saya telah menghasilkan komponen utama 1k yang menjelaskan varian 0,97.
Sagar Waghmode