Machine Learning

 Random Forest

Adelya Putri Alamsyah1, Muhammad Akmal Hidayat2, Hervan Pratama3, Rina Amelia4, Ahmad Azizul Akbar5, Ahmad Salman6    

Bisnis Digital, Fakultas Ekonomi dan Bisnis, Universitas Negeri Makassar, Indonesia

e-mail: Bisnis Digital, Fakultas Ekonomi dan Bisnis, Universitas Negeri Makassar, Indonesia

e-mail: adelyaptrias@gmail.com 1, mhmmdakmalhdyt04@gmail.com 2, pratamahervan003@gmail.com 3, rinaamelia979@gmail.com 4, ahmadsalmann2547@gmail.com, ahmadazizul26@gmail.com 6


ABSTRAK

Random Forest merupakan salah satu algoritma pembelajaran mesin yang banyak digunakan untuk melakukan klasifikasi dan regresi. Algoritma ini menggabungkan hasil dari beberapa pohon keputusan untuk meningkatkan kinerja secara keseluruhan. Setiap pohon keputusan dibangun secara terpisah dengan menggunakan subset data pelatihan dan fitur yang dipilih secara acak. Dalam proses klasifikasi, prediksi akhir diperoleh melalui voting dari seluruh pohon keputusan yang ada.Salah satu keunggulan dari Random Forest adalah kemampuannya dalam mengelola data yang besar dengan fitur yang tidak lengkap, serta memiliki tingkat kepekaan yang rendah terhadap overfitting. Selain itu, algoritma ini juga mampu memberikan estimasi mengenai kepentingan fitur. Namun, terdapat beberapa kekurangan seperti penggunaan memori yang besar dan waktu komputasi yang lama. Sebagai contoh, algoritma ini dapat digunakan untuk mengklasifikasikan data iris dengan menggunakan library sklearn pada bahasa pemrograman Python.

Kata kunci: 1.Random Forest 2.Pohon keputusan 3.Bahasa pemrograman Python

ABSTRACT

Random Forest is a machine learning algorithm that is widely used to carry out classification and regression. This algorithm combines the results of multiple decision trees to improve overall performance. Each decision tree is built separately using a randomly selected subset of the training data and features. In the classification process, the final prediction is obtained through voting from all existing decision trees. One of the advantages of Random Forest is its ability to manage large data with incomplete features, and has a low level of sensitivity to overfitting. Apart from that, this algorithm is also able to provide estimates regarding feature importance. However, there are several disadvantages such as large memory usage and long computing time. For example, this algorithm can be used to classify iris data using the Sklearn library in the Python programming language

Keywords: 1.Random Forest 2.Decision tree 3.Python programming language

  1. Pendahuluan

Definisi Random Forest

Random forest adalah algoritma pembelajaran mesin yang menggabungkan hasil dari beberapa pohon keputusan untuk mendapatkan satu hasil. Random forest merupakan suatu algoritma yang digunakan pada klasifikasi data dalam jumlah yang besar. Seperti namanya, Forest atau “hutan” terbentuk dari banyak pohon yang diperoleh melalui sintesis bagging atau bootstrap. Setiap pohon Random Forest akan membuat prediksi kelas. Prediksi kelas dengan suara terbanyak menjadi prediksi kandidat dalam model. Semakin banyak jumlah pohon, semakin tinggi akurasinya dan terhindar dari masalah overfitting.

Pohon yang dibangun dibagi secara rekursif dari data pada kelas yang sama. Pemecahan (split) digunakan untuk membagi data berdasarkan jenis atribut yang digunakan. Pembuatan decision tree pada saat penentuan klasifikasi, pohon yang buruk akan membuat prediksi acak yang saling bertentangan. Sehingga,beberapa decision tree akan menghasilkan jawaban yang baik. Random forest merupakan salah satu cara penerapan dari pendekatan diskriminasi stokastik pada klasifikasi.

Proses Klasifikasi akan berjalan jika semua tree telah terbentuk. Pada saat proses klasifikasi selesai dilakukan, inisialisasi dilakukan dengan sebanyak data berdasarkan nilai akurasinya. Keuntungan penggunaan random forest yaitu mampu mengklasifiksi data yang memiliki atribut yang tidak lengkap, dapat digunakan untuk klasifikasi dan regresi akan tetapi tidak terlalu bagus untuk regresi, lebih cocok untuk pengklasifikasian data serta dapat digunakan untuk menangani data sampel yang banyak. Proses klasifikasi pada random forest berawal dari memecah data sampel yang ada kedalam decision tree secara acak.

Setelah pohon terbentuk, maka akan dilakukan voting pada setiap kelas dari data sampel. Kemudian, mengkombinasikan vote dari setiap kelas kemudian diambil vote yang paling banyak. Dengan menggunakan random forest pada klasifikasi data maka, akan menghasilkan vote yang paling baik. Random Forest juga dapat digunakan untuk mendeteksi kualitas seafood didapatkan bahwa hasil akurasinya mencapai 99% ,hal ini membuktikan bahwa Random Forest bagus untuk mendeteksi kualitas kesegaran produk perikanan laut.

