Saya mencari untuk melatih classifier yang akan membedakan antara Type A
dan Type B
objek dengan set pelatihan yang cukup besar sekitar 10.000 objek, sekitar setengah dari yang ada Type A
dan setengahnya adalah Type B
. Dataset terdiri dari 100 fitur kontinu yang merinci sifat fisik sel (ukuran, radius rata-rata, dll). Memvisualisasikan data dalam scatterplots berpasangan dan plot kepadatan memberitahu kita bahwa ada tumpang tindih yang signifikan dalam distribusi sel kanker dan normal dalam banyak fitur.
Saat ini saya sedang mengeksplorasi hutan acak sebagai metode klasifikasi untuk dataset ini, dan saya telah melihat beberapa hasil yang baik. Menggunakan R, hutan acak dapat mengklasifikasikan dengan benar sekitar 90% dari objek.
Salah satu hal yang ingin kita coba dan lakukan adalah menciptakan semacam "skor kepastian" yang akan mengukur seberapa yakin kita terhadap klasifikasi objek. Kami tahu bahwa pengklasifikasi kami tidak akan pernah 100% akurat, dan bahkan jika akurasi prediksi yang tinggi tercapai, kami ingin teknisi yang terlatih untuk mengidentifikasi objek mana yang benar-benar Type A
dan Type B
. Jadi, alih-alih memberikan prediksi tanpa kompromi tentang Type A
atau Type B
, kami ingin menyajikan skor untuk setiap objek yang akan menggambarkan bagaimana A
atau B
suatu objek. Misalnya, jika kita menyusun skor yang berkisar dari 0 hingga 10, skor 0 dapat mengindikasikan objek sangat mirip dengan Type A
objek, sedangkan skor 10 akan menunjukkan objek sangat mirip Type B
.
Saya berpikir bahwa saya bisa menggunakan suara di dalam hutan acak untuk menyusun skor seperti itu. Karena klasifikasi di hutan acak dilakukan dengan suara terbanyak di dalam hutan pohon yang dihasilkan, saya akan berasumsi bahwa objek yang dipilih oleh 100% dari pohon yang Type A
akan berbeda dari objek yang dipilih oleh, katakanlah, 51% dari pohon untuk menjadi Type A
.
Saat ini, saya telah mencoba menetapkan ambang batas sewenang-wenang untuk proporsi suara yang harus diterima oleh suatu objek untuk diklasifikasikan sebagai Type A
atau Type B
, dan jika ambang tersebut tidak dilewatinya akan diklasifikasikan sebagai Uncertain
. Sebagai contoh, jika saya memaksakan kondisi bahwa 80% atau lebih dari pohon harus menyetujui keputusan untuk lulus klasifikasi, saya menemukan bahwa 99% dari prediksi kelas adalah benar, tetapi sekitar 40% dari objek-objek tersebut bined sebagai Uncertain
.
Maka, apakah masuk akal untuk memanfaatkan informasi pemungutan suara untuk menilai kepastian prediksi? Atau apakah saya menuju ke arah yang salah dengan pikiran saya?
Jawaban:
Masuk akal, dan semua implementasi hutan acak yang telah saya kerjakan (seperti MATLAB) memberikan keluaran probabilistik juga untuk melakukan hal itu.
Saya tidak bekerja dengan implementasi R, tetapi saya akan terkejut jika tidak ada cara sederhana untuk mendapatkan output lunak dari suara serta keputusan sulit.
Sunting: Baru saja melirik R, dan predict.randomForest melakukan probabilitas output juga.
sumber
Jika Anda menggunakan R, paket caret akan menyelamatkan Anda dari menciptakan kembali roda. Sebagai contoh, kode berikut ini menggunakan validasi silang untuk memilih parameter tuning untuk model hutan acak, dan kemudian mengeluarkan rata-rata dan standar deviasi akurasi untuk setiap lipatan validasi silang. Akhirnya, ini menghitung probabilitas kelas untuk model.
Yang menyenangkan tentang caret adalah membuatnya sangat mudah untuk membandingkan model prediksi yang berbeda. Misalnya, jika Anda ingin mencoba SVM, Anda dapat mengganti teks
method='rf'
denganmethod='svmLinear'
ataumethod='svmRadial'.
Anda juga dapat memilih parameter tuning berdasarkan AUC daripada akurasi dengan menambahkan baris untuk parameter trainControl:summaryFunction=twoClassSummary
.Secara Finlandia, ada sedikit kode di sana dari paket PerformanceAnalytics
chart.Correlation(Dataset[-5], col= Dataset$Class)
,, yang tidak diperlukan untuk membangun model, tetapi memberikan visualisasi yang bagus dari dataset Anda.sumber
modelLookup()
perintah untuk daftar apa yang mungkin.prob
jenispredict
juga tersedia dengan menggunakanrandomForest
untuk melatih model Anda (dengan atau tanpa menggunakan paket lain seperticaret
atauPerformanceAnalytics
).The randomForest paket di R adalah paket yang cukup layak untuk masuk ke rincian yang lebih besar tentang analisis Anda. Ini memberi Anda suara (baik sebagai pecahan atau jumlah mentah) dan menawarkan kapasitas bawaan untuk penyetelan dan validasi silang dan bahkan dapat memberi Anda lebih banyak informasi tentang fitur-fitur Anda (jika Anda ingin tahu yang mana dari 100 yang Anda miliki) yang paling penting dalam analisis).
Jika Anda sudah menggunakan paket itu, maka mungkin Anda ingin melihatnya lebih dekat dan jika tidak maka mungkin memeriksanya.
sumber