Bagaimana cara menyandikan kelas dengan 24.000 kategori?

10

Saat ini saya sedang mengerjakan model regresi logistik untuk genomik. Salah satu bidang input yang ingin saya sertakan sebagai kovariat adalah genes. Ada sekitar 24.000 gen yang dikenal. Ada banyak fitur dengan tingkat variabilitas dalam biologi komputasi ini dan diperlukan ratusan ribu sampel.

  • Jika saya LabelEncoder()gen 24K itu
  • dan kemudian OneHotEncoder()mereka ...

Apakah 24.000 kolom akan membuat waktu latihan keras saya tidak masuk akal untuk CPU quad-core i7 2.2 GHz?

Jika demikian, apakah ada pendekatan berbeda untuk penyandian yang dapat saya lakukan dengan ini?

Haruskah saya mencoba mendedikasikan lapisan model saya untuk fitur ini?

Apakah ini berarti saya memerlukan 24K input node?

HashRocketSyntax
sumber
Mengapa tidak belajar representasi menggunakan VAE? Saya pikir dalam urutan gen, belajar representasi (seperti yang dilakukan dalam NLP) akan membuat banyak akal dibandingkan dengan hanya PCA sederhana ...
n1tk

Jawaban:

10

Ya, menggunakan pengodean satu-panas pada fitur 24k memerlukan node input 24k. Namun ini seharusnya tidak menjadi masalah bagi Keras (atau perpustakaan pembelajaran mendalam lainnya). Pemrosesan bahasa alami sering menggunakan pengkodean satu-panas pada kata-kata dengan ukuran kosa kata di stadion baseball yang sama.

Jika Anda menggunakan model "dalam", salah satu lapisan tersembunyi Anda harus berhati-hati dalam mengurangi dimensi data Anda. Langkah pra-pemrosesan terpisah biasanya tidak diperlukan.

Waktu pelatihan seharusnya tidak masuk akal.

C. Yduqoli
sumber
Terima kasih untuk cek kewarasannya.
HashRocketSyntax
Saya perhatikan Anda menyebutkan layer, bukan PCA di sklearn. Apakah Anda merekomendasikan autoencoder sebagai bentuk pengurangan dimensionalitas?
HashRocketSyntax
2
Anda mengatakan Anda menggunakan Keras, jadi Anda menggunakan beberapa jenis jaringan saraf bukan? Jika di suatu tempat di jaringan Anda, Anda memiliki lapisan dengan jumlah node yang lebih kecil dari input Anda, jaringan melakukan pengurangan dimensi secara otomatis. Saya menganggap Anda hanya memiliki satu (atau sejumlah kecil) hasil regresi. Jadi salah satu cara sederhana adalah memiliki lapisan input (d = 24k), satu atau lebih lapisan menengah (d = 1k atau sesuatu seperti itu) dan lapisan keluaran Anda (d = 1).
C. Yduqoli
Sementara layer ukuran yang sama adalah umum di NLP, umumnya tidak masuk akal untuk melatih model NLP modern pada CPU, GPU yang kuat sebenarnya adalah taruhan meja di NLP untuk apa pun di luar model 'mainan' kecil. Di sisi lain, ini bukan penghalang besar, karena baik GPU fisik maupun cloud cukup mudah tersedia.
Peteris
6

Entity Embedding untuk Variabel Kategorikal ( pager asli ) akan menjadi pendekatan yang sangat cocok di sini. Baca di sini , atau di sini . Saya sebenarnya telah meletakkan potongan kode dari sana-sini dan membuat implementasi berjalan lengkap, lihat repo git ini. Ini dengan mudah menangani variabel kategori kardinal sangat tinggi menggunakan jaringan saraf. Saya tidak akan mendaftar pro dan kontra OHE, Anda hanya Google itu, tetapi salah satu kelemahan utamanya esp. ketika memiliki variabel kategori kardinal yang sangat tinggi, itu meningkatkan secara drastis ruang fitur Anda secara tidak perlu, yang menurut saya tidak ideal. Dan yang lebih penting OHE, setahu saya, tidak memperhitungkan hubungan semantik antar kategori jika ada hubungan seperti itu! Namun, Entity Embedding adalah konsep untuk Word Embedding di NLP, bobot yang sedang dipelajari untuk menyandikan kategori berpotensi menangkap hubungan intra-kategori.

TwinPenguins
sumber
3

Secara umum, jumlah gen itu harus direduksi menjadi serangkaian fitur yang jauh lebih kecil. Kemudian, set fitur yang diperkecil dapat digunakan dalam model. Sebagai contoh, Principal Component Analysis (PCA) adalah salah satu teknik reduksi yang paling umum dan telah digunakan untuk data ekspresi gen .

" Pembelajaran mesin untuk mengintegrasikan data dalam biologi dan kedokteran: Prinsip, praktik, dan peluang" oleh Zitnika et al. mencakup berbagai teknik rekayasa fitur untuk gen.

Brian Spiering
sumber
Terima kasih masuk akal. Kurangi ruang fitur ke jumlah gen yang relevan (dan zona pengaturan dalam wgs).
HashRocketSyntax
Apakah terlalu banyak pertanyaan untuk bertanya seperti apa pengurangan dimensi yang akan Anda rekomendasikan ?: PCA, bermacam-macam, pengelompokan / kepadatan, semacam jaring saraf?
HashRocketSyntax