Metode umum dari random decision forest pertama kali diusulkan oleh Ho pada tahun 1995,Tin Kam Ho yang menetapkan bahwa pohon-pohon keputusan di random forest membelah diri dengan hyperplanes yang miring, jika secara acak dibatasi untuk peka hanya pada dimensi fitur yang dipilih, maka dapat memperoleh akurasi ketika pohon-pohon keputusan tumbuh tanpa terlalu banyak berlatih. Sebuah karya berikutnya pada tema yang sama menyimpulkan bahwa metode pemisahan lain, selama pohon-pohon keputusan secara acak dipaksa tidak peka terhadap beberapa dimensi fitur, berperilaku sama. Perhatikan bahwa pengamatan terhadap pengklasifikasi yang lebih kompleks (hutan yang lebih besar) yang semakin akurat hampir secara monoton sangat kontras dengan keyakinan umum bahwa kompleksitas penggolongan hanya dapat tumbuh pada tingkat akurasi tertentu sebelum disakiti dengan overfitting. Penjelasan tentang perlawanan metode hutan terhadap overtraining dapat ditemukan dalam teori Kleinberg tentang diskriminasi stokastik.

Awal mula perkembangan gagasan Breiman tentang random forest dipengaruhi oleh karya Amit dan Geman yang memperkenalkan gagasan pencarian lebih dari satu subset acak dari keputusan yang tersedia ketika memisahkan sebuah simpul, dalam konteks menumbuhkan satu pohon. Gagasan pemilihan subruang acak dari Ho juga berpengaruh dalam desain random forest. Dalam metode ini, hutan pepohonan ditanam, dan variasi di antara pepohonan diperkenalkan dengan memproyeksikan data pelatihan ke dalam subruang yang dipilih secara acak, sebelum memasang setiap pohon atau setiap simpul. Kemudian, jadilah ide pengoptimalan node acak, di mana keputusan di setiap node dipilih dengan prosedur acak, dari optimasi deterministik yang pertama kali diperkenalkan oleh Dietterich.

Random forest pertama kali di publikasikan dengan beberapa persiapan ialah melalui makalah oleh Leo Breiman Makalah ini menjelaskan metode membangun hutan pohon yang tidak berkorelasi menggunakan prosedur seperti CART (Classification And Regression Trees), dikombinasikan dengan pengoptimalan simpul acak dan bagging. Selain itu, makalah ini menggabungkan beberapa bahan, beberapa sebelumnya dikenal dan beberapa novel, yang membentuk dasar dari praktik modern hutan acak, khususnya:

  1. Menggunakan out-of-bag error sebagai perkiraan kesalahan generalisasi.

  2. Mengukur variabel penting melalui permutasi.

Laporan ini juga menawarkan hasil teoretis pertama untuk random forest dalam bentuk batas pada kesalahan generalisasi yang tergantung pada kekuatan pohon di hutan dan korelasinya.

Konsep Random Forest

Random Forest merupakan salah satu algoritma yang populer dalam machine learning untuk masalah klasifikasi dan regresi. Ini adalah bentuk dari ensemble learning, yang berarti menggabungkan beberapa model pembelajaran mesin untuk meningkatkan kinerja secara keseluruhan. Konsep dasar dari Random Forest adalah sebagai berikut:

1. Decision Trees: 

Random Forest terdiri dari banyak pohon keputusan (decision trees). Setiap pohon keputusan dibangun secara independen dengan menggunakan subset dari data pelatihan (bootstrap sampling) dan subset dari fitur (random feature selection).Random Forest adalah algoritma dalam machine learning yang digunakan untuk pengklasifikasian data set dalam jumlah besar. Karena fungsinya bisa digunakan untuk banyak dimensi dengan berbagai skala dan performa yang tinggi. Klasifikasi ini dilakukan melalui penggabungan tree dalam decision tree dengan cara training dataset yang Anda miliki.

Salah satu algoritma terbaik dalam machine learning ini menggunakan decision tree atau pohon keputusan untuk melangsungkan proses seleksi, di mana tree atau pohon decision tree akan dibagi secara rekursif berdasarkan data pada kelas yang sama. Dalam hal ini, penggunaan tree yang semakin banyak akan memengaruhi akurasi yang didapat menjadi lebih optimal. Penentuan klasifikasi dengan Random Forest dilakukan berdasarkan hasil voting dan tree yang terbentuk. 

