Hai punya dataframe dengan nilai kategori besar lebih dari 1600 kategori apakah ada cara saya bisa menemukan alternatif sehingga saya tidak memiliki lebih dari 1.600 kolom.
Saya menemukan ini di bawah ini tautan menarik http://amunategui.github.io/feature-hashing/#sourcecode
Tetapi mereka mengkonversi ke kelas / objek yang tidak saya inginkan. Saya ingin hasil akhir saya sebagai kerangka data sehingga saya bisa menguji dengan model pembelajaran mesin yang berbeda? atau apakah ada cara saya dapat menggunakan matriks genetrated untuk melatih model pembelajaran mesin lain selain regresi logistik atau XGBoost?
Apakah ada yang bisa saya terapkan?
Jawaban:
Satu opsi adalah memetakan nilai langka ke 'lainnya'. Ini biasanya dilakukan dalam pemrosesan bahasa alami misalnya - intuisi bahwa label yang sangat jarang tidak memiliki banyak kekuatan statistik.
Saya juga telah melihat orang memetakan nilai kategoris 1-hot ke vektor dimensi rendah, di mana setiap vektor 1-hot direpresentasikan kembali sebagai gambar dari Gaussian multivarian. Lihat misalnya makalah Deep Knowledge Tracing, yang mengatakan pendekatan ini dimotivasi oleh gagasan penginderaan terkompresi:
BARANIUK, R. Sensing kompresif. Majalah pemrosesan sinyal IEEE 24, 4 (2007).
Secara khusus, mereka memetakan setiap vektor dengan panjang N ke vektor pendek dengan panjang log2 (N). Saya belum melakukan ini sendiri tetapi saya pikir ini akan pantas untuk dicoba.
sumber
Anda dapat membaca data dan pertama-tama mendapatkan daftar semua nilai unik dari variabel kategori Anda. Kemudian Anda bisa memasukkan satu objek encoder panas (seperti sklearn.preprocessing.CategoricalEncoder) pada daftar nilai unik Anda.
Metode ini juga dapat membantu dalam kerangka uji kereta api atau saat Anda membaca data dalam bentuk potongan. Saya telah membuat modul python yang melakukan semua ini sendiri. Anda dapat menemukannya di repositori GitHub - dummyPy ini
Sebuah tutorial singkat tentang hal ini - Bagaimana Melakukan One Hot Encode Variabel Kategorikal dengan Python?
sumber
Lihat tautan ini (ini juga terkait dengan fitur kategorikal yang memiliki beberapa nilai unik):
https://datascience.stackexchange.com/a/64021/67149
Untuk penyematan, Anda dapat merujuk tautan di bawah ini (tidak ditulis oleh saya, tetapi layak untuk dibaca sekali): https://medium.com/@satnalikamayank12/on-learning-embeddings-for-categorical-data-using-keras-165ff2773fc9
sumber
Anda dapat melakukan penimbunan nilai yang serupa, sehingga nilai (atau kolom) yang memegang nilai paling dekat (atau memiliki banyak kesamaan) pola dapat diganti dengan satu nilai (atau kolom) dan dengan demikian nilai 1600 Anda bisa turun untuk mengatakan 400 (atau bahkan kurang).
Ex. untuk nilai seperti (awan seperti - Awan Nimbus, gerimis, hujan ringan, hujan, hujan lebat dapat dikonversi menjadi (hujan ringan, hujan, hujan lebat).
sumber