Algoritma Klasifikasi - Hutan Acak
pengantar
Hutan acak adalah algoritma pembelajaran yang diawasi yang digunakan untuk klasifikasi dan regresi. Tetapi bagaimanapun, ini terutama digunakan untuk masalah klasifikasi. Seperti yang kita ketahui bahwa hutan terdiri dari pepohonan dan semakin banyak pohon berarti semakin kokoh. Demikian pula, algoritma hutan acak membuat pohon keputusan pada sampel data dan kemudian mendapatkan prediksi dari masing-masing sampel dan akhirnya memilih solusi terbaik melalui pemungutan suara. Ini adalah metode ansambel yang lebih baik daripada pohon keputusan tunggal karena mengurangi pemasangan berlebih dengan merata-ratakan hasilnya.
Bekerja dari Algoritma Hutan Acak
Kita dapat memahami cara kerja algoritma Random Forest dengan bantuan langkah-langkah berikut -
Step 1 - Pertama, mulailah dengan pemilihan sampel acak dari kumpulan data tertentu.
Step 2- Selanjutnya algoritma ini akan membuat pohon keputusan untuk setiap sampel. Kemudian akan didapatkan hasil prediksi dari setiap pohon keputusan.
Step 3 - Pada langkah ini, pemungutan suara akan dilakukan untuk setiap hasil yang diprediksi.
Step 4 - Terakhir, pilih hasil prediksi yang paling banyak dipilih sebagai hasil prediksi akhir.
Diagram berikut akan mengilustrasikan kerjanya -
Implementasi dengan Python
Pertama, mulailah dengan mengimpor paket Python yang diperlukan -
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
Selanjutnya, unduh dataset iris dari tautan webnya sebagai berikut -
path = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
Selanjutnya, kita perlu memberikan nama kolom ke dataset sebagai berikut -
headernames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']
Sekarang, kita perlu membaca dataset ke pandas dataframe sebagai berikut -
dataset = pd.read_csv(path, names=headernames)
dataset.head()
panjang sepal | lebar sepal | kelopak-panjang | kelopak-lebar | Kelas | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | Iris-setosa |
1 | 4.9 | 3.0 | 1.4 | 0.2 | Iris-setosa |
2 | 4.7 | 3.2 | 1.3 | 0.2 | Iris-setosa |
3 | 4.6 | 3.1 | 1.5 | 0.2 | Iris-setosa |
4 | 5.0 | 3.6 | 1.4 | 0.2 | Iris-setosa |
Pemrosesan awal data akan dilakukan dengan bantuan baris skrip berikut -
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values
Selanjutnya kita akan membagi data menjadi train and test split. Kode berikut akan membagi dataset menjadi 70% data pelatihan dan 30% data pengujian -
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)
Selanjutnya, latih model dengan bantuan class RandomForestClassifier dari sklearn sebagai berikut -
from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators=50)
classifier.fit(X_train, y_train)
Akhirnya, kita perlu membuat prediksi. Itu dapat dilakukan dengan bantuan skrip berikut -
y_pred = classifier.predict(X_test)
Selanjutnya, cetak hasilnya sebagai berikut -
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)
Keluaran
Confusion Matrix:
[
[14 0 0]
[ 0 18 1]
[ 0 0 12]
]
Classification Report:
precision recall f1-score support
Iris-setosa 1.00 1.00 1.00 14
Iris-versicolor 1.00 0.95 0.97 19
Iris-virginica 0.92 1.00 0.96 12
micro avg 0.98 0.98 0.98 45
macro avg 0.97 0.98 0.98 45
weighted avg 0.98 0.98 0.98 45
Accuracy: 0.9777777777777777
Pro dan Kontra Random Forest
Pro
Berikut ini adalah keuntungan dari algoritma Random Forest -
Ini mengatasi masalah overfitting dengan rata-rata atau menggabungkan hasil dari pohon keputusan yang berbeda.
Hutan acak bekerja dengan baik untuk sejumlah besar item data daripada pohon keputusan tunggal.
Hutan acak memiliki varian yang lebih kecil dari pohon keputusan tunggal.
Hutan acak sangat fleksibel dan memiliki akurasi yang sangat tinggi.
Penskalaan data tidak diperlukan dalam algoritme hutan acak. Ini menjaga akurasi yang baik bahkan setelah memberikan data tanpa penskalaan.
Penskalaan data tidak diperlukan dalam algoritme hutan acak. Ini menjaga akurasi yang baik bahkan setelah memberikan data tanpa penskalaan.
Kontra
Berikut ini adalah kerugian dari algoritma Random Forest -
Kompleksitas adalah kelemahan utama dari algoritma random forest.
Pembangunan hutan acak jauh lebih sulit dan memakan waktu daripada pohon keputusan.
Lebih banyak sumber daya komputasi diperlukan untuk mengimplementasikan algoritma Random Forest.
Ini kurang intuitif jika kita memiliki banyak koleksi pohon keputusan.
Proses prediksi menggunakan random forest sangat memakan waktu dibandingkan dengan algoritma lainnya.