Random Forest bekerja dengan membangun beberapa decision tree dan menggabungkannya demi mendapatkan prediksi yang lebih stabil dan akurat. ‘Hutan’ yang dibangun oleh Random Forest adalah kumpulan decision tree di mana biasanya dilatih dengan metode bagging. Ide umum dari metode bagging adalah kombinasi model pembelajaran untuk meningkatkan hasil keseluruhan

Algoritma Random Forest meningkatkan keacakan pada model sambil menumbuhkan tree. Alih-alih mencari fitur yang paling penting saat memisahkan sebuah node, Random Forest mencari fitur terbaik di antara subset fitur yang acak. Alhasil, cara ini menghasilkan keragaman yang luas dan umumnya menghasilkan model yang lebih baik.

Random Forest bekerja dalam dua fase. Fase pertama yaitu menggabungkan sejumlah N decision tree untuk membuat Random Forest. Kemudian fase kedua adalah membuat prediksi untuk setiap tree yang dibuat pada fase pertama.

Sumber: trivusi.web.id

Cara kerja algoritma Random Forest dapat dijabarkan dalam langkah-langkah berikut:

  1. Algoritma memilih sampel acak dari dataset yang disediakan.

  2. Membuat decision tree untuk setiap sampel yang dipilih. Kemudian akan didapatkan hasil prediksi dari setiap decision tree yang telah dibuat.

  3. Dilakukan proses voting untuk setiap hasil prediksi. Untuk masalah klasifikasi menggunakan modus (nilai yg paling sering muncul), sedangkan untuk masalah regresi akan menggunakan mean (nilai rata-rata).

  4. Algoritma akan memilih hasil prediksi yang paling banyak dipilih (vote terbanyak) sebagai prediksi akhir.

Random Forest merupakan salah satu algoritma yang populer dalam machine learning untuk masalah klasifikasi dan regresi. Ini adalah bentuk dari ensemble learning, yang berarti menggabungkan beberapa model pembelajaran mesin untuk meningkatkan kinerja secara keseluruhan.

2. Bootstrap Sampling: 

Untuk setiap pohon keputusan dalam Random Forest, dataset pelatihan diambil secara acak dengan penggantian. Ini berarti beberapa contoh dapat muncul beberapa kali dalam setiap dataset yang digunakan untuk melatih pohon.Bootstrapping adalah teknik pengambilan sampel ulang statistik yang melibatkan pengambilan sampel acak dari kumpulan data dengan penggantian . Hal ini sering digunakan sebagai alat untuk mengukur ketidakpastian yang terkait dengan model pembelajaran mesin.


Untuk tujuan keuangan kuantitatif, bootstrapping sangat berguna karena memungkinkan pembuatan sampel baru dari suatu populasi tanpa harus pergi dan mengumpulkan "data pelatihan" tambahan. Dalam penerapan keuangan kuantitatif seringkali tidak mungkin menghasilkan lebih banyak data dalam kasus rangkaian harga aset keuangan karena hanya ada satu "sejarah" yang dapat diambil sampelnya.


Idenya adalah untuk mengambil sampel data berulang kali dengan penggantian dari set pelatihan asli untuk menghasilkan beberapa set pelatihan terpisah. Ini kemudian digunakan untuk memungkinkan metode "meta-pelajar" atau "ensemble" mengurangi varians prediksi mereka, sehingga sangat meningkatkan kinerja prediksi mereka.Dua dari teknik ansambel berikut – bagging dan random forest – banyak menggunakan teknik bootstrapping

Boosting merupakan salah satu teknik yang menggunakan konsep pembelajaran ensembel. Algoritme peningkatan menggabungkan beberapa model sederhana (juga dikenal sebagai pembelajar lemah atau penduga dasar) untuk menghasilkan keluaran akhir. Hal ini dilakukan dengan membangun model dengan menggunakan model lemah secara seri.

Ada beberapa algoritma peningkatan; AdaBoost adalah algoritma peningkatan pertama yang benar-benar sukses yang dikembangkan untuk tujuan klasifikasi biner. AdaBoost adalah singkatan dari Adaptive Boosting dan merupakan teknik peningkatan umum yang menggabungkan beberapa “pengklasifikasi lemah” menjadi satu “pengklasifikasi kuat”. 


3. Random Feature Selection: 

Ketika membangun setiap pohon keputusan, hanya sebagian kecil dari fitur yang dipertimbangkan untuk digunakan dalam menentukan split. Ini membantu dalam meningkatkan variasi antara pohon-pohon dalam ensemble, sehingga membuat Random Forest lebih kuat secara keseluruhan. Contoh prosedur yang mirip dengan pencarian acak adalah  model Random Forest  yang melakukan pemilihan fitur secara acak untuk setiap pohon.


Idenya cukup sederhana: pilih fitur  secara acak , ukur performa model dengan  validasi silang k-fold , dan ulangi berkali-kali. Kombinasi fitur yang memberikan performa terbaik itulah yang kami cari.

