Ensemble learning adalah pendekatan dalam machine learning yang menggabungkan beberapa model (biasanya model lemah/weak learners) untuk menghasilkan model prediktif yang lebih kuat, stabil, dan akurat. Konsep utamanya: “menggabungkan banyak pikiran lebih baik daripada satu.” Dalam konteks penelitian ini, pendekatan ensemble dipilih karena mampu menangani data dengan kompleksitas tinggi, hubungan non-linear, serta performanya yang terbukti lebih baik dibanding model tunggal.
Ensemble methods secara umum terbagi menjadi dua kategori utama:
Tiga model yang digunakan dalam penelitian ini mewakili dua pendekatan tersebut:
Di bawah ini penjelasan tiap model.
Random Forest adalah metode ensemble berbasis bagging yang menggabungkan banyak pohon keputusan (decision tree) yang dilatih pada sampel bootstrap. Setiap pohon hanya melihat sebagian fitur untuk membuat split, sehingga menghasilkan variasi antar pohon dan menurunkan risiko overfitting.
1. Rumus Dasar Random Forest
Random Forest membangun ( B ) pohon. Untuk setiap pohon ke-(b):
\[ D_b = {(x_i, y_i)}_{i=1}^{n}, \quad D_b \sim \text{Bootstrap}(D) \]
Pada setiap node split, dipilih secara acak mtry fitur dari total (p) fitur:
\[ S_b \subset {1,2,\dots,p}, \quad |S_b| = m_{\text{try}} \]
Split terbaik dipilih dari fitur-fitur dalam (S_b).
Regresi
Jika setiap pohon menghasilkan prediksi:
\[ \hat{f}_b(x) \]
Maka prediksi Random Forest adalah rata-rata:
\[ \hat{F}(x) = \frac{1}{B} \sum_{b=1}^{B} \hat{f}_b(x) \]
Klasifikasi
Untuk label kelas (k):
\[ \hat{F}(x) = \arg\max_k \sum_{b=1}^{B} \mathbf{1}(\hat{f}_b(x) = k) \]
Dengan kata lain: → prediksi akhir = majority voting dari semua pohon.
Karena setiap bootstrap meninggalkan sekitar 36.8% data (tidak masuk sampel), maka sampel OOB digunakan untuk evaluasi.
Untuk setiap observasi ke-(i), misal (S_i) adalah himpunan pohon yang tidak melihat data tersebut:
\[ \hat{F}*{\text{OOB}}(x_i) = \frac{1}{|S_i|} \sum*{b \in S_i} \hat{f}_b(x_i) \]
OOB error:
\[ \text{OOB Error} = \frac{1}{n} \sum_{i=1}^{n} L\left(y_i,; \hat{F}_{\text{OOB}}(x_i)\right) \]
Untuk fitur (X_j), importance dihitung sebagai:
\[ \text{Imp}(X_j) = \frac{1}{B} \sum_{b=1}^{B} \sum_{t \in T_b(X_j)} \Delta L_{t} \]
Di mana:
Karakteristik Utama
Kelebihan
Kelemahan
GBM adalah metode boosting yang membangun model secara bertahap. Setiap pohon baru berusaha memperbaiki kesalahan dari pohon sebelumnya dengan gradient descent pada fungsi loss. Berbeda dengan Random Forest, pohon tidak dibuat secara paralel tetapi berurutan.
Rumus Dasar GBM (Regresi)
Model pertama adalah nilai konstanta yang meminimalkan fungsi loss:
\[ F_0(x) = \arg\min_{\gamma} \sum_{i=1}^{n} L(y_i, \gamma) \]
Untuk regresi MSE, nilai ini adalah rata-rata target:
\[ F_0(x) = \bar{y} \]
(a) Hitung Negative Gradient (Residual)
Residual mewakili seberapa besar kesalahan model sebelumnya:
\[ r_{im} = -\left[ \frac{\partial L(y_i, F(x_i))}{\partial F(x_i)} \right]*{F(x_i)=F*{m-1}(x_i)} \]
Untuk regresi MSE:
\[ r_{im} = y_i - F_{m-1}(x_i) \]
\[ h_m(x) \approx r_{im} \]
Pohon regresi dilatih untuk memprediksi residual tersebut.
(c) Hitung Optimal Weight (Shrinkage Factor)
Untuk setiap leaf terminal (j):
\[ \gamma_{jm} = \arg\min_{\gamma} \sum_{x_i \in R_{jm}} L\big(y_i,; F_{m-1}(x_i) + \gamma \big) \]
Untuk regresi MSE:
\[ \gamma_{jm} = \frac{\sum_{x_i \in R_{jm}} r_{im}}{|R_{jm}|} \]
(d) Update Model
\[ F_m(x) = F_{m-1}(x) + \nu \sum_{j=1}^{J_m} \gamma_{jm} \mathbf{1}(x \in R_{jm}) \]
Di mana:
() = learning rate
(J_m) = jumlah leaf pada pohon ke-m
3. Model Akhir
\[ F_M(x) = F_0(x) + \sum_{m=1}^{M} \nu \cdot h_m(x) \]
Karakteristik Utama
Kelebihan
Kelemahan
XGBoost (Extreme Gradient Boosting) merupakan pengembangan dari GBM yang lebih efisien, cepat, dan akurat. XGBoost menambahkan regularisasi L1 dan L2 untuk mengurangi overfitting dan mempercepat komputasi menggunakan teknik optimasi canggih serta pemrosesan paralel.
XGBoost meminimalkan:
\[ \mathcal{L} = \sum_{i=1}^{n} l\left(y_i,; \hat{y}*i^{(t)}\right) + \sum*{k=1}^{t} \Omega(f_k) \]
Dimana:
(_i^{(t)}) = prediksi di iterasi ke-(t)
(f_k) = pohon keputusan ke-(k)
((f_k)) = regularisasi kompleksitas pohon
2. Regularisasi (Pembeda utama XGBoost)
\[ \Omega(f) = \gamma T + \frac{1}{2} \lambda \sum_{j=1}^{T} w_j^2 \]
Di mana:
Tujuan: mencegah overfitting dan mempercepat model.
Model dibangun secara bertahap:
\[ \hat{y}_i^{(t)} = \hat{y}_i^{(t-1)} + \eta f_t(x_i) \]
(f_t) = pohon baru yang dilatih pada iterasi ke-t
() = learning rate (shrinkage)
4. Gradient & Hessian
XGBoost menggunakan pendekatan second-order Taylor expansion.
Untuk setiap data titik (i):
\[ g_i = \frac{\partial l(y_i,\hat{y}_i^{(t-1)})}{\partial \hat{y}_i^{(t-1)}} \]
\[ h_i = \frac{\partial^2 l(y_i,\hat{y}_i^{(t-1)})}{\partial (\hat{y}_i^{(t-1)})^2} \]
Ini membuat XGBoost lebih akurat dan stabil dibanding GBM biasa.
Gain ketika memecah node:
\[ \text{Gain} = \frac{1}{2} \left( \frac{G_L^2}{H_L + \lambda} + \frac{G_R^2}{H_R + \lambda} - \frac{(G_L + G_R)^2}{H_L + H_R + \lambda} \right) - \gamma \]
Dimana:
Split dipilih jika Gain > 0.
Untuk setiap leaf (j):
\[ w_j^* = -\frac{G_j}{H_j + \lambda} \]
Model prediksi pohon:
\[ f_t(x) = w_j^* \quad \text{jika } x \text{ jatuh pada leaf } j \]
Untuk regresi:
\[ \hat{y}(x) = \sum_{t=1}^{T} \eta f_t(x) \]
Karakteristik Utama
Kelebihan
Kelemahan
| Model | Metode | Kekuatan | Kekurangan |
|---|---|---|---|
| Random Forest | Bagging | Stabil, tahan overfitting | Tidak sekuat boosting untuk pola kompleks |
| GBM | Boosting sekuensial | Akurasi tinggi | Training lebih lambat, butuh tuning hati-hati |
| XGBoost | Boosting + optimasi | Paling akurat, cepat, ada regularisasi | Parameter lebih kompleks |
Penelitian ini bertujuan untuk membangun model prediksi berbasis ensemble learning guna memprediksi tingkat kesehatan individu berdasarkan berbagai faktor fisiologis dan gaya hidup. Identifikasi masalah pada penelitian ini dijelaskan sebagai berikut.
Penelitian ini ingin memprediksi nilai HealthScore, yaitu skor kesehatan yang mencerminkan kondisi kesehatan seseorang secara umum. HealthScore dibentuk dari gabungan beberapa indikator seperti usia, BMI, tekanan darah, kadar kolesterol, dan durasi olahraga mingguan.
Prediksi HealthScore penting karena:
Variabel target dalam penelitian ini adalah:
HealthScore (float)
Variabel ini merupakan nilai kontinu (continuous) sehingga jenis prediksi adalah regresi.
HealthScore akan diprediksi menggunakan lima variabel fitur:
Seluruh fitur bersifat numerik dan tidak memiliki missing values, sehingga cocok digunakan untuk model ensemble tanpa perlakuan khusus seperti encoding kategori.
Mengacu pada teori pada Bab 1, ensemble learning dipilih karena memiliki beberapa keunggulan signifikan untuk kasus regresi dengan fitur numerik seperti pada dataset ini:
Meningkatkan Akurasi Prediksi Dengan menggabungkan banyak weak learners, hasil prediksi lebih stabil dan lebih akurat dibanding model tunggal.
Mampu Menangkap Hubungan Non-Linear Variabel seperti tekanan darah, kolesterol, dan BMI sering memiliki hubungan non-linear dengan hasil kesehatan. Ensemble tree-based (RF, GBM, XGBoost) sangat cocok untuk pola seperti ini.
Robust terhadap Noise dan Outlier Model seperti Random Forest dan XGBoost relatif tahan terhadap nilai ekstrem, sehingga performa tetap stabil.
Reduksi Bias dan Variance
Dengan memanfaatkan sifat-sifat tersebut, ensemble learning dianggap cocok untuk menghasilkan prediksi HealthScore yang lebih akurat dan konsisten.
Penelitian ini tidak hanya membangun model, tetapi juga membandingkan performa tiga algoritma ensemble, yaitu:
Tujuan perbandingan meliputi:
Bagian ini menjelaskan sumber data, struktur dataset, serta penjelasan setiap variabel yang digunakan dalam penelitian. Pemahaman awal terhadap data menjadi langkah penting sebelum melakukan analisis lebih lanjut maupun pemodelan.
Dataset yang digunakan dalam penelitian ini berasal dari data simulasi kesehatan yang telah disediakan dalam format CSV dengan nama health_data.csv. Data ini berisi informasi mengenai karakteristik fisik, kondisi kesehatan, dan kebiasaan olahraga dari sejumlah individu.
Hasil pemeriksaan awal menunjukkan bahwa dataset memiliki:
Seluruh variabel merupakan fitur numerik dan dapat langsung digunakan dalam model regresi ensemble tanpa proses encoding data kategorik.
Semua variabel dalam dataset bertipe:
Tidak ada variabel kategorik.
Berikut penjelasan setiap variabel yang terdapat dalam dataset:
| Variabel | Tipe | Deskripsi |
|---|---|---|
| Age | Integer | Usia individu dalam tahun. Variabel ini dapat memengaruhi kesehatan fisik secara keseluruhan. |
| BMI | Float | Body Mass Index, indikator status berat badan relatif terhadap tinggi badan. |
| BloodPressure | Float | Tekanan darah individu (satuan mmHg). Merupakan indikator penting dalam kesehatan kardiovaskular. |
| Cholesterol | Float | Kadar kolesterol dalam tubuh. Nilai tinggi dapat meningkatkan risiko penyakit jantung. |
| ExerciseHours | Float | Jumlah jam olahraga per minggu. Aktivitas fisik berpengaruh terhadap kebugaran dan kesehatan metabolik. |
| HealthScore | Float | Variabel target yang menunjukkan tingkat kesehatan keseluruhan seorang individu. Nilai lebih tinggi menunjukkan kondisi kesehatan lebih baik. |
Statistik deskriptif dilakukan untuk memahami karakteristik awal dari enam variabel dalam dataset, yaitu Age, BMI, BloodPressure, Cholesterol, ExerciseHours, dan HealthScore. Informasi seperti nilai minimum, maksimum, rata-rata, median, serta kuartil membantu mengidentifikasi pola umum dan potensi anomali pada data kesehatan pasien.
## 'data.frame': 500 obs. of 6 variables:
## $ Age : int 56 69 46 32 60 25 78 38 56 75 ...
## $ BMI : num 39.8 21.1 29.4 37.3 34.3 ...
## $ BloodPressure: num 118 112 157 93 141 ...
## $ Cholesterol : num 264 176 202 122 133 ...
## $ ExerciseHours: num 8.444 0.981 4.882 1.5 3.247 ...
## $ HealthScore : num 23.29 4.89 27.57 7.45 19.23 ...
## Age BMI BloodPressure Cholesterol
## Min. :18.00 Min. :18.24 Min. : 90.42 Min. :120.9
## 1st Qu.:35.00 1st Qu.:23.33 1st Qu.:111.01 1st Qu.:162.4
## Median :50.00 Median :29.07 Median :136.42 Median :209.7
## Mean :49.91 Mean :28.95 Mean :135.42 Mean :209.1
## 3rd Qu.:66.00 3rd Qu.:34.58 3rd Qu.:158.65 3rd Qu.:251.0
## Max. :79.00 Max. :39.99 Max. :179.81 Max. :299.9
## ExerciseHours HealthScore
## Min. :0.03218 Min. :-46.417
## 1st Qu.:2.59128 1st Qu.: -7.005
## Median :5.23360 Median : 11.284
## Mean :5.09967 Mean : 11.352
## 3rd Qu.:7.64658 3rd Qu.: 27.853
## Max. :9.98348 Max. : 75.077
Interpretasi Statistik Deskriptif
Berdasarkan output EDA:
1. Age
2. BMI
3. Blood Pressure
4. Cholesterol
5. ExerciseHours
6. HealthScore (Target)
Kesimpulan Sementara
Variabel-variabel kesehatan menunjukkan sebaran data yang logis dan bervariasi. Beberapa aspek seperti BMI tinggi, tekanan darah, dan kolesterol menunjukkan adanya kecenderungan risiko kesehatan yang perlu dianalisis lebih lanjut pada tahap modeling.
Interpretasi Hasil Korelasi
Berdasarkan visualisasi heatmap:
1. Variabel yang berkorelasi negatif dengan HealthScore
Beberapa variabel memiliki hubungan terbalik dengan skor kesehatan:
Artinya, semakin tinggi usia, indeks massa tubuh, tekanan darah, atau kolesterol, semakin rendah nilai HealthScore yang dimiliki seseorang. Pola ini sesuai dengan teori medis bahwa faktor-faktor tersebut menjadi indikator risiko kesehatan.
2. Variabel yang berkorelasi positif dengan HealthScore
Semakin banyak waktu olahraga yang dilakukan seseorang setiap minggu, cenderung semakin baik skor kesehatannya.
3. Korelasi antar variabel prediktor
Terdapat hubungan yang kecil hingga moderat antara beberapa variabel klinis:
Hubungan antar variabel ini penting untuk diperhatikan karena dapat memengaruhi model prediksi, terutama model linear yang sensitif terhadap multikolinearitas.
Interpretasi Distribusi
Berdasarkan hasil visualisasi:
1. Age
Distribusi usia terlihat cukup merata dari umur 18 hingga 79 tahun tanpa pola tertentu. Tidak tampak puncak yang dominan, menandakan sampel tersebar di berbagai kelompok umur.
2. BMI
BMI menunjukkan distribusi yang sedikit condong ke kanan (right-skewed), dengan mayoritas nilai berada pada kisaran 23–35. Nilai BMI ekstrem tidak banyak muncul.
3. BloodPressure
Tekanan darah memiliki sebaran relatif rata, tidak mengikuti pola normal. Hal ini umum terjadi pada data kesehatan yang bervariasi antar individu.
4. Cholesterol
Kolesterol juga tampak miring ke kanan, dengan sebagian besar individu berada di kisaran 160–250. Nilai kolesterol yang sangat tinggi hanya muncul sedikit.
5. ExerciseHours
Jam olahraga mingguan menunjukkan distribusi tidak beraturan, cenderung bervariasi luas. Ini wajar karena kebiasaan olahraga berbeda jauh antar individu.
6. HealthScore
HealthScore memiliki pola yang paling jelas: mendekati distribusi normal, dengan puncak di sekitar nilai 10–30. Sebaran simetris menunjukkan variasi yang stabil, cocok sebagai variabel target regresi.
Interpretasi Outlier (Singkat)
1. Age
2. BMI
3. BloodPressure
4. Cholesterol
5. ExerciseHours
6. HealthScore
Tahap ini dilakukan untuk memastikan data dalam kondisi siap digunakan untuk pemodelan. Karena dataset hanya berisi variabel numerik dan tidak memiliki nilai kosong, proses preprocessing menjadi relatif sederhana.
Pengecekan dilakukan untuk memastikan tidak ada data yang hilang (missing values), karena hal tersebut dapat mempengaruhi performa model.
## Age BMI BloodPressure Cholesterol ExerciseHours
## 0 0 0 0 0
## HealthScore
## 0
Hasil
Seluruh kolom memiliki 0 missing values, sehingga:
Dataset dinyatakan bersih.
Tujuan langkah ini adalah memastikan bahwa semua variabel bertipe numerik dan tidak membutuhkan proses encoding.
## 'data.frame': 500 obs. of 6 variables:
## $ Age : int 56 69 46 32 60 25 78 38 56 75 ...
## $ BMI : num 39.8 21.1 29.4 37.3 34.3 ...
## $ BloodPressure: num 118 112 157 93 141 ...
## $ Cholesterol : num 264 176 202 122 133 ...
## $ ExerciseHours: num 8.444 0.981 4.882 1.5 3.247 ...
## $ HealthScore : num 23.29 4.89 27.57 7.45 19.23 ...
Hasil
Semua variabel bertipe numeric, yaitu:
Karena tidak terdapat variabel kategorik, maka tidak dilakukan proses encoding seperti one-hot encoding.
Dataset dibagi menjadi data pelatihan (training set) dan data pengujian (testing set) untuk mengevaluasi performa model dengan benar. Pembagian yang digunakan adalah 80% train dan 20% test.
Ringkasan Preprocessing
| Tahapan | Status | Keterangan |
|---|---|---|
| Missing values | Dicek, aman | Tidak ada nilai kosong |
| Variabel kategorik | Tidak ada | Semua variabel numerik |
| Train-test split | Dilakukan | 80% train, 20% test |
| Standardisasi | Tidak dilakukan | Tidak diperlukan untuk ensemble model |
Bagian ini menjelaskan proses pembangunan tiga model ensemble yang digunakan untuk memprediksi HealthScore. Seluruh model dilatih menggunakan data training (80%) dan dievaluasi menggunakan data testing (20%).
Model yang digunakan mewakili tiga kategori ensemble:
Setiap model dijalankan menggunakan parameter standar (default parameters) agar perbandingan lebih adil, kecuali beberapa parameter inti yang disesuaikan untuk meningkatkan stabilitas hasil.
Random Forest adalah metode bagging yang menggabungkan banyak decision tree untuk meningkatkan akurasi dan mengurangi overfitting.
##
## Call:
## randomForest(formula = HealthScore ~ ., data = train_data, ntree = 500, mtry = 2, importance = TRUE)
## Type of random forest: regression
## Number of trees: 500
## No. of variables tried at each split: 2
##
## Mean of squared residuals: 135.6849
## % Var explained: 75.24
| Parameter | Nilai | Penjelasan |
|---|---|---|
| ntree | 500 | Jumlah pohon, lebih banyak = lebih stabil |
| mtry | 2 | Jumlah fitur yang dicoba setiap split |
| importance | TRUE | Menghasilkan feature importance |
GBM bekerja dengan melatih pohon secara berurutan, di mana setiap pohon memperbaiki kesalahan pohon sebelumnya.
## gbm(formula = HealthScore ~ ., distribution = "gaussian", data = train_data,
## n.trees = 3000, interaction.depth = 3, n.minobsinnode = 10,
## shrinkage = 0.01, bag.fraction = 0.8)
## A gradient boosted model with gaussian loss function.
## 3000 iterations were performed.
## There were 5 predictors of which 5 had non-zero influence.
| Parameter | Nilai | Penjelasan |
|---|---|---|
| n.trees | 3000 | Banyaknya boosting iterations |
| interaction.depth | 3 | Kedalaman pohon (kompleksitas) |
| shrinkage | 0.01 | Learning rate |
| bag.fraction | 0.8 | Proporsi sampel pada setiap iterasi |
XGBoost adalah versi boosting yang dioptimalkan untuk kecepatan dan akurasi tinggi melalui regularisasi dan pemangkasan pohon.
XGBoost membutuhkan format matrix:
## ##### xgb.Booster
## raw: 2.3 Mb
## call:
## xgb.train(params = params, data = dtrain, nrounds = nrounds,
## watchlist = watchlist, verbose = verbose, print_every_n = print_every_n,
## early_stopping_rounds = early_stopping_rounds, maximize = maximize,
## save_period = save_period, save_name = save_name, xgb_model = xgb_model,
## callbacks = callbacks, objective = "reg:squarederror", eta = 0.01,
## max_depth = 4, subsample = 0.8, colsample_bytree = 0.8)
## params (as set within xgb.train):
## objective = "reg:squarederror", eta = "0.01", max_depth = "4", subsample = "0.8", colsample_bytree = "0.8", validate_parameters = "TRUE"
## xgb.attributes:
## niter
## callbacks:
## cb.evaluation.log()
## # of features: 5
## niter: 1500
## nfeatures : 5
## evaluation_log:
## iter train_rmse
## <num> <num>
## 1 25.637337
## 2 25.470780
## --- ---
## 1499 3.095425
## 1500 3.093061
| Parameter | Nilai | Penjelasan |
|---|---|---|
| nrounds | 1500 | Jumlah boosting rounds |
| eta | 0.01 | Learning rate |
| max_depth | 4 | Kedalaman pohon |
| subsample | 0.8 | Proporsi sampel tiap iterasi |
| colsample_bytree | 0.8 | Fitur yang digunakan tiap pohon |
| Model | Tipe Ensemble | Parameter Inti | Catatan |
|---|---|---|---|
| Random Forest | Bagging | ntree=500, mtry=2 | Stabil, anti overfitting |
| GBM | Boosting | depth=3, lr=0.01 | Lebih lambat, lebih presisi |
| XGBoost | Extreme Boosting | depth=4, lr=0.01 | Paling kuat, regularisasi |
Evaluasi model dilakukan untuk membandingkan performa tiga metode ensemble, yaitu Random Forest, Gradient Boosting (GBM), dan XGBoost, dalam memprediksi nilai HealthScore. Penilaian menggunakan data testing (20%), sehingga performa yang diukur lebih mencerminkan kemampuan generalisasi model.
Empat metrik evaluasi yang digunakan adalah:
Root Mean Squared Error (RMSE) adalah metrik evaluasi yang mengukur rata-rata besarnya kesalahan prediksi dalam satuan yang sama dengan variabel target. RMSE lebih sensitif terhadap outlier karena menggunakan kuadrat selisih.
Interpretasi:
Rumus RMSE
\[ RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (, \hat{y}*{i} - y*{i} ,)^2 } \]
dengan:
Menghitung RMSE
## [1] 12.70197
## [1] 12.88907
## [1] 12.59996
Perhitungan RMSE menghasilkan nilai sebagai berikut:
| Model | RMSE |
|---|---|
| Random Forest | 12.70197 |
| GBM | 12.88907 |
| XGBoost | 12.59996 |
Interpretasi: Model dengan RMSE terkecil adalah XGBoost (12.59996), sehingga XGBoost memiliki performa prediksi terbaik dalam hal kesalahan rata-rata kuadrat terkecil.
Mean Squared Error (MSE) mengukur rata-rata kuadrat dari selisih antara nilai prediksi dan nilai aktual. Semakin kecil nilai MSE → semakin akurat model.
\[ \text{MSE} = \frac{1}{n} \sum (y_{\text{pred}} - y_{\text{true}})^2 \]
Menghitung MSE
## [1] 161.34
## [1] 166.1281
## [1] 158.759
| Model | MSE |
|---|---|
| Random Forest | 161.34 |
| GBM | 166.1281 |
| XGBoost | 158.759 (terbaik) |
Nilai MSE terkecil terdapat pada XGBoost (158.759). Artinya, XGBoost menghasilkan rata-rata kesalahan kuadrat paling kecil dibandingkan dua model lainnya. Ini konsisten dengan hasil RMSE yang sebelumnya juga menunjukkan XGBoost sebagai model terbaik.
MAE mengukur rata-rata selisih absolut antara nilai prediksi dan nilai aktual. Berbeda dengan MSE, MAE tidak menghukum error besar secara berlebihan, sehingga lebih robust terhadap outlier.
\[ \text{MAE} = \frac{1}{n} \sum |y_{\text{pred}} - y_{\text{true}}| \]
Perhitungan MAE
## [1] 10.31179
## [1] 10.12665
## [1] 10.14371
| Model | MAE |
|---|---|
| Random Forest | 10.31179 |
| GBM | 10.12665 |
| XGBoost | 10.14371 |
Interpretasi
Nilai MAE terkecil terdapat pada GBM (10.12665).
Artinya, GBM menghasilkan rata-rata kesalahan absolut paling kecil dibandingkan kedua model lainnya.
Hasil ini menunjukkan bahwa GBM memiliki akurasi prediksi individual terbaik, karena MAE tidak terlalu terpengaruh oleh outlier.
Meskipun pada metrik lain seperti RMSE dan MSE model terbaik adalah XGBoost, pada MAE justru GBM unggul tipis, menunjukkan stabilitas prediksi yang baik.
R² mengukur seberapa besar proporsi variasi nilai HealthScore yang dapat dijelaskan oleh model.
Semakin tinggi nilai R² → model semakin baik dalam menjelaskan data.
\[ R^2 = 1 - \frac{\sum (y_{\text{pred}} - y_{\text{true}})^2}{\sum (y_{\text{true}} - \bar{y})^2} \]
Nilai R² berada pada rentang 0 – 1, di mana:
Perhitungan R²
## [1] 0.735326
## [1] 0.7274712
## [1] 0.73956
| Model | R² |
|---|---|
| Random Forest | 0.735326 |
| GBM | 0.7274712 |
| XGBoost | 0.73956 |
Interpretasi
Nilai R² tertinggi terdapat pada XGBoost (0.73956).
Artinya, XGBoost mampu menjelaskan sekitar 73.96% variasi pada HealthScore, sehingga menjadi model yang paling baik dalam menangkap pola hubungan antara fitur dan target.
Random Forest berada di posisi kedua dengan R² sekitar 73.53%.
GBM memiliki nilai R² paling rendah di antara ketiganya, namun selisihnya kecil dan tetap menunjukkan performa yang baik.
Visualisasi predicted vs actual digunakan untuk melihat seberapa dekat hasil prediksi model terhadap nilai aktual. Model yang baik akan menghasilkan titik-titik yang mendekati garis diagonal (y = x).
Ketiga grafik menunjukkan hubungan antara nilai aktual dan nilai prediksi pada tiga model ensemble: Random Forest, GBM, dan XGBoost. Garis merah putus-putus adalah garis ideal (y = x), yang menunjukkan prediksi sempurna.
Ciri-ciri grafik:
Interpretasi:
Ciri-ciri grafik:
Interpretasi:
Ciri-ciri grafik:
Interpretasi:
XGBoost merupakan model dengan performa terbaik dalam ketiga model.
Prediksinya paling stabil, paling dekat dengan nilai aktual, dan error visual paling kecil.
Ini konsisten dengan hasil evaluasi:
XGBoost secara jelas mengungguli Random Forest dan GBM dalam memprediksi nilai, terlihat dari:
Visualisasi ini menguatkan hasil numerik bahwa XGBoost adalah model terbaik untuk dataset ini.
Residual plot memeriksa apakah residual tersebar acak. Pola yang acak menandakan model sudah mempelajari data dengan baik.
Residual plot digunakan untuk melihat pola kesalahan prediksi (residual = aktual – prediksi). Model yang baik seharusnya menunjukkan:
Sekarang kita interpretasikan satu per satu.
Ciri-ciri:
Interpretasi:
Ciri-ciri:
Interpretasi:
Ciri-ciri:
Interpretasi:
| Model | Pola Residual | Stabilitas Error | Catatan |
|---|---|---|---|
| Random Forest | Paling menyebar, banyak outlier | Rendah | Kurang mampu menangkap pola kompleks |
| GBM | Lebih rapat, tapi masih banyak outlier | Sedang | Lebih baik, tapi error masih variatif |
| XGBoost | Paling rapat & acak | Tinggi | Model paling baik & paling stabil |
XGBoost adalah model dengan residual paling baik, menunjukkan bahwa ia paling mampu mempelajari pola data tanpa overfitting dan tanpa error yang bias.
Distribusi error menunjukkan apakah error simetris dan cenderung berada di sekitar 0. Model ideal menghasilkan distribusi residual simetris.
Distribusi error (histogram residual) membantu melihat apakah error:
Model yang ideal memiliki distribusi error yang:
Sekarang kita bahas satu per satu.
Ciri-ciri:
Interpretasi:
Ciri-ciri:
Interpretasi:
Ciri-ciri:
Interpretasi:
| Model | Sebaran Error | Outlier | Simetri | Stabilitas |
|---|---|---|---|---|
| Random Forest | Paling melebar | Banyak | Tidak simetris | Rendah |
| GBM | Lebih sempit dari RF | Masih ada | Sedikit skew | Menengah |
| XGBoost | Paling sempit | Paling sedikit | Paling simetris | Tinggi |
XGBoost kembali menjadi model terbaik berdasarkan distribusi error, menunjukkan prediksi yang lebih dekat ke nilai aktual.
Untuk melihat fitur yang paling berpengaruh pada model.
Interpretasi Feature Importance – Random Forest
Urutan dan nilainya (perkiraan dari plot):
Urutan dan nilainya (perkiraan dari sumbu):
Kesimpulan langsung
Interpretasi Feature Importance – GBM
Berdasarkan nilai relative influence dari summary(model_gbm):
| Variabel | Relative Influence | Interpretasi Singkat |
|---|---|---|
| ExerciseHours | 50.70 | Paling berpengaruh |
| Cholesterol | 21.63 | Pengaruh besar |
| BloodPressure | 11.17 | Pengaruh sedang |
| BMI | 9.34 | Pengaruh kecil |
| Age | 7.16 | Pengaruh paling rendah |
Interpretasi Detil Sesuai Nilai
Model GBM sangat bergantung pada aktivitas fisik (ExerciseHours) dan profil kesehatan (Cholesterol) sebagai prediktor utama.
Interpretasi Feature Importance XGBoost (Langsung & Detil)
Urutan kepentingan fitur dari paling berpengaruh → paling rendah:
XGBoost secara jelas adalah model terbaik, dibuktikan oleh:
Prediksi paling dekat dengan aktual
Residual paling kecil & paling acak
Distribusi error paling sempit
Tidak ada bias signifikan
Memiliki RMSE, MSE, MAE terbaik dan R² tertinggi
Berdasarkan seluruh metrik evaluasi (RMSE, MSE, MAE, R²) dan pemeriksaan visual (prediksi vs aktual, residual plot, distribusi error), model terbaik adalah XGBoost.
Bukti numerik:
| Metrik | Random Forest | GBM | XGBoost (terbaik) |
|---|---|---|---|
| RMSE | 12.70197 | 12.88907 | 12.59996 |
| MSE | 161.34 | 166.1281 | 158.759 |
| MAE | 10.31179 | 10.12665 | 10.14371 |
| R² | 0.735326 | 0.727471 | 0.73956 |
Ringkasan:
Dari keseluruhan indikator, XGBoost adalah model dengan generalisasi paling kuat dan paling akurat.
Berikut alasan utama berdasarkan hasil evaluasi dan perilaku model:
###3 4. Mekanisme boosting lebih optimal
XGBoost memiliki keunggulan teknis:
Kombinasi inilah yang membuat XGBoost outperform model lain.
Semua model (Random Forest, GBM, XGBoost) menunjukkan pola importance yang konsisten.
ExerciseHours
Cholesterol
BloodPressure
BMI
Age
Untuk meningkatkan akurasi model lebih lanjut, berikut langkah rekomendasi:
Terutama pada XGBoost:
→ Potensi peningkatan akurasi cukup besar.
###3 2. Feature Engineering Tambahan
Beberapa ide:
Normalisasi intensitas olahraga (misal ExerciseHours per hari)
Kombinasi fitur baru:
Transformasi log pada fitur dengan skew
###3 3. Menambah Data
Lebih banyak variasi data dapat membantu model mempelajari pola ekstrem dengan lebih baik.
Outlier dapat meningkatkan RMSE → memperbaiki preprocessing bisa meningkatkan performa.
Gunakan:
→ Mengurangi varian estimasi performa.
XGBoost adalah model ensemble terbaik, didukung oleh seluruh metrik evaluasi dan visualisasi error. Variabel paling berpengaruh berturut-turut adalah ExerciseHours → Cholesterol → BloodPressure → BMI → Age. Untuk performa lebih tinggi, lakukan hyperparameter tuning, feature engineering, dan peningkatan kualitas data.