Pengklasifikasi Hutan Acak: Ikhtisar, Bagaimana Cara Kerjanya, Pro & Kontra
Diterbitkan: 2021-06-18Pernahkah Anda bertanya-tanya bagaimana Netflix memilih film untuk direkomendasikan kepada Anda? Atau bagaimana Amazon memilih produk untuk ditampilkan di feed Anda?
Mereka semua menggunakan sistem rekomendasi, sebuah teknologi yang memanfaatkan pengklasifikasi hutan acak.
Pengklasifikasi hutan acak adalah salah satu algoritma klasifikasi yang paling populer. Hari ini, kita akan belajar tentang algoritme pembelajaran mesin yang tangguh ini dan melihat cara kerjanya. Anda juga akan belajar tentang implementasinya karena kami akan membagikan tutorial langkah demi langkah tentang cara menggunakan pengklasifikasi hutan acak dalam masalah kehidupan nyata.
Kami akan membahas keuntungan dan kerugian dari sklearn hutan acak dan banyak lagi di poin-poin berikut.
Daftar isi
Pengklasifikasi Hutan Acak: Sebuah Pengantar
Pengklasifikasi hutan acak adalah algoritme pembelajaran terawasi yang dapat Anda gunakan untuk masalah regresi dan klasifikasi. Ini adalah salah satu algoritma pembelajaran mesin paling populer karena fleksibilitasnya yang tinggi dan kemudahan implementasi.
Mengapa pengklasifikasi hutan acak disebut hutan acak?
Itu karena terdiri dari beberapa pohon keputusan seperti halnya hutan memiliki banyak pohon. Selain itu, ia menggunakan keacakan untuk meningkatkan akurasi dan memerangi overfitting, yang bisa menjadi masalah besar untuk algoritma yang begitu canggih. Algoritma ini membuat pohon keputusan berdasarkan pemilihan sampel data secara acak dan mendapatkan prediksi dari setiap pohon. Setelah itu, mereka memilih solusi terbaik yang layak melalui pemungutan suara.
Ini memiliki banyak aplikasi dalam kehidupan kita sehari-hari seperti pemilih fitur, sistem pemberi rekomendasi, dan pengklasifikasi gambar. Beberapa aplikasi kehidupan nyata termasuk deteksi penipuan, klasifikasi aplikasi pinjaman, dan prediksi penyakit. Ini membentuk dasar untuk algoritme Boruta, yang memilih fitur penting dalam kumpulan data.
Bagaimana cara kerjanya?
Dengan asumsi dataset Anda memiliki fitur "m", hutan acak akan secara acak memilih fitur "k" di mana k < m. Sekarang, algoritme akan menghitung simpul akar di antara k fitur dengan memilih simpul yang memiliki perolehan informasi tertinggi.
Setelah itu, algoritma membagi node menjadi node anak dan mengulangi proses ini “n” kali. Sekarang Anda memiliki hutan dengan n pohon. Terakhir, Anda akan melakukan bootstrap, yaitu menggabungkan hasil dari semua pohon keputusan yang ada di hutan Anda.
Ini tentu saja salah satu algoritma paling canggih karena dibangun di atas fungsionalitas pohon keputusan.
Secara teknis, ini adalah algoritma ensemble. Algoritme menghasilkan pohon keputusan individu melalui indikasi pemilihan atribut. Setiap pohon bergantung pada sampel acak independen. Dalam masalah klasifikasi, setiap pohon memilih dan kelas yang paling populer adalah hasil akhirnya. Di sisi lain, dalam masalah regresi, Anda akan menghitung rata-rata semua keluaran pohon dan itu akan menjadi hasil akhir Anda.
Implementasi Python hutan acak jauh lebih sederhana dan kuat daripada algoritma non-linear lain yang digunakan untuk masalah klasifikasi.
Contoh berikut akan membantu Anda memahami bagaimana Anda menggunakan pengklasifikasi hutan acak dalam kehidupan sehari-hari Anda:
Contoh
Misalkan Anda ingin membeli mobil baru dan Anda meminta rekomendasi sahabat Anda Supratik. Dia akan bertanya tentang preferensi Anda, anggaran Anda, dan persyaratan Anda dan juga akan berbagi pengalaman masa lalunya dengan mobilnya untuk memberi Anda rekomendasi.
Di sini, Supratik menggunakan metode Pohon Keputusan untuk memberi Anda umpan balik berdasarkan tanggapan Anda. Setelah sarannya, Anda merasa tidak yakin dengan sarannya sehingga Anda bertanya kepada Aditya tentang rekomendasinya dan dia juga bertanya tentang preferensi Anda dan persyaratan lainnya.
Misalkan Anda mengulangi proses ini dan menanyakan 'n' pertanyaan ini kepada teman-teman. Sekarang Anda memiliki beberapa mobil untuk dipilih. Anda mengumpulkan semua suara dari teman Anda dan memutuskan untuk membeli mobil yang memiliki suara terbanyak. Anda sekarang telah menggunakan metode hutan acak untuk memilih mobil yang akan dibeli.
Namun, semakin Anda mengulangi proses ini, semakin rentan Anda terhadap overfitting. Itu karena kumpulan data Anda di pohon keputusan akan terus menjadi lebih spesifik. Hutan acak memerangi masalah ini dengan menggunakan keacakan.
Pro dan Kontra Pengklasifikasi Hutan Acak
Setiap algoritma pembelajaran mesin memiliki kelebihan dan kekurangan. Berikut ini adalah kelebihan dan kekurangan dari algoritma klasifikasi hutan acak:
Keuntungan
- Algoritme hutan acak secara signifikan lebih akurat daripada kebanyakan pengklasifikasi non-linier.
- Algoritma ini juga sangat kuat karena menggunakan beberapa pohon keputusan untuk sampai pada hasilnya.
- Pengklasifikasi hutan acak tidak menghadapi masalah overfitting karena mengambil rata-rata dari semua prediksi, menghilangkan bias dan dengan demikian, memperbaiki masalah overfitting.
- Anda dapat menggunakan algoritme ini untuk masalah regresi dan klasifikasi, menjadikannya algoritme yang sangat serbaguna.
- Hutan acak tidak membiarkan nilai yang hilang menyebabkan masalah. Mereka dapat menggunakan nilai median untuk mengganti variabel kontinu atau menghitung rata-rata tertimbang kedekatan dari nilai yang hilang untuk menyelesaikan masalah ini.
- Algoritme ini menawarkan kepada Anda fitur penting relatif yang memungkinkan Anda memilih fitur yang paling berkontribusi untuk pengklasifikasi Anda dengan mudah.
Kekurangan
- Algoritma ini secara substansial lebih lambat daripada algoritma klasifikasi lainnya karena menggunakan beberapa pohon keputusan untuk membuat prediksi. Ketika pengklasifikasi hutan acak membuat prediksi, setiap pohon di hutan harus membuat prediksi untuk input yang sama dan memilih yang sama. Proses ini bisa sangat memakan waktu.
- Karena kecepatannya yang lambat, pengklasifikasi hutan acak mungkin tidak cocok untuk prediksi waktu nyata.
- Model bisa sangat menantang untuk diinterpretasikan dibandingkan dengan pohon keputusan karena Anda dapat membuat pilihan dengan mengikuti jalur pohon. Namun, itu tidak mungkin di hutan acak karena memiliki banyak pohon keputusan.
Perbedaan antara Hutan Acak dan Pohon Keputusan
Pohon keputusan, seperti namanya, adalah diagram alur seperti pohon dengan cabang dan simpul. Algoritme membagi data berdasarkan fitur input di setiap node dan menghasilkan banyak cabang sebagai output. Ini adalah proses berulang dan meningkatkan jumlah cabang yang dibuat (output) dan diferensiasi data. Proses ini berulang sampai simpul dibuat di mana hampir semua data termasuk dalam kelas yang sama dan lebih banyak cabang atau pemisahan tidak mungkin dilakukan.
Di sisi lain, hutan acak menggunakan beberapa pohon keputusan, sehingga dinamakan 'hutan'. Ini mengumpulkan suara dari berbagai pohon keputusan yang digunakan untuk membuat prediksi yang diperlukan.
Oleh karena itu, perbedaan utama antara pengklasifikasi hutan acak dan pohon keputusan adalah bahwa yang pertama menggunakan koleksi yang terakhir. Berikut adalah beberapa perbedaan tambahan antara keduanya:
- Pohon keputusan menghadapi masalah overfitting tetapi hutan acak tidak. Itu karena pengklasifikasi hutan acak menggunakan himpunan bagian acak untuk mengatasi masalah ini.
- Pohon keputusan lebih cepat daripada hutan acak. Hutan acak menggunakan banyak pohon keputusan, yang membutuhkan banyak daya komputasi dan dengan demikian, lebih banyak waktu.
- Pohon keputusan lebih mudah diinterpretasikan daripada hutan acak dan Anda dapat mengonversi yang pertama dengan mudah sesuai aturan tetapi agak sulit untuk melakukan hal yang sama dengan yang terakhir.
Membangun Algoritma (Random Forest Sklearn)
Dalam contoh berikut, kami telah melakukan implementasi Python hutan acak dengan menggunakan perpustakaan scikit-learn. Anda dapat mengikuti langkah-langkah tutorial ini untuk membuat pengklasifikasi hutan acak Anda sendiri.
Sementara 80% tugas ilmu data mengharuskan Anda untuk mengoptimalkan data, yang mencakup pembersihan data, pembersihan, perbaikan nilai yang hilang, dan banyak lagi. Namun, dalam contoh ini, kami hanya akan fokus pada implementasi algoritme kami.
Langkah pertama: Impor perpustakaan dan muat dataset
Pertama, kita harus mengimpor perpustakaan yang diperlukan dan memuat dataset kita ke dalam bingkai data.
Memasukkan:
#Mengimpor perpustakaan yang diperlukan
impor panda sebagai pd
impor numpy sebagai np
impor matplotlib.pyplot sebagai plt
#Mengimpor kumpulan data
dari sklearn.datasets impor load_iris
kumpulan data = load_iris ()
Langkah kedua: Pisahkan set data menjadi set pelatihan dan set pengujian
Setelah kita mengimport library yang diperlukan dan memuat data, kita harus membagi dataset kita menjadi training set dan test set. Set pelatihan akan membantu kita melatih model dan set tes akan membantu kita menentukan seberapa akurat model kita sebenarnya.
Memasukkan:
# Sesuaikan pengklasifikasi ke set pelatihan
dari sklearn.tree impor DecisionTreeClassifier
model = DecisionTreeClassifier(kriteria = 'entropi' , splitter = 'terbaik' , random_state = 0)
model.fit(X_train, y_train)
Keluaran:
DecisionTreeClassifier(class_weight=None, criteria='entropy' , max_depth=None,
max_features=Tidak ada, max_leaf_nodes=Tidak ada,
min_impurity_decrease=0,0, min_impurity_split=Tidak ada,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0,0, presort=False, random_state=0,
pemisah = 'terbaik')
Langkah ketiga: Buat pengklasifikasi hutan acak
Sekarang, kita akan membuat pengklasifikasi hutan acak dengan menggunakan Python dan scikit-learn.
Memasukkan:
#Menyesuaikan pengklasifikasi ke set pelatihan
dari sklearn.ensemble impor RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, kriteria-'entropi', random_state = 0)
model.fit(X_train, y_train)
Keluaran:
RandomForestClassifier(bootstrap=Benar, class_weight=Tidak ada, kriteria='entropi',
max_depth=Tidak ada, max_features='auto', max_leaf_nodes=Tidak ada,
min_impurity_decrease=0,0, min_impurity_split=Tidak ada,
min_samples_leaf=1, min_sampes_split=2,
min_weight_fraction_leaf=0,0, n_estimator=100, n_jobs=Tidak ada,
oob_score=Salah, random_state=0, verbose=0, warm_start=Salah)
Langkah keempat: Prediksikan hasilnya dan buat matriks Kebingungan
Setelah kami membuat pengklasifikasi kami, kami dapat memprediksi hasilnya dengan menggunakannya pada set tes dan membuat matriks kebingungan dan mendapatkan skor akurasinya untuk model. Semakin tinggi skornya, semakin akurat model kami.
Memasukkan:
#Prediksi hasil set tes
y_pred = mode.predict(X_test)
#Buat matriks kebingungan
dari sklearn.metrics mengimpor kebingungan_matrix
cm = matrik_kebingungan(y_test, y_pred)
cm
keluaran :
larik ([[16, 0, 0]
[0, 17, 1]
[0, 0, 11]])
masukan :
#Dapatkan skor untuk model Anda
model.score(X_test, y_test)
keluaran :
0,9777777777777777
Kesimpulan
Pengklasifikasi hutan acak memiliki banyak aplikasi. Mereka adalah salah satu algoritme pembelajaran mesin yang paling kuat dan harus dimiliki oleh profesional AI dan ML mana pun.
Jika Anda tertarik untuk mempelajari lebih lanjut tentang Kecerdasan Buatan, lihat Program PG Eksekutif IIIT-B & upGrad dalam Pembelajaran Mesin & AI yang dirancang untuk para profesional yang bekerja dan menawarkan 450+ jam pelatihan ketat, 30+ studi kasus & tugas, IIIT -B Status Alumni, 5+ proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.
Apa itu Hutan Acak dalam pembelajaran mesin?
Random Forest adalah metode pembelajaran ensemble yang dapat memberikan prediksi yang lebih akurat daripada kebanyakan algoritma pembelajaran mesin lainnya. Biasanya digunakan dalam pembelajaran pohon keputusan. Sebuah hutan dibuat menggunakan pohon keputusan, setiap pohon keputusan adalah pengklasifikasi yang kuat dalam dirinya sendiri. Pohon keputusan ini digunakan untuk membuat hutan pengklasifikasi yang kuat. Hutan pengklasifikasi kuat ini memberikan prediksi yang lebih baik daripada pohon keputusan atau algoritme pembelajaran mesin lainnya.
Apa perbedaan antara hutan acak dan pohon keputusan?
Sebuah pohon keputusan adalah diagram alur yang menggambarkan proses analisis untuk masalah yang diberikan. Kami cenderung menggunakannya paling sering untuk masalah klasifikasi. Sebuah pohon keputusan menggambarkan proses eliminasi yang diperlukan untuk membuat klasifikasi. Berbeda dengan pohon keputusan, hutan acak didasarkan pada ansambel pohon dan banyak penelitian menunjukkan bahwa itu lebih kuat daripada pohon keputusan pada umumnya. Selain itu, hutan acak lebih tahan terhadap overfitting dan lebih stabil ketika ada data yang hilang.
Apa kerugian dari hutan acak?
Random Forest adalah model yang sedikit rumit. Ini bukan model kotak hitam dan tidak mudah untuk menginterpretasikan hasilnya. Ini lebih lambat daripada model pembelajaran mesin lainnya. Ini membutuhkan sejumlah besar fitur untuk mendapatkan akurasi yang baik. Random forest adalah jenis metode pembelajaran ensemble seperti metode ensemble lainnya seperti bagging, boosting, atau stacking. Metode-metode ini cenderung tidak stabil, artinya jika data pelatihan sedikit berubah, model akhir dapat berubah secara drastis.