Lebih tepatnya, ini adalah langkah-langkah yang harus diikuti:

  1. Hasilkan bilangan bulat acak  N antara 1 dan jumlah fitur.

  2. Hasilkan urutan acak  N bilangan bulat antara 0 dan  N-1 tanpa pengulangan. Urutan ini mewakili rangkaian fitur kami. Ingatlah bahwa array Python dimulai dari 0.

  3. Latih model pada fitur-fitur ini dan validasi silang dengan validasi silang k-fold, sehingga menghemat  nilai rata-rata  beberapa ukuran kinerja.

  4. Ulangi dari poin 1 sebanyak yang Anda mau.

  5. Terakhir, dapatkan rangkaian fitur yang memberikan performa terbaik sesuai dengan ukuran performa yang dipilih.


4. Voting: 

Ketika memprediksi output untuk suatu sampel, setiap pohon memberikan prediksi. Dalam klasifikasi, prediksi ini bisa berupa kelas mayoritas yang dipilih oleh pohon-pohon. Dalam regresi, prediksi ini bisa berupa rata-rata prediksi dari pohon-pohon. Voting adalah salah satu metode yang digunakan dalam Random Forest untuk menghasilkan prediksi akhir. Setiap pohon keputusan dalam Random Forest memberikan prediksi untuk setiap sampel data, dan prediksi tersebut kemudian diambil mayoritas untuk menentukan prediksi akhir.

Dalam konteks klasifikasi, voting dilakukan dengan menghitung kelas mayoritas dari semua prediksi pohon keputusan. Misalnya, jika terdapat 100 pohon keputusan dalam Random Forest dan 70 pohon memprediksi sampel sebagai kelas A, dan 30 pohon memprediksi sampel sebagai kelas B, maka hasil voting akan menentukan bahwa sampel tersebut termasuk dalam kelas A. Dalam konteks regresi, voting dilakukan dengan mengambil rata-rata dari semua prediksi pohon keputusan. 

Misalnya, jika terdapat 100 pohon keputusan dan masing-masing memberikan prediksi nilai yang berbeda untuk suatu sampel, hasil voting akan menjadi rata-rata dari semua prediksi tersebut.Dengan menggunakan metode voting, Random Forest dapat menghasilkan prediksi yang lebih stabil dan biasanya memiliki kinerja yang lebih baik daripada pohon keputusan tunggal, karena mengurangi overfitting dan meningkatkan generalisasi melalui kombinasi dari banyak model.

Keuntungan dari Random Forest termasuk:

  • Mampu menangani data yang besar dengan baik dan memiliki kemampuan untuk menangani banyak fitur.

  • Kurang rentan terhadap overfitting dibandingkan dengan pohon keputusan tunggal.

  • Dapat memberikan perkiraan kepentingan fitur, yang dapat membantu dalam pemahaman masalah.

Namun, ada beberapa kelemahan yang perlu diperhatikan, seperti kecenderungan untuk membesar dalam memori dan waktu komputasi yang lebih lama dibandingkan dengan model yang lebih sederhana. Tetapi, kelebihan yang ditawarkan dalam kinerja sering kali mengimbangi kerugian tersebut.

Contoh Manual (Rumus Random Forest)

Misalnya kita menggunakan rumus entropi, sederhannya entropi adalah ukuran ketidak teraturan (measure of disorder), bisa juga disebut dengan kemurnian (purity).

Rumusnya:

keterangan:

  • S   = Himpunan kasus

  •  = Jumlah anggota dari S

  • Pi  = Proporsi dari Si tehadap S

Contoh sederhana

  • Misalnya kita memiliki data set yang terdiri dari kelas positif dan kelas negatif, sehingga ‘i’ pada rumus bisa bernilai positif atau negatif.

  • Jika kita memiliki total jumlah 10 tupel, lalu terbagi pada data positif sebanyak 3 tupel dan untuk data negatif sebanyak 7 tupel, maka P+ adalah 3/10 dan P- adalah 7/10


Visualisasi entropi 

  • Kita melihat lingkaran yang paling kiri (hanya berisi data negatif), lingkaran tersebut terletak di angka 0 pada P+. Wajar saja, karna yang kita hitung adalah P+, sehingga jika lingkaran berisi kumpulan nilai negatif, maka ia akan berada di paling kiri.

  • Kita bisa memahami jika lingkaran hanya berisi data negatif atau positif saja, maka itu berarti tingkat kemurniannya tinggi dan tingkat ketidakteraturannya rendah.

  • Selain itu kita bisa perhatikan lingkaran ditengah yang menunnjukkan keberagaman dari kelas dibagi sama rata antara kelas positif dan negatif. terlihat bahwa lingkaran tersebut pada nilai entropi = 1 di sumbu y. Artinya semakin tinggi keberagaman / ketidakteraturan dalam suatu lingkaran, maka semakin tinggi juga nilai entropinya.


