Random Forest
$ P_XY $(X, Y) diasumsikan sebagai distribusi gabungan yang belum diketahui. Tujuannya untuk menemukan f(X) dalam memprediksi Y. Fungsi prediksi ditentukan oleh loss function, yaitu L (Y, f(X)). yang dinyatakan dengan persamaan:
$E_XY$(L(Y,f(X)))
Persamaan diatas menunjukkan hubungan distribusi X dan Y L(Y, f (X)) adalah hubungan seberapa dekat f(X) dengan Y, L adalah squared error loss
L(Y, f(X))= $ (Y-f(X))^2$ untuk regresi dan zero one loss untuk klasifikasi yang dinyatakan sebagai:
L(Y,f(X))= I(Y($\ne$ f(X)) = $\begin{cases} \mbox {0 if Y = f(x)} \\ \mbox {1 otherwise} \end{cases} $
Ternyata fungsi $E_XY$(L(Y,f(X))) untuk meminimalkan squared error loss dan kesalahan kuadrat yang dinyatakan dengan:
f(x) = E(Y|X=x)
atau dikenal sebagai fungsi regresi. Dalam klasifikasi, jika himpunan nilai-nilai yang tepat dari Y dilambangkan dengan $y$, maka akan meminimalkan nilai $E_XY$(L(Y,f(X))) untuk zero-one loss dan di dapatkan:
atau dikenal sebagai aturan Bayes.
Rangkaian yang menyusun f disebut base learners h1 (x), ..., hJ (x) dan base learners digabungkan untuk memberikan ensemble predictor f (x). Dalam regresi, rata-rata base learners dinyatakan:
f(x) = $\frac{1}{J}$ $ \sum^{1}_{j=1} {h_j(x)}$
Sedangkan dalam klasifikasi, f(x) merupakan class/kelas yang paling sering diprediksi (voting):
Dalam Random Forests base learners “j” ditandai sebagai hj (X, Θj), di mana Θj adalah kumpulan variabel acak dan Θj adalah independen untuk j = 1, 2,3 ..., J. Untuk memahami algoritma Random Forest, penting untuk memiliki pengetahuan mendasar tentang jenis pohon yang digunakan sebagai base learner.
Pembagian yang digunakan pohon untuk mempartisi sebuah node menjadi dua turunannya dipilih dengan mempertimbangkan setiap kemungkinan pemisahan pada setiap variabel prediktor dan memilih yang "terbaik" sesuai dengan beberapa kriteria. Dalam regresi, jika nilai respons pada node adalah y1, ..., yn, kriteria pemisahan yang khas adalah rata-rata kuadrat pada node yang dinyatakan sebagai:
Q = $ \frac{1}{n} $ $ \sum^{n}_{i=1} {(y_i - \bar y)^2}$
dimana
$ \bar{y}$ = $ \frac{1}{n} $ $ \sum^{n}_{i=1} {1 y_i}$
merupakan nilai prediksi pada simpul (rata-rata nilai respons). Dalam konteks klasifikasi di mana kelas K dilambangkan 1,. . . , K, kriteria pemisahan yang umum adalah indeks Gini yang dinyatakan:
Q = $ \sum^{K}_{k\ne k'} {\hat Pk \hat Pk'}$
Dimana
$ \hat{Pk}$
merupakan pengamatan kelas 'k' dalam simpul yang dinyatakan:
$ \hat{Pk}$ = $ \frac{1}{n} $ $ \sum^{n}_{i=1} {y_i = k}$
Kriteria pemisahan di ukur berdasarkan ‘goodness of fit’ (regresi) atau kemurnian (klasifikasi) untuk sebuah node, dengan nilai yang besar mewakili ‘poor fit’ (regresi) atau node tidak murni (klasifikasi). Pemisahan menciptakan dua node turunan, satu di sebelah kiri dan satu di sebelah kanan. hal ini menunjukkan kriteria pemisahan untuk dua turunan sebagai QL dan QR dan ukuran sampel mereka dengan nL dan nR, pemisahan dipilih untuk meminimalkan Qsplit = nLQL + nRQR.
Untuk variabel prediktor kontinu, pemisahan terbaik memerlukan pengurutan nilai-nilai prediktor dan mempertimbangkan pemisahan antara setiap pasangan yang berbeda dari nilai berturut-turut. Nilai-nilai QL, QR dan Qsplit dihitung untuk masing-masing titik perpecahan yang mungkin, biasanya menggunakan algoritma. Untuk variabel prediktor kategori, QL, QR dan Qsplit dihitung untuk memilih subset kategori setiap turunan node.
Setelah pemisahan telah dipilih, data dipartisi ke dalam dua node turunan dan masing-masing node diperlakukan dengan cara yang sama seperti simpul asli. Prosedur berlanjut secara rekursif sampai kriteria berhenti terpenuhi. Sebagai contoh, prosedur dapat berhenti ketika semua node yang tidak terhubung mengandung lebih sedikit dari beberapa kasus tertentu. Ketika kriteria terpenuhi dan berhenti, simpul yang tidak terhubung disebut “terminal node”. Nilai prediksi diperoleh untuk semua pengamatan di terminal node dengan rata-rata respons untuk masalah regresi atau menghitung kelas yang paling sering untuk masalah klasifikasi.
Random Forest bagus untuk klasifikasi. Dapat digunakan untuk membuat prediksi kategori dengan beberapa nilai yang mungkin dan dapat dikalibrasi untuk probabilitas output. Satu hal yang perlu diwaspadai adalah overfitting. Random Forest rawan terjadi overfitting, terutama ketika bekerja dengan dataset yang relatif kecil. Perlu di curigai jika model data dapat membuat prediksi yang "terlalu bagus" pada set uji menggunakan Random Forest. Salah satu cara overfitting adalah menggunakan fitur yang benar-benar relevan dalam model data yang digunakan.
Random Forest dapat digunakan sebagai regresi dengan memperluas 'tree' sepenuhnya sehingga setiap daun memiliki tepat satu nilai. Breiman menyarankan untuk membuat regresi random forest dengan cara memperluas pohon secara acak. Kemudian sebuah prediksi secara sederhana mengembalikan variabel respon individual dari distribusi dapat dibangun jika 'forest' cukup besar. Satu peringatan bahwa perkembangan 'tree' sepenuhnya dapat menutupi atau melebihi kapasitas: jika itu terjadi, intervalnya akan sia-sia, seperti prediksi. Hal yang diharapkan adalah sama seperti akurasi dan presisi.
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
from sklearn.datasets import load_iris
iris=load_iris()
X= pd.DataFrame(iris.data, columns=iris.feature_names)
X.tail()
Y= iris.target
Y
clf = RandomForestClassifier(n_estimators=100, max_depth=2,
random_state=0)
clf.fit(X, Y)
print(clf.feature_importances_)
print(clf.predict([[6.7, 3.0, 5.2, 2.3]]))
>>> from sklearn.ensemble import RandomForestRegressor
import pandas as pd
>>> from sklearn.datasets import load_boston
boston=load_boston()
X= pd.DataFrame(boston.data, columns=boston.feature_names)
X.tail()
Y=boston.target
Y
clf = RandomForestRegressor(n_estimators=100, max_depth=2,random_state=0)
clf.fit(X, Y)
print(clf.feature_importances_)
print(clf.predict([[0.06263, 0.0, 11.93, 0.0, 0.573, 6.593, 69.1, 2.4786, 1.0, 273.0, 21.0, 391.99, 9.67]]))
Cutler .A., Cutler, D.R., and Stevens, J.R. 2011. Random Forest. Chapter in Machine Larning: 1-20.
Hanselmann, M., Kirchner, M., Köthe, U., and Hove, EARD. 2009. Towards Digital Staining using Imaging Mass Spectrometry and Random Forests-Technical Report. A review: 1-20
Louppe, G. 2014. Understanding Random Forest. PH.D disertation: Faculty of Applied Sciences Department of Electrical Engineering & Computer Science.
Scikit-learn: Machine learning, diakses pada tanggal 06/11/2019 pukul 18.30
Yhat. 2013. Random Forests in Python. by The Yhat Blog, diakses pada tanggal 06/11/2019 pukul 19.15