Machine Learning: Random Forest Regression

Machine Learning: Random Forest Regression

STUDI KASUS

Kali ini kita coba memprediksi apakah dan melihat apakah calon pegawai kita jujur atau tidak saat memberikan informasi gajinya di perusahaan sebelumnya tempat ia bekerja. Untuk membaca secara detail permasalahannya silakan buka di bagian pembahasan regresi polinomial.

Kita akan membahasnya dengan dua bahasa yaitu Python dan R. Sebelum memulai, silakan download datasetnya di link ini.


Bahasa Python

# Mengimpor library yang diperlukan
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Mengimpor dataset
dataset = pd.read_csv('Posisi_gaji.csv')
X = dataset.iloc[:, 1:2].values
y = dataset.iloc[:, 2].values

# Membuat model random forest regression
from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators = 10, random_state = 0)
regressor.fit(X, y)

# Memprediksi nilai Y dari modelnya
y_pred = regressor.predict([[6.5]])

# Visualisasi hasil random forest regression
X_grid = np.arange(min(X), max(X), 0.01)
X_grid = X_grid.reshape((len(X_grid), 1))
plt.scatter(X, y, color = 'red')
plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')
plt.title('Jujur atau tidak (Random Forest Regression)')
plt.xlabel('Tingkat posisi')
plt.ylabel('Gaji')
plt.show()

Penjelasan:

  • Line 2-5 mengimpor library apa saja yang diperlukan.
  • Line 7 mengimpor datasetnya.
  • Line 8 mendefinisikan variabel independen X dengan melakukan slicing. Kita hanya butuh kolom kedua (kolom level).
  • Line 9 mendefinisikan variabel dependen Y dengan melakukan slicing Kita butuh kolom ketiga (kolom gaji).
  • Line 12 mengimpor library untuk membuat model random forest regression dari sklearn.
  • Line 13 mendefinisikan variabel regressor. Parameter yang kita tentukan adalah n_estimator yaitu sebanyak 10 buah. Artinya kita membuat 10 prediksi yang nantinya akan dihitung nilai rataannya. Tips: Untuk bisa melihat parameter apa saja yang diperlukan, cukup arahkan kurson pada RandomForestRegressor kemudian ketik CTRL+i pada keyboard. Maka akan tampak tampilan sebagai berikut di bagian help spyder:
Parameter random forest di Python
  • Line 14 adalah mengaplikasikan model kita ke datasetnya.
  • Line 17 adalah memprediksi variabel dependen Y dengan nilai X=6.5. Jika dieksekusi maka nilai y_pred nya adalah 167.000 dollar/tahun. Cukup baik prediksinya, sangat dekat dengan datasetnya.
  • Line 20-27 adalah perintah untuk visualisasi hasil model dan prediksinya. Jika dieksekusi maka akan tampak sebagai berikut:
Hasil random forest regression

Bisa dilihat bahwa jumlah anak tangga pada random forest regression lebih banyak jika dibandingkan dengan satu grafik dari 1 decision tree di contoh sebelumnya. Saya tampilkan lagi grafik dari 1 decision tree sebagai berikut:

Hasil 1 decision tree dari contoh sebelumnya

Mengapa random forest lebih baik dibandingkan 1 decision tree seperti pada penjelasan sebelumnya? Karena model random forest kita aalah hasil dari 10 decision tree. Selain itu, ditunjukkan dengan semakin banyaknya anak tangga, yang menggambarkan semakin banyak interval pembagiannhya (interval pembagian adalah pembagian cabang keputusan dalam analogi decision tree).

Selain itu prediksi y_pred di model random_forest juga sangat dekat dengan datasetnya yaitu 167rb dollar/tahun. Jika dibandingkan dengan 1 decision tree yaitu 150rb dollar/tahun, maka prediksi random forest lebih presisi, karena lebih dekat ke 175rb dollar/tahun (di dataset level 6 adalah 150rb dan level 7 adalah 200rb, maka nilai median nya adalah 175rb).

Tentu saja pembaca bisa mencoba-coba dengan parameter lain. Misal dengan meningkatkan jumlah N-tree nya di parameter n_estimators.

Untuk melanjutkan membaca, solusi permasalahan dengan menggunakan bahasa R, silakan klik tombol di bawah ini.

Bagikan artikel ini:

Pages: 1 2 3

Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Muhammad Fikri Assegaf
Muhammad Fikri Assegaf
1 month ago

Terimkasih pak ilmunya, Semoga berkah dunia akhirat. aamiin