Sebagai kesimpulan, Berdasarkan seluru penjelasan mengenai entropi di atas, kita bisa menyimpulkan bahwa entropi merupakan ukuran ketidakteraturan atau ukuran kemurnian. semakin tinggi ukuran ketidakteraturan, semakin rendah ukuran kemurnian, begitu juga sebaliknya. Tujuan kita adalah bagaimana caranya mengurangi ketidakteraturan tersebut.

  1. Hasil dan Pembahasan

Contoh Kasus Model Phyton

Memprediksi Pengurangan Karyawan menggunakan data Atrisi & Kinerja Karyawan IBM HR Analytics : 

2.1 Install Packages

Code : 

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sns

%matplotlib inline

sns.set_style("whitegrid")

plt.style.use("fivethirtyeight")

2.2 Dataset

Code : 

df = pd.read_csv("E:/Dokumen Adel/Semester 6/WA_Fn-UseC_-HR-Employee-Attrition.csv") 

df.head()


Gambar 1. Menampilkan Dataset

Gambar menunjukkan kode Python yang digunakan untuk menerapkan algoritma random forest pada dataset. Algoritma random forest adalah algoritma ensemble learning yang menggabungkan hasil dari beberapa decision tree untuk mendapatkan prediksi yang lebih akurat.

2.3 Exploratory Data Analysis

Code : 

sns.countplot(x='Attrition', data=df)

Gambar 2. Menampilan Exploratory Data Analysis


Gambar menunjukkan hasil Exploratory Data Analysis (EDA) untuk dataset yang digunakan dalam algoritma random forest. EDA merupakan langkah penting dalam proses machine learning untuk memahami karakteristik dan pola dalam dataset sebelum membangun model.

2.4 Data Processing

Gambar 3. Menampilkan Kode Processing Data

Gambar ini menunjukkan kode Python yang digunakan untuk memproses data. Kode tersebut menggunakan library Pandas untuk melakukan beberapa operasi pada data, seperti:

  • Membaca data dari file CSV: Kode pertama menggunakan fungsi pd.read_csv() untuk membaca data dari file CSV. Fungsi ini mengambil nama file CSV sebagai parameter dan mengembalikan DataFrame Pandas yang berisi data dari file. Dalam kode, file CSV dinamai data.csv.

  • Menghapus kolom: Kode selanjutnya menggunakan metode remove() pada objek DataFrame untuk menghapus kolom bernama Attrition. Kolom ini kemungkinan berisi informasi tentang apakah karyawan dalam dataset tersebut telah berhenti atau tidak.

  • Mengubah data kategorikal menjadi dummy: Kode selanjutnya menggunakan fungsi pd.get_dummies() untuk mengubah data kategorikal dalam DataFrame menjadi variabel dummy. Variabel dummy adalah kolom baru yang ditambahkan ke DataFrame yang berisi nilai 1 jika nilai di kolom kategorikal sesuai dengan nilai tertentu, dan 0 jika tidak. Dalam kode, variabel dummy dibuat untuk semua kolom kategorikal dalam DataFrame yang terdaftar dalam daftar categorical_col.

  • Mengubah data kategorikal menjadi numerik: Kode selanjutnya menggunakan kelas LabelEncoder dari library scikit-learn untuk mengubah data kategorikal dalam DataFrame menjadi nilai numerik. Nilai numerik ini kemudian dapat digunakan oleh algoritma machine learning. Dalam kode, encoder label digunakan untuk semua kolom kategorikal dalam DataFrame yang terdaftar dalam daftar categorical_col.

  • Membagi data menjadi set pelatihan dan set pengujian: Kode terakhir menggunakan fungsi train_test_split() dari library scikit-learn untuk membagi data menjadi set pelatihan dan set pengujian. Set pelatihan digunakan untuk melatih model machine learning, sedangkan set pengujian digunakan untuk mengevaluasi kinerja model. Dalam kode, data dibagi menjadi dua set dengan ukuran yang sama (50% untuk pelatihan dan 50% untuk pengujian).

Gambar tersebut menunjukkan operasi dasar yang digunakan dalam pemrosesan data. Operasi ini dapat digunakan untuk membersihkan data, mempersiapkan data untuk analisis, dan melatih model machine learning.

2.5 Menerapkan algoritma Random Forest

Gambar 4. Menampilkan Code dalam Menerapkan Algoritma Random Forest


Gambar menunjukkan kode Python yang digunakan untuk menerapkan algoritma random forest pada dataset. Algoritma random forest adalah algoritma ensemble learning yang menggabungkan hasil dari beberapa decision tree untuk mendapatkan prediksi yang lebih akurat.

  • Memuat Library:

Kode pertama memuat library yang diperlukan untuk implementasi algoritma random forest, yaitu sklearn dan numpy.

  • Memuat Dataset:

