Bagaimana cara melakukan klasifikasi Hutan Acak tanpa pengawasan menggunakan kode Breiman?

8

Saya bekerja dengan kode hutan acak Breiman ( http://stat-www.berkeley.edu/users/breiman/RandomForests/cc_manual.htm#c2 ) untuk klasifikasi data satelit (supervised learning). Saya menggunakan dataset pelatihan dan tes yang memiliki ukuran sampel 2000 dan ukuran variabel 10. Data diklasifikasikan ke dalam dua kelas, A dan B. Dalam mode pembelajaran terawasi, algoritma berkinerja baik dengan kesalahan klasifikasi yang sangat rendah (<2%) . Sekarang saya ingin mencoba klasifikasi tanpa pengawasan tanpa label kelas di set data uji dan melihat bagaimana algoritma dapat memprediksi kelas. Apakah ada cara untuk menerapkan klasifikasi tanpa pengawasan menggunakan kode Breiman? Apakah kesalahan dari metode ini akan lebih tinggi daripada klasifikasi yang diawasi? Data dan menjalankan pengaturan parameter dalam algoritma diberikan di bawah ini

DATA DESCRIBE 1 mdim = 10, ntrain = 2000, nclass = 2, maxcat = 1, 1 ntest = 2000, label = 1, labeltr = 1,

SET PARUNETER LARI 2 mtry0 = 3, ndsize = 1, jbt = 500, look = 100, lookcls = 1, 2 jclasswt = 0, mdim2nd = 0, mselect = 0,

Bijoy
sumber
1
Bisakah Anda menguraikan lebih jauh? Jika ingin memprediksi kelas Anda harus menggunakan klasifikasi terawasi.
Simone
Anggap saja saya memiliki dua dataset dengan jumlah variabel dan sampel yang sama. set data pertama berisi informasi kelas (A dan B) sedangkan set data kedua tidak memiliki info kelas apa pun. Dengan menggunakan kode RF, dataset pertama diklasifikasikan ke dalam dua kelas dengan akurasi yang sangat baik. Parameter run yang diberikan di atas adalah untuk klasifikasi tertentu di mana info kelas diperlukan dalam dataset. Sekarang pertanyaan saya adalah bagaimana cara mengklasifikasikan datset kedua menjadi dua kelas?
Bijoy

Jawaban:

3

Mengingat bahwa model Anda menunjukkan akurasi yang baik, Anda dapat menggunakannya untuk memprediksi label kelas catatan dalam dataset tidak berlabel. Namun, Anda tidak dapat mengevaluasi kinerja data yang tidak berlabel.

Hati-hati bahwa Anda harus menilai kualitas model Anda pada data berlabel dengan validasi silang. Tidak cukup untuk memeriksa tingkat kesalahan pelatihan.

Jika model Anda tidak cukup akurat, Anda mungkin berpikir tentang pembelajaran semi-diawasi . Data yang tidak berlabel digunakan untuk meningkatkan kualitas model Anda melalui pembelajaran induktif. Akurasi harus selalu dihitung dengan validasi silang pada data berlabel Anda.

Lihatlah [Crimisini et al. Hutan Keputusan: Kerangka Kerja Terpadu untuk Klasifikasi, Regresi, Estimasi Kepadatan, Manifold Learning, dan Pembelajaran Semi-Supervisi] Bab 7 tentang pembelajaran semi-diawasi dan 7.4 tentang induksi dengan pembelajaran semi-diawasi.

Simone
sumber
Terima kasih Simone atas komentarnya ... Seperti yang Anda sebutkan dalam komentar Anda, tujuan saya adalah untuk memprediksi label kelas dari catatan dalam dataset yang tidak berlabel menggunakan RF. Namun, saya ingin tahu apakah ini mungkin menggunakan kode RF Brieman dan Cutler .. ??
Bijoy
Saya tidak begitu familiar dengan kode itu. Mungkin juga agak ketinggalan jaman. Coba WEKA atau R, mereka memberikan implementasi hutan acak baru-baru ini.
Simone
9

Saya ragu bahwa tanpa pengawasan akan bekerja lebih baik tetapi bisa menjadi latihan yang keren untuk dicoba. Pembelajaran tanpa pengawasan dengan hutan acak dilakukan dengan membangun distribusi bersama berdasarkan variabel independen Anda yang secara kasar menggambarkan data Anda. Kemudian simulasikan sejumlah pengamatan menggunakan distribusi ini. Misalnya, jika Anda memiliki 1000 pengamatan, Anda dapat mensimulasikan 1000 lebih. Kemudian Anda memberi label, misalnya 1: = pengamatan nyata, 0: = pengamatan simulasi. Setelah ini, Anda menjalankan pengelompokan hutan acak yang biasa mencoba untuk membedakan pengamatan nyata dari yang disimulasikan. Perhatikan bahwa Anda harus mengaktifkan opsi kalkulasi kedekatan. Keluaran nyata yang bermanfaat persis seperti ini, deskripsi kedekatan antara pengamatan Anda berdasarkan apa yang dilakukan Random Forest ketika mencoba menetapkan label ini. Anda sekarang memiliki deskripsi bagaimana " Maksud saya tetap bersatu pengamatan yang lebih dekat dari ambang batas tertentu. Pilihan lain yang mudah adalah melakukan clustering hierarkis tetapi menggunakan matriks jarak khusus ini. Jika Anda dapat bekerja dengan R, sebagian besar paket pengelompokan hierarkis memungkinkan Anda untuk memberi makan matriks jarak fungsi kustom. Anda kemudian memilih titik cutoff, Anda dapat memvisualisasikannya sebagai dendrogram dan seterusnya dan seterusnya. Maksud saya tetap bersatu pengamatan yang lebih dekat dari ambang batas tertentu. Pilihan lain yang mudah adalah melakukan clustering hierarkis tetapi menggunakan matriks jarak khusus ini. Jika Anda dapat bekerja dengan R, sebagian besar paket pengelompokan hierarkis memungkinkan Anda untuk memberi makan matriks jarak fungsi kustom. Anda kemudian memilih titik cutoff, Anda dapat memvisualisasikannya sebagai dendrogram dan seterusnya dan seterusnya.

Ini dulunya adalah tutorial yang sangat bagus tentang pengelompokan Hutan Acak dan mereka berbagi beberapa fungsi R bermanfaat yang mereka tulis untuk tujuan ini tetapi tautannya tampaknya sudah mati sekarang. Mungkin nanti akan muncul kembali. Mereka juga menulis paket acak glm R yang sangat rapi (yang analog dengan hutan acak tetapi berdasarkan duh ... glms) jika Anda ingin memeriksanya. Anda selalu bisa menulis kepada penulis dan meminta materi untuk klasifikasi Hutan Acak yang dulu tersedia di tautan mati. Saya memiliki kode R tetapi terlalu besar untuk disisipkan di sini, saya dapat mengirimkannya kepada Anda jika Anda mengirimi saya pesan pribadi.

JEquihua
sumber
Paket R ini tampaknya juga untuk ini, saya tidak memeriksanya dengan seksama: artax.karlin.mff.cuni.cz/r-help/library/CORElearn/html/…
JEquihua
4

Jika Anda ingin menggunakan hutan acak dalam pengaturan yang tidak diawasi, Anda akan fokus pada metrik jarak yang diperoleh dalam apa yang Breiman sebut sebagai "perkiraan". Ini harus berupa matriks NxN yang menunjukkan waktu-waktu dimana sampel muncul bersamaan di terminal node. Dalam randomForest R, ini diperoleh melalui (Saya tidak pernah menggunakan Breiman tapi saya yakin itu tersedia):

rf = randomForest( ... )
1 - rf$proximities

Sekarang, dalam pengaturan tanpa pengawasan, hutan acak tidak tahu berapa kelas yang harus ada, sehingga itu akan menjadi pekerjaan Anda. Ini dapat dilakukan dengan berbagai cara, misalnya, KNN, PAM, dll., Di mana Anda memilih k = 2.

Seperti yang dapat Anda bayangkan, ini adalah hutan acak terawasi yang agak berbeda, jadi membandingkan akurasi klasifikasi antara kedua prosedur mungkin tidak mencerahkan.

jimmyb
sumber