Haruskah saya memilih pengoreksi atau pengelompokan Hutan Acak?

11

Saya cocok dengan dataset dengan kelas target biner oleh hutan acak. Dengan python, saya bisa melakukannya dengan randomforestclassifier atau randomforestregressor.

Saya bisa mendapatkan klasifikasi langsung dari randomforestclassifier atau saya bisa menjalankan randomforestregressor terlebih dahulu dan mendapatkan kembali satu set nilai yang diestimasi (nilai kontinu). Kemudian saya dapat menemukan nilai cutoff untuk menurunkan kelas prediksi dari set skor. Kedua metode dapat mencapai tujuan yang sama (yaitu memprediksi kelas untuk data uji).

Saya juga bisa mengamati itu

randomforestclassifier.predict_proba(X_test)[:,1]) 

berbeda dengan

randomforestregressor.predict(X_test)

Jadi saya hanya ingin mengkonfirmasi bahwa kedua metode tersebut valid dan kemudian mana yang lebih baik dalam aplikasi hutan acak?

LUSAQX
sumber
1
Reaksi langsung saya adalah Anda harus menggunakan classifier karena ini memang dibuat untuk apa, tapi saya tidak 100% yakin itu membuat banyak perbedaan. Menggunakan regressor akan seperti menggunakan regresi linier daripada regresi logistik - itu berhasil, tetapi tidak juga dalam banyak situasi. Saya mungkin mendapatkan jawaban yang tepat tetapi tidak untuk sehari atau lebih.
Peter Ellis

Jawaban:

7

Gunakan Pengklasifikasi. Tidak, keduanya tidak valid.

Pertama, saya benar-benar mendorong Anda untuk membaca topik Regresi vs Klasifikasi. Karena menggunakan ML tanpa mengetahui apa pun tentangnya akan memberi Anda hasil yang salah yang tidak akan Anda sadari. Dan itu cukup berbahaya ... ( ini sedikit seperti bertanya di mana Anda harus memegang pistol atau jika tidak masalah )

Apakah Anda menggunakan classifier atau regressor hanya tergantung pada jenis masalah yang Anda pecahkan. Anda memiliki masalah klasifikasi biner , jadi gunakan classifier.

Saya bisa menjalankan randomforestregressor terlebih dahulu dan mendapatkan kembali satu set probabilitas yang diperkirakan.

TIDAK. Anda tidak mendapatkan probabilitas dari regresi. Itu hanya mencoba untuk "memperkirakan" nilai-nilai yang Anda berikan (dalam hal ini hanya 0 dan 1). Ini berarti nilai di atas 1 atau di bawah 0 benar - benar valid sebagai output regresi karena tidak hanya mengharapkan dua nilai diskrit sebagai output (yang disebut klasifikasi !) Tetapi nilai kontinu.

Jika Anda ingin memiliki "probabilitas" ( ketahuilah bahwa ini tidak harus memiliki probabilitas yang dikalibrasi dengan baik ) untuk suatu titik tertentu menjadi milik kelas tertentu, latih sebuah classifier (sehingga ia belajar mengklasifikasikan data) dan kemudian gunakan .predict_proba (), yang kemudian memprediksi probabilitas.

Untuk menyebutkannya di sini: .predict vs .predict_proba (untuk classifier!)
.Predict hanya mengambil output .predict_proba dan mengubah semuanya menjadi 0 di bawah ambang tertentu (biasanya 0,5) masing-masing menjadi 1 di atas ambang batas itu.

Catatan: tentu, secara internal, mereka sama kecuali dari "lapisan terakhir" dll! Namun, melihat mereka (atau lebih baik masalah yang mereka selesaikan) sama sekali berbeda!

Mayou36
sumber