Kode selanjutnya memuat dataset yang akan digunakan untuk melatih model random forest. Dataset tersebut dimuat dari file CSV menggunakan fungsi pd.read_csv().

  • Membagi Dataset:

Dataset kemudian dibagi menjadi dua bagian, yaitu set pelatihan dan set pengujian. Set pelatihan digunakan untuk melatih model, sedangkan set pengujian digunakan untuk mengevaluasi kinerja model. Pembagian dataset dilakukan menggunakan fungsi train_test_split() dari library sklearn.

  • Membuat Model Random Forest:

Kode selanjutnya membuat model random forest menggunakan kelas RandomForestClassifier() dari library sklearn. Model tersebut diinisialisasi dengan beberapa parameter, seperti jumlah decision tree (n_estimators), maksimum kedalaman tree (max_depth), dan minimum jumlah data yang dibutuhkan untuk membagi node (min_samples_split).

  • Melatih Model:

Model random forest dilatih pada set pelatihan menggunakan metode fit(). Metode ini menerima set data sebagai input dan membangun model berdasarkan data tersebut.

  • Mengevaluasi Model:

Kinerja model random forest dievaluasi pada set pengujian menggunakan metode score(). Metode ini menerima set data sebagai input dan mengembalikan skor akurasi model.

  • Membuat Prediksi:

Model random forest digunakan untuk membuat prediksi pada data baru menggunakan metode predict(). Metode ini menerima data baru sebagai input dan mengembalikan prediksi untuk data tersebut

 

Kesimpulan Gambar menunjukkan implementasi dasar algoritma random forest dan langkah-langkah untuk melatih, mengevaluasi, dan membuat prediksi. Algoritma ini merupakan alat yang kuat untuk klasifikasi machine learning dengan performa yang baik pada dataset yang digunakan.


2.6 Implementasi algoritma Random Forest Classifier menggunakan pustaka Scikit-learn (sklearn)

Code : 

from sklearn.ensemble import RandomForestClassifier

rf_clf = RandomForestClassifier(n_estimators=100)

rf_clf.fit(X_train, y_train)

print_score(rf_clf, X_train, y_train, X_test, y_test, train=True)

print_score(rf_clf, X_train, y_train, X_test, y_test, train=False)

Gambar 5. Menampilkan Hasil Code Menggunakan Scikit-Learn


Gambar menunjukkan hasil dari pelatihan dan evaluasi model machine learning  Scikit-Learn pada dataset. Model yang digunakan adalah algoritma random forest, yang merupakan algoritma ensemble learning yang menggabungkan hasil dari beberapa decision tree untuk mendapatkan prediksi yang lebih akurat.


Evaluasi Model

  • Skor Akurasi: 86.62%

  • Skor Presisi: 0.7478

  • Skor Recall: 0.8662

  • Skor F1: 0.8192

Penjelasan Skor Evaluasi 

  • Skor Akurasi: Skor akurasi menunjukkan persentase data yang diklasifikasikan dengan benar oleh model. Dalam hal ini, model random forest mampu mengklasifikasikan 86.62% data dengan benar.

  • Skor Presisi: Skor presisi menunjukkan proporsi prediksi positif yang benar. Dalam hal ini, 74.78% dari prediksi positif model random forest benar.

  • Skor Recall: Skor recall menunjukkan proporsi data positif yang benar-benar teridentifikasi oleh model. Dalam hal ini, 86.62% dari data positif dalam dataset teridentifikasi dengan benar oleh model random forest.

  • Skor F1: Skor F1 adalah metrik yang menggabungkan skor presisi dan recall. Skor F1 yang tinggi menunjukkan keseimbangan yang baik antara presisi dan recall. Dalam hal ini, skor F1 model random forest sebesar 0.8192 menunjukkan keseimbangan yang baik.


Hasil dalam gambar menunjukkan bahwa model random forest pada dataset ini mencapai kinerja yang cukup baik. Model tersebut mampu mengklasifikasikan data dengan akurasi 86.62% dan menunjukkan keseimbangan yang baik antara presisi dan recall.

2.7 Random Forest hyperparameter tuning

  1. Randomized Search Cross Validation

Code : 

from sklearn.ensemble import RandomForestClassifier

from sklearn.model_selection import RandomizedSearchCV

n_estimators = [int(x) for x in np.linspace(start=200, stop=2000, num=10)]

max_features = ['auto', 'sqrt']

max_depth = [int(x) for x in np.linspace(10, 110, num=11)]

max_depth.append(None)

min_samples_split = [2, 5, 10]

min_samples_leaf = [1, 2, 4]

bootstrap = [True, False]

random_grid = {

   'n_estimators': n_estimators,

   'max_features': max_features,

   'max_depth': max_depth,

   'min_samples_split': min_samples_split,

   'min_samples_leaf': min_samples_leaf,

   'bootstrap': bootstrap

}

rf_clf = RandomForestClassifier(random_state=42)

