Cara terbaik untuk mengklasifikasikan dataset dengan tipe atribut campuran

13

Saya ingin tahu apa cara terbaik untuk mengklasifikasikan kumpulan data yang terdiri dari berbagai jenis atribut, misalnya, tekstual dan numerik. Saya tahu saya bisa mengonversi teks menjadi boolean, tetapi perbendaharaan katanya beragam dan datanya terlalu jarang. Saya juga mencoba untuk mengklasifikasikan jenis atribut secara terpisah dan menggabungkan hasilnya melalui teknik meta-learning, tetapi tidak berhasil dengan baik.

user900
sumber

Jawaban:

11

Jawaban Christopher tampaknya sangat masuk akal. Khususnya metode berbasis pohon sangat baik dengan data semacam ini karena mereka bercabang pada fitur diskriminatif. Agak sulit untuk mengatakan tanpa mengetahui aplikasi spesifik Anda, tetapi secara umum jika Anda berpikir bahwa beberapa fitur Anda mungkin jauh lebih diskriminatif daripada yang lain, Anda bisa mencoba beberapa teknik pengurangan dimensi untuk membersihkannya sedikit.

Juga jika Anda menggunakan teknik pengurangan dimensionalitas Anda akhirnya mendapatkan format yang sedikit lebih kuat untuk vektor fitur Anda (mereka biasanya berakhir menjadi vektor numerik langsung daripada tipe data campuran), yang mungkin memungkinkan Anda memanfaatkan metode yang berbeda. Anda juga dapat melihat fitur-fitur teknik tangan. Dengan fitur rekayasa tangan yang tepat Random Forestakan membuat Anda sangat dekat dengan keadaan terkini pada sebagian besar tugas.

indico
sumber
2
Pilihan lain untuk pengurangan dimensi. Hanya beberapa tambahan: Principal Component Analysisatau Non-Negative Matrix Factorizationakan mengurangi jumlah variabel, memperkaya data jarang, dan mengubah semua variabel menjadi kuantitatif. Selain itu, mengevaluasi kualitas model reduksi dimensi, penulis pertanyaan dapat memperkirakan kegunaan variabel tekstual.
sobach
@ indo jawaban yang bagus. Bisakah Anda memberi kami referensi dalam buku atau kertas, bahwa algoritma berbasis pohon berkinerja lebih baik dengan data tipe campuran (data kategorikal dan kuantitatif)?
ZelelB
6

Sulit untuk menjawab pertanyaan ini tanpa mengetahui lebih banyak tentang data. Yang mengatakan, saya akan menawarkan saran berikut:

Sebagian besar teknik pembelajaran mesin dapat menangani data tipe campuran. Metode berbasis pohon (seperti AdaBoost dan Random Forests) cocok dengan jenis data ini. Masalah yang lebih penting sebenarnya adalah dimensionalitas, yang harus Anda perhatikan.

Saya menyarankan agar Anda melakukan sesuatu untuk mengurangi dimensi itu. Misalnya, cari kata atau frasa yang memisahkan data yang terbaik dan buang kata-kata lain (catatan: metode berbasis pohon melakukan ini secara otomatis).

Christopher Louden
sumber
2

Dengan sedikit informasi yang Anda berikan mengenai sifat data Anda, saya akan menyarankan Anda untuk mengikuti pendekatan berikut:

  1. Konversi data teks ke dalam kategori. Anda dapat mencoba berbagai alternatif untuk mengetahui berapa banyak informasi yang harus dikandung oleh kategori, tetapi kategori tertentu harus ada untuk setiap variabel. Sebagai contoh, saya akan mengasumsikan variabel yang berasal dari bidang teks kuesioner survei mengenai cara orang yang lebih disukai untuk mulai bekerja.

    Pada awalnya, kita perlu memastikan bahwa jawaban dengan makna yang sama ditulis dengan cara yang sama dan termasuk dalam kategori yang sama (misalnya "dengan sepeda", "bersepeda", "dengan sepeda" semua memiliki arti yang sama). Kemudian Anda dapat mencoba menggabungkan lebih jauh ke dalam kategori yang kurang terperinci (misalnya menggabungkan "trem", "metro" dan "bus" menjadi "Sarana transportasi umum") atau bahkan lebih (mis. "Berjalan", "Jogging", "Bersepeda" menjadi " Aktivitas fisik ") tergantung pada apa yang ingin Anda cari tahu.

    Anda bahkan dapat meletakkan beberapa kombinasi berbeda dalam dataset Anda dan kemudian langkah selanjutnya akan menentukan yang mana yang akan digunakan untuk analisis. Dalam kasus di mana data teks dapat "diterjemahkan" dalam variabel terurut pastikan Anda melakukan ini (misalnya jika Anda memiliki "kecil, sedang, tinggi" ubahlah menjadi "1,2,3").

  2. Ubah variabel kategori Anda (bukan variabel ordinal) menjadi variabel dummy (biner). Sebagian besar algoritma pemilihan klasifikasi / fitur melakukan ini secara otomatis, tetapi pastikan ini adalah kasus dengan yang Anda pilih. Saya menyadari bahwa dimensi data akan menjadi cukup besar pada saat ini, tetapi ini akan ditangani pada langkah selanjutnya.

  3. Menerapkan teknik pengurangan pemilihan dimensi / fitur pada data Anda. Anda dapat menemukan ulasan berguna tentang teknik-teknik tersebut di sini . Jika Anda menggunakan Python, alat sklearn memberi Anda banyak opsi (lihat lebih detail di sini ). Pastikan Anda menggunakan teknik yang juga mempertimbangkan multikolinieritas. Saya akan mencoba Analisis Komponen Utama atau algoritma berbasis pohon.

  4. Untuk mengklasifikasikan data, saya akan menggunakan Decision Tree Classifier (juga tersedia melalui sklearn ). Itu juga melakukan bobot pengaturan penting pemilihan fitur untuk fitur. Anda dapat mengatur level detail pada pohon yang dihasilkan tergantung pada opsi Anda (mis. Max_depth, min_samples_split) Pastikan untuk menyesuaikan level detail berdasarkan cross-validation untuk menghindari overfitting.

missrg
sumber