rf_cv = RandomizedSearchCV(

   estimator=rf_clf,

   scoring='f1',

   param_distributions=random_grid,

   n_iter=200,

   cv=5,

   verbose=1,

   random_state=42,

   n_jobs=-1

)

rf_cv.fit(X_train, y_train)

rf_best_params = rf_cv.best_params_

print(f"Best paramters: {rf_best_params})")

rf_clf = RandomForestClassifier(**rf_best_params)

rf_clf.fit(X_train, y_train)

print_score(rf_clf, X_train, y_train, X_test, y_test, train=True)

print_score(rf_clf, X_train, y_train, X_test, y_test, train=False)

Gambar 6. Hasil Code Randomized Search Cross Validation


Gambar menunjukkan hasil dari pelatihan dan evaluasi model machine learning Randomized Search Cross Validation  pada dataset. Model yang digunakan adalah algoritma random forest, yang merupakan algoritma ensemble learning yang menggabungkan hasil dari beberapa decision tree untuk mendapatkan prediksi yang lebih akurat.

Evaluasi Model : 

Skor Akurasi: 99.03%

Skor Presisi: 0.9903

Skor Recall: 1.0000

Skor F1: 0.9951


Penjelasan Skor Evaluasi

  • Skor Akurasi: Skor akurasi menunjukkan persentase data yang diklasifikasikan dengan benar oleh model. Dalam hal ini, model random forest mampu mengklasifikasikan 99.03% data dengan benar.

  • Skor Presisi: Skor presisi menunjukkan proporsi prediksi positif yang benar. Dalam hal ini, 99.03% dari prediksi positif model random forest benar.

  • Skor Recall: Skor recall menunjukkan proporsi data positif yang benar-benar teridentifikasi oleh model. Dalam hal ini, 100% dari data positif dalam dataset teridentifikasi dengan benar oleh model random forest.

  • Skor F1: Skor F1 adalah metrik yang menggabungkan skor presisi dan recall. Skor F1 yang tinggi menunjukkan keseimbangan yang baik antara presisi dan recall. Dalam hal ini, skor F1 model random forest sebesar 0.9951 menunjukkan keseimbangan yang baik.

 

Hasil dalam gambar menunjukkan bahwa model random forest pada dataset ini mencapai kinerja yang sangat baik. Model tersebut mampu mengklasifikasikan data dengan akurasi 99.03% dan menunjukkan keseimbangan yang baik antara presisi dan recall.


  1. Grid Search Cross Validation

Code : 

from sklearn.model_selection import GridSearchCV

from sklearn.ensemble import RandomForestClassifier

# Daftar nilai untuk setiap parameter yang ingin diuji

n_estimators = [100, 500, 1000, 1500]

max_features = ['auto', 'sqrt']

max_depth = [2, 3, 5, None]  # None menunjukkan tidak ada batasan pada kedalaman pohon

min_samples_split = [2, 5, 10]

min_samples_leaf = [1, 2, 4, 10]

bootstrap = [True, False]

# Membuat grid parameter

params_grid = {

   'n_estimators': n_estimators,

   'max_features': max_features,

   'max_depth': max_depth,

   'min_samples_split': min_samples_split,

   'min_samples_leaf': min_samples_leaf,

   'bootstrap': bootstrap

}

# Membuat objek RandomForestClassifier

rf_clf = RandomForestClassifier(random_state=42)

# Membuat objek GridSearchCV

rf_cv = GridSearchCV(

   rf_clf,

   params_grid,

   scoring="f1",

   cv=5,

   verbose=1,

   n_jobs=-1

)

# Melatih model dengan menggunakan cross-validation

rf_cv.fit(X_train, y_train)

# Mendapatkan parameter terbaik yang ditemukan oleh GridSearchCV

best_params = rf_cv.best_params_

print(f"Best parameters: {best_params}")

# Membuat objek RandomForestClassifier dengan parameter terbaik

rf_clf = RandomForestClassifier(**best_params)

# Melatih model dengan parameter terbaik

rf_clf.fit(X_train, y_train)

# Evaluasi performa model pada data latih

print_score(rf_clf, X_train, y_train, X_test, y_test, train=True)

# Evaluasi performa model pada data uji

print_score(rf_clf, X_train, y_train, X_test, y_test, train=False)


Gambar 7. Hasil Code Grid Search Cross Validation

Gambar menunjukkan hasil dari grid search cross validation untuk model machine learning. Grid search cross validation adalah teknik yang digunakan untuk menemukan parameter model yang optimal dengan mengevaluasi model pada berbagai kombinasi parameter yang berbeda. Hasil grid search cross validation menunjukkan bahwa kombinasi parameter terbaik untuk model random forest dalam dataset ini adalah bootstrap: False, max_depth: None, max_features: 'auto',min_samples_leaf: 1,min_samples_split: 2.Kombinasi parameter ini menghasilkan skor akurasi 100.00%, yang menunjukkan bahwa model mampu mengklasifikasikan semua data dengan benar.

Inti dari analisis diatas adalah bahwa algoritma random forest, setelah melalui proses yang sudah dijelaskan, mampu memberikan prediksi yang sangat akurat dalam mengidentifikasi karyawan yang mungkin berhenti, dengan skor akurasi hingga 100%. Ini menunjukkan potensi penggunaan machine learning dalam manajemen sumber daya manusia untuk memprediksi dan mengelola pengurangan karyawan secara lebih efektif.

  1. Kesimpulan

Random Forest adalah algoritma pembelajaran mesin yang menggabungkan hasil dari beberapa pohon keputusan untuk menghasilkan satu prediksi akhir. Ini digunakan secara luas dalam klasifikasi data besar dan regresi. Setiap pohon keputusan dibangun secara independen dengan menggunakan subset dari data pelatihan dan fitur yang dipilih secara acak.

Proses klasifikasi pada Random Forest melibatkan voting dari semua pohon keputusan untuk menentukan prediksi akhir. Keuntungan utama dari Random Forest termasuk kemampuannya untuk menangani data yang besar dengan fitur yang tidak lengkap, kurang rentan terhadap overfitting, dan dapat memberikan estimasi kepentingan fitur.

Konsep dasar Random Forest terdiri dari beberapa elemen kunci, termasuk decision trees, bootstrap sampling, random feature selection, dan voting. Decision trees dibangun secara independen dengan menggunakan subset data pelatihan dan fitur yang dipilih secara acak. Bootstrap sampling memungkinkan pengambilan sampel acak dengan penggantian dari dataset pelatihan, sementara random feature selection membantu meningkatkan variasi antara pohon-pohon dalam ensemble. Proses voting dilakukan untuk menghasilkan prediksi akhir berdasarkan mayoritas voting dari semua pohon keputusan.

Random Forest juga dapat dioptimalkan melalui proses hyperparameter tuning, seperti yang ditunjukkan dalam contoh penggunaan pustaka Scikit-learn pada bahasa pemrograman Python. Metode seperti Randomized Search Cross Validation dan Grid Search Cross Validation digunakan untuk menemukan parameter terbaik yang menghasilkan model dengan performa yang optimal.

Dengan kombinasi fitur-fitur ini, Random Forest mampu menghasilkan prediksi yang stabil dan biasanya memiliki kinerja yang baik dalam klasifikasi dan regresi. Meskipun ada beberapa kelemahan seperti penggunaan memori yang besar dan waktu komputasi yang lama, keuntungan dalam kinerja sering kali mengimbangi kerugian tersebut.

  1. Pembagian Jobdesk

Muhammad Akmal Hidayat (Definisi)

Rina Amelia (Konsep Random Forest)

Ahmad Salman (Rumus Manual Random Forest)

Adelya Putri Alamsyah (Contoh Kasus Model Phyton)

Ahmad Azizul Akbar (Contoh Kasus Model Phyton)

Hervan Pratama (Abstrak dan Kesimpulan)



DAFTAR PUSTAKA



Sayah, F. (n.d.). Decision Trees & Random Forest for Beginners. Retrieved 5 12, 2024,fromhttps://www.kaggle.com/code/faressayah/decision-trees-random-forest-for-beginners/notebook

 

Towards AI. "Why Choose Random Forest and Not Decision Trees." Towards AI, 2 Juli2020.Available:https://towardsai.net/p/machine-learning/why-choose-random-forest-and-not-decision-trees

 

https://p2k.stekom.ac.id/ensiklopedia/Random_forest#cite_note-ho1995-2

 

Algorit.ma. "Cara Kerja Algoritma Random Forest." Algorit.ma Blog, 2022. from: https://algorit.ma/blog/cara-kerja-algoritma-random-forest-2022/

 

"Algoritma Random Forest." Trivusi, Agustus 2022. [Online]. Available: https://www.trivusi.web.id/2022/08/algoritma-random-forest.html

 

Vilkov, Grigory. "Bootstrap Aggregation, Random Forests and Boosted Trees." QuantStart.from:https://www.quantstart.com/articles/bootstrap-aggregation-random-forests-and-boosted-trees/  

 

Malato, Gianluca. "Feature Selection with Random Search in Python." KDnuggets, August2019.from:https://www.kdnuggets.com/2019/08/feature-selection-random-search-python.html

 

Ian H. Witten, Frank Eibe, Mark A. Hall, Data mining : Practikal Maching Learning ToolsandTechniques3rdEdition,Elsevier,2011.From:https://www.slideshare.net/IrwansyahSaputra1/data-mining-5-klasifikasi-decision-tree-dan-random-forest

 








Komentar

Postingan populer dari blog ini

System Thingking

System Thinking