Logo

Laporan Analisis dan Pemodelan Prediktif – Ensamble Models

1. Pengenalan Ensemble Models

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:

  1. Bagging (Bootstrap Aggregating) → fokus mengurangi variance
  2. Boosting → fokus mengurangi bias secara bertahap

Tiga model yang digunakan dalam penelitian ini mewakili dua pendekatan tersebut:

  • Random Forest → bagging
  • GBM → boosting dasar
  • XGBoost → boosting modern yang dioptimasi

Di bawah ini penjelasan tiap model.


1.1 Random Forest

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

  • 1.Bagging (Bootstrap Aggregating)

Random Forest membangun ( B ) pohon. Untuk setiap pohon ke-(b):

  1. Ambil sampel bootstrap dari dataset asli:

\[ D_b = {(x_i, y_i)}_{i=1}^{n}, \quad D_b \sim \text{Bootstrap}(D) \]

  1. Latih pohon keputusan menggunakan ( D_b ) dengan memilih subset acak fitur pada setiap node.
  • 2. Random Feature Selection (mtry)

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).

  • 3. Prediksi Random Forest

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.


  • 4. Out-of-Bag (OOB) Estimation

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) \]

  • 5. Feature Importance (Gini / MSE Reduction)

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:

  • (T_b(X_j)) = node-node dalam pohon (b) yang melakukan split pada fitur (j)
  • (L_t) = pengurangan impurity (MSE atau Gini) pada node tersebut

Karakteristik Utama

  • Termasuk metode bagging
  • Menggunakan bootstrap sampling
  • Mengambil subset acak fitur di setiap split
  • Hasil prediksi berdasarkan majority voting (klasifikasi) atau rata-rata (regresi)

Kelebihan

  • Tahan terhadap overfitting
  • Stabil meskipun data memiliki noise
  • Dapat menangani data numerik maupun kategorik
  • Menyediakan feature importance

Kelemahan

  • Interpretabilitas rendah (karena gabungan banyak pohon)
  • Waktu komputasi bisa meningkat jika jumlah pohon terlalu besar

1.2 Gradient Boosting Machines (GBM)

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)

  • 1. Inisialisasi Model Awal

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} \]


  • 2. Untuk Setiap Iterasi (m = 1, 2, , M)

(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) \]


(b) Latih Pohon Ke-m Menggunakan Residual

\[ 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

  • Menggunakan boosting sekuensial
  • Tiap model baru memperbaiki residual error model sebelumnya
  • Menggunakan gradient descent untuk optimasi

Kelebihan

  • Akurasi tinggi pada berbagai jenis permasalahan
  • Mampu menangani hubungan non-linear
  • Mendukung berbagai loss function

Kelemahan

  • Rentan overfitting jika parameter tidak diatur dengan baik
  • Training lebih lambat karena sifatnya sekuensial
  • Sensitif terhadap outlier

1.3 Extreme Gradient Boosting (XGBoost)

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.

  • 1. Fungsi Tujuan (Objective Function)

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:

    1. = loss function (misal: squared error, logistic loss)
  • (_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:

    1. = jumlah daun (leaves)
  • (w_j) = nilai prediksi pada leaf (j)
  • () = penalti membuat leaf baru
  • () = penalti L2 untuk bobot leaf

Tujuan: mencegah overfitting dan mempercepat model.

  • 3. Additive Model (Boosting)

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} \]

  • (g_i) = first derivative (gradient)
  • (h_i) = second derivative (hessian)

Ini membuat XGBoost lebih akurat dan stabil dibanding GBM biasa.

  • 5. Scoring Function untuk Node / Split

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:

  • (G_L = _{i L} g_i)
  • (H_L = _{i L} h_i)
  • (G_R, H_R) untuk sisi kanan
  • () = penalti leaf baru

Split dipilih jika Gain > 0.

  • 6. Nilai Leaf Optimal

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 \]

  • 7. Prediksi Akhir

Untuk regresi:

\[ \hat{y}(x) = \sum_{t=1}^{T} \eta f_t(x) \]

Karakteristik Utama

  • Versi “tuned and optimized” dari GBM
  • Mendukung regularisasi (L1, L2) → mencegah overfitting
  • Optimasi komputasi: parallelization, cache awareness, dan tree pruning
  • Mendukung sparse data

Kelebihan

  • Kinerja prediktif sangat kuat
  • Lebih cepat dibanding GBM biasa
  • Mendukung fitur-fitur lanjutan: early stopping, handling missing value, weighted data
  • Cocok untuk dataset besar dan kompleks

Kelemahan

  • Relatif lebih rumit dalam tuning hyperparameter
  • Konsumsi memori lebih besar pada dataset sangat besar

Ringkasan Perbedaan Ketiga Model

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

2. Identifikasi Masalah

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.

2.1 Apa yang Ingin Diprediksi

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:

  • Memberikan gambaran kesehatan individu,
  • Dapat membantu strategi pencegahan penyakit,
  • Memungkinkan identifikasi awal risiko kesehatan.

2.2 Variabel Target

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:

  • Age
  • BMI
  • BloodPressure
  • Cholesterol
  • ExerciseHours

Seluruh fitur bersifat numerik dan tidak memiliki missing values, sehingga cocok digunakan untuk model ensemble tanpa perlakuan khusus seperti encoding kategori.


2.3 Alasan Menggunakan Ensemble Learning

Mengacu pada teori pada Bab 1, ensemble learning dipilih karena memiliki beberapa keunggulan signifikan untuk kasus regresi dengan fitur numerik seperti pada dataset ini:

  1. Meningkatkan Akurasi Prediksi Dengan menggabungkan banyak weak learners, hasil prediksi lebih stabil dan lebih akurat dibanding model tunggal.

  2. 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.

  3. Robust terhadap Noise dan Outlier Model seperti Random Forest dan XGBoost relatif tahan terhadap nilai ekstrem, sehingga performa tetap stabil.

  4. Reduksi Bias dan Variance

    • Random Forest → mengurangi variance (bagging)
    • GBM → mengurangi bias secara bertahap (boosting)
    • XGBoost → boosting modern dengan regularisasi, sehingga mengontrol overfitting

Dengan memanfaatkan sifat-sifat tersebut, ensemble learning dianggap cocok untuk menghasilkan prediksi HealthScore yang lebih akurat dan konsisten.


2.4 Tujuan Perbandingan Tiga Model Ensemble

Penelitian ini tidak hanya membangun model, tetapi juga membandingkan performa tiga algoritma ensemble, yaitu:

  1. Random Forest Regression
  2. Gradient Boosting Machines (GBM)
  3. Extreme Gradient Boosting (XGBoost)

Tujuan perbandingan meliputi:

  • Menentukan model mana yang memberikan performa prediksi terbaik terhadap HealthScore.
  • Mengetahui seberapa besar peningkatan akurasi dari boosting modern (XGBoost) dibandingkan metode bagging (Random Forest) dan boosting klasik (GBM).
  • Mengamati perbedaan kemampuan generalisasi ketiga model pada data yang sama.
  • Memberikan rekomendasi model terbaik untuk penggunaan di studi lanjutan atau implementasi praktis.

3. Data Understanding

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.

3.1 Sumber Data

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.

3.2 Jumlah Baris dan Kolom

Hasil pemeriksaan awal menunjukkan bahwa dataset memiliki:

  • 500 baris (observations)
  • 6 kolom (variables)

Seluruh variabel merupakan fitur numerik dan dapat langsung digunakan dalam model regresi ensemble tanpa proses encoding data kategorik.

3.3 Tipe Data

Semua variabel dalam dataset bertipe:

  • Integer → untuk variabel Age
  • Float / Numeric → untuk BMI, BloodPressure, Cholesterol, ExerciseHours, dan HealthScore

Tidak ada variabel kategorik.

3.4 Penjelasan Masing-Masing Variabel

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.

4. Exploratory Data Analysis (EDA)

4.1 Statistik Deskriptif

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

  • Rentang usia: 18–79 tahun
  • Median: 50 tahun
  • Distribusi usia terlihat wajar untuk populasi dewasa yang menjalani pemeriksaan kesehatan.

2. BMI

  • Rentang BMI: 18.24–39.99
  • Rata-rata: 28.95, termasuk kategori overweight.
  • Menunjukkan data pasien cukup bervariasi dari normal hingga obesitas.

3. Blood Pressure

  • Rentang: 90.42–179.81 mmHg
  • Median: 136.42 mmHg
  • Banyak pasien berada di kategori elevated hingga hypertension stage 1–2.

4. Cholesterol

  • Rentang: 120.9–299.9 mg/dL
  • Median: 209.7 mg/dL
  • Rata-rata mendekati batas tinggi, mengindikasikan risiko metabolik yang meningkat.

5. ExerciseHours

  • Rentang: 0.03–9.98 jam/minggu
  • Median: 5.23 jam
  • Variasi besar menunjukkan perbedaan signifikan dalam kebiasaan aktivitas fisik.

6. HealthScore (Target)

  • Rentang: –46.42 hingga 75.07
  • Median: 11.28
  • Rentang yang luas mencerminkan variasi besar kondisi kesehatan antara pasien satu dengan lainnya.

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.


4.2 Korelasi Antar Variabel

Interpretasi Hasil Korelasi

Berdasarkan visualisasi heatmap:

1. Variabel yang berkorelasi negatif dengan HealthScore

Beberapa variabel memiliki hubungan terbalik dengan skor kesehatan:

  • Age
  • BMI
  • BloodPressure
  • Cholesterol

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

  • ExerciseHours menunjukkan korelasi positif cukup kuat 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:

  • BloodPressure dan Cholesterol memiliki korelasi positif ringan.
  • Age juga sedikit berkaitan dengan Cholesterol, meski tidak kuat.

Hubungan antar variabel ini penting untuk diperhatikan karena dapat memengaruhi model prediksi, terutama model linear yang sensitif terhadap multikolinearitas.


4.3 Distribusi Variabel

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.


4.4 Deteksi Outlier

Interpretasi Outlier (Singkat)

1. Age

  • Outlier muncul pada usia yang jauh lebih muda dari mayoritas. Masih realistis dan bukan kesalahan data.

2. BMI

  • Outlier ada pada BMI sangat rendah dan sangat tinggi (underweight & obesitas ekstrem). Umum pada data kesehatan.

3. BloodPressure

  • Outlier berupa tekanan darah sangat rendah atau sangat tinggi (hipotensi/hipertensi). Masuk akal secara klinis.

4. Cholesterol

  • Outlier terdapat pada nilai kolesterol sangat tinggi dan sangat rendah. Masih wajar dalam variasi kondisi metabolik.

5. ExerciseHours

  • Outlier pada jam olahraga 0 jam dan >10 jam, menunjukkan perbedaan kebiasaan fisik yang ekstrem.

6. HealthScore

  • Outlier berupa nilai negatif dan nilai sangat tinggi, sesuai variasi sistem skor dan bukan error.

Ringkasan EDA

  1. Data memiliki distribusi wajar untuk konteks kesehatan.
  2. Korelasi menunjukkan pola sehat/logis.
  3. Outlier ada, tetapi klinis masuk akal.
  4. Hasil EDA mendukung pemodelan menggunakan algoritma ensemble.

5. Data Preprocessing

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.


5.1 Pengecekan Missing Values

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:

  • Tidak diperlukan imputasi
  • Tidak perlu menghapus baris data

Dataset dinyatakan bersih.


5.2 Pemeriksaan Tipe Data dan Variabel Kategorik

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:

  • Age
  • BMI
  • BloodPressure
  • Cholesterol
  • ExerciseHours
  • HealthScore

Karena tidak terdapat variabel kategorik, maka tidak dilakukan proses encoding seperti one-hot encoding.


5.3 Train–Test Split

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

6. Ensemble Modelling

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:

  1. Bagging → Random Forest
  2. Boosting → Gradient Boosting
  3. Extreme Boosting → XGBoost

Setiap model dijalankan menggunakan parameter standar (default parameters) agar perbandingan lebih adil, kecuali beberapa parameter inti yang disesuaikan untuk meningkatkan stabilitas hasil.


6.1 Random Forest

Random Forest adalah metode bagging yang menggabungkan banyak decision tree untuk meningkatkan akurasi dan mengurangi overfitting.

  • Traning Data
## 
## 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 Utama
Parameter Nilai Penjelasan
ntree 500 Jumlah pohon, lebih banyak = lebih stabil
mtry 2 Jumlah fitur yang dicoba setiap split
importance TRUE Menghasilkan feature importance

6.2 Gradient Boosting (GBM)

GBM bekerja dengan melatih pohon secara berurutan, di mana setiap pohon memperbaiki kesalahan pohon sebelumnya.

  • Training
## 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 Utama
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

6.3 XGBoost (Extreme Gradient Boosting)

XGBoost adalah versi boosting yang dioptimalkan untuk kecepatan dan akurasi tinggi melalui regularisasi dan pemangkasan pohon.

  • Persiapan Data

XGBoost membutuhkan format matrix:

  • Training
## ##### 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 Utama
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
  • Ringkasan Proses Pemodelan
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

7. Evaluasi Model

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:

7.1 Root Mean Squared Error (RMSE)

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:

  • RMSE kecil → model lebih akurat
  • RMSE besar → prediksi jauh dari nilai aktual

Rumus RMSE

\[ RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (, \hat{y}*{i} - y*{i} ,)^2 } \]

dengan:

  • ( y_i ) = nilai aktual
  • ( _i ) = nilai prediksi
  • ( n ) = jumlah observasi

Menghitung RMSE

## [1] 12.70197
## [1] 12.88907
## [1] 12.59996
  • Hasil RMSE

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.

7.2 Mean Squared Error (MSE)

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
  • Hasil Mean Squared Error (MSE)
Model MSE
Random Forest 161.34
GBM 166.1281
XGBoost 158.759 (terbaik)
  • Interpretasi

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.

7.3 Mean Absolute Error (MAE)

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
  • Hasil Mean Absolute Error (MAE)
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.

7.4 Coefficient of Determination (R²)

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:

  • R² mendekati 1 → model sangat baik
  • R² mendekati 0 → model buruk
  • R² negatif → model lebih buruk dari prediksi rata-rata

Perhitungan R²

## [1] 0.735326
## [1] 0.7274712
## [1] 0.73956
  • Hasil Coefficient of Determination (R²)
Model
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.

8. Visualisasi Hasil

8.1 Prediksi vs Aktual

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).

Interpretasi Prediksi vs Aktual

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.

1. Random Forest

Ciri-ciri grafik:

  • Titik-titik cukup menyebar, tidak terlalu rapat mengikuti garis diagonal.
  • Beberapa prediksi underestimate (di bawah garis), terutama pada nilai aktual rendah.
  • Dispersi error lebih besar dibanding dua model lainnya.

Interpretasi:

  • Random Forest mampu menangkap pola dasar, tetapi akurasinya masih moderate.
  • Variansi prediksi lebih tinggi dan model kurang stabil dalam memprediksi nilai ekstrem.
  • Kinerja lebih buruk dibanding GBM dan XGBoost, sesuai nilai RMSE dan R².
2. GBM (Gradient Boosting Machines)

Ciri-ciri grafik:

  • Titik-titik lebih mendekati garis diagonal dibanding Random Forest.
  • Pola mulai lebih linear dan rapat, tetapi masih ada sebaran error yang jelas.
  • Beberapa bias pada nilai rendah (prediksi terlalu rendah).

Interpretasi:

  • GBM lebih presisi dibanding Random Forest.
  • Mampu menangkap hubungan non-linear sedikit lebih baik.
  • Namun, masih belum sebaik XGBoost dalam mengikuti pola data.
3. XGBoost

Ciri-ciri grafik:

  • Titik-titik paling rapat menempel pada garis diagonal.
  • Error lebih kecil dan sebaran prediksi lebih konsisten di seluruh rentang nilai.
  • Hampir tidak terlihat outlier ekstrim.

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:

    • RMSE paling kecil
    • MSE paling kecil
    • R² paling tinggi
Kesimpulan Utama

XGBoost secara jelas mengungguli Random Forest dan GBM dalam memprediksi nilai, terlihat dari:

  • Jarak titik ke garis diagonal paling kecil,
  • Penyebaran residual lebih sempit,
  • Prediksi paling konsisten di seluruh skala nilai,
  • Minim bias pada nilai rendah maupun tinggi.

Visualisasi ini menguatkan hasil numerik bahwa XGBoost adalah model terbaik untuk dataset ini.

8.2 Residual Plot

Residual plot memeriksa apakah residual tersebar acak. Pola yang acak menandakan model sudah mempelajari data dengan baik.

Interpretasi Residual Plot

Residual plot digunakan untuk melihat pola kesalahan prediksi (residual = aktual – prediksi). Model yang baik seharusnya menunjukkan:

  • Residual tersebar acak (random scatter)
  • Tidak ada pola khusus
  • Tidak mengumpul atau melebar di area tertentu
  • Mengitari garis 0 (garis merah)

Sekarang kita interpretasikan satu per satu.

1. Random Forest

Ciri-ciri:

  • Residual menyebar acak, tetapi terlihat cukup lebar (variasi besar).
  • Beberapa titik residual berada jauh dari garis 0 (over/underprediction).
  • Ada sedikit pola “mengumpul” dekat prediksi rendah (nilai prediksi negatif hingga 10).

Interpretasi:

  • Random Forest menghasilkan error yang cukup besar dan variatif.
  • Model belum menangkap pola data secara optimal, terutama pada area prediksi rendah.
  • Indikasi heteroskedastisitas ringan (sebaran residual tidak konstan).
  • Secara keseluruhan, performanya kurang stabil dibanding dua model lainnya.
2. GBM (Gradient Boosting Machine)

Ciri-ciri:

  • Sebaran residual lebih rapat dibanding Random Forest.
  • Masih ada outlier residual ekstrem, terutama pada nilai residual > 25 atau < -20.
  • Pola residual terlihat sedikit mengumpul di tengah: prediksi 0–20.

Interpretasi:

  • GBM lebih baik daripada Random Forest dalam mengurangi variansi error.
  • Namun, masih terdapat nilai prediksi yang jauh meleset (residual besar).
  • Error belum sepenuhnya acak → masih terlihat area dengan konsentrasi residual.
  • Model cukup baik, tetapi belum seoptimal XGBoost.
3. XGBoost

Ciri-ciri:

  • Sebaran residual paling rapat dan paling mendekati garis 0.
  • Variansi residual lebih kecil dan relatif homogen (tidak melebar drastis).
  • Titik residual cenderung lebih acak tanpa pola yang jelas.
  • Outlier paling sedikit di antara ketiga model.

Interpretasi:

  • XGBoost memberikan performa paling stabil dan paling konsisten.
  • Kesalahan prediksi kecil dan tidak menunjukkan pola tertentu → good randomness.
  • Homoskedastisitas lebih baik dibanding Random Forest dan GBM.
  • Ini sejalan dengan evaluasi kuantitatif (RMSE, MSE, MAE, R²) yang menunjukkan XGBoost terbaik.
Kesimpulan Utama Residual Plot
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.

8.3 Error Distribution

Distribusi error menunjukkan apakah error simetris dan cenderung berada di sekitar 0. Model ideal menghasilkan distribusi residual simetris.

Interpretasi Distribusi Error

Distribusi error (histogram residual) membantu melihat apakah error:

  • berpusat di sekitar nol
  • simetris atau condong (skewed)
  • memiliki outlier
  • menunjukkan pola tertentu yang menandakan bias model

Model yang ideal memiliki distribusi error yang:

  • berbentuk seperti lonceng (mendekati normal)
  • simetris
  • tidak terlalu banyak error ekstrem

Sekarang kita bahas satu per satu.


1. Random Forest

Ciri-ciri:

  • Error tersebar luas, dari sekitar –25 sampai +30.
  • Distribusi kurang simetris.
  • Ada beberapa lonjakan frekuensi di error –10 sampai +5.
  • Banyak error ekstrem baik negatif maupun positif.

Interpretasi:

  • Random Forest menghasilkan error yang tinggi dan variatif.
  • Distribusi yang melebar menunjukkan model masih sering meleset jauh.
  • Banyaknya error ekstrem mengindikasikan model kurang stabil terhadap pola tertentu di data.
  • Hal ini konsisten dengan RMSE dan MSE yang cukup besar.
2. GBM (Gradient Boosting Machine)

Ciri-ciri:

  • Distribusi error lebih terkonsentrasi di sekitar nol dibanding Random Forest.
  • Masih terlihat error ekstrem, terutama pada kisaran –20 dan +20.
  • Sedikit skew ke arah positif (lebih banyak error > 0).

Interpretasi:

  • GBM lebih stabil dibanding Random Forest.
  • Namun distribusi masih melebar dan memiliki outlier.
  • Skew positif mengindikasikan model cenderung memprediksi lebih rendah dari nilai aktual (underestimation).
  • Konsisten dengan MAE GBM yang sedikit lebih baik tetapi bukan yang terbaik di RMSE/MSE.
3. XGBoost

Ciri-ciri:

  • Distribusi error paling sempit dibanding model lain.
  • Sebagian besar error berada di sekitar –10 sampai +10.
  • Sama-sama ada error ekstrem, tetapi jumlahnya lebih sedikit.
  • Kurva paling mendekati distribusi normal.

Interpretasi:

  • XGBoost menghasilkan error paling kecil dan paling terkontrol.
  • Error lebih simetris dan lebih terpusat di sekitar nol.
  • Ini menunjukkan model paling stabil dan paling akurat.
  • Hal ini sejalan dengan metrik evaluasi (RMSE, MSE, R²) yang menempatkan XGBoost sebagai model terbaik.

Kesimpulan Utama Distribusi Error

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.


8.4 Feature Importance

Untuk melihat fitur yang paling berpengaruh pada model.

Random Forest

Interpretasi Feature Importance – Random Forest

1. %IncMSE (Pengaruh terhadap akurasi model)

Urutan dan nilainya (perkiraan dari plot):

  1. ExerciseHours ≈ 100% → Variabel paling penting. Ketika diacak, MSE naik paling besar.
  2. Cholesterol ≈ 60% → Penting. Meningkatkan MSE cukup signifikan bila diacak.
  3. BloodPressure ≈ 35–40% → Berpengaruh sedang terhadap akurasi.
  4. BMI ≈ 25% → Pengaruh rendah.
  5. Age ≈ 20% → Pengaruh paling kecil terhadap akurasi model.
2. IncNodePurity (Pengaruh terhadap pemilihan split di tree)

Urutan dan nilainya (perkiraan dari sumbu):

  1. ExerciseHours ≈ 90,000 → Paling besar mengurangi impurity; paling sering dipakai untuk split penting.
  2. Cholesterol ≈ 50,000 → Kontribusi tinggi sebagai variabel split.
  3. BloodPressure ≈ 35,000 → Kontribusi sedang.
  4. BMI ≈ 30,000 → Kontribusi relatif kecil.
  5. Age ≈ 25,000 → Kontribusi paling kecil.

Kesimpulan langsung

  • ExerciseHours = variabel paling dominan (baik %IncMSE maupun IncNodePurity).
  • Cholesterol = variabel penting kedua.
  • BloodPressure = kontribusi sedang.
  • BMI dan Age = pengaruh kecil, tidak terlalu memengaruhi prediksi model.

GBM

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

1. ExerciseHours — 50.70
  • Menjadi variabel paling dominan dalam model GBM.
  • Kontribusinya mencapai setengah dari total pengaruh model.
  • GBM sangat mengandalkan ExerciseHours untuk menurunkan error pada setiap boosting iteration.
2. Cholesterol — 21.63
  • Variabel penting kedua.
  • Pengaruhnya setara ~40% dari ExerciseHours, menunjukkan hubungan kuat dengan target.
  • Memberikan peningkatan akurasi signifikan ketika dimasukkan dalam split tree.
3. BloodPressure — 11.17
  • Pengaruh menengah, jauh di bawah dua variabel teratas.
  • Masih relevan, tetapi tidak menjadi faktor utama dalam pembentukan struktur model.
4. BMI — 9.34
  • Pengaruh tergolong rendah, hanya sedikit berkontribusi dalam mengurangi loss.
  • Mungkin berkorelasi dengan variabel lain sehingga perannya lebih kecil.
5. Age — 7.16
  • Variabel paling tidak berpengaruh pada model GBM.
  • Memberikan kontribusi yang sangat minim terhadap akurasi.
Kesimpulan Utama GBM
  1. ExerciseHours adalah driver utama model, memberi kontribusi terbesar (50.7%).
  2. Cholesterol berperan penting (21.6%) namun jauh di bawah ExerciseHours.
  3. BloodPressure, BMI, dan Age memiliki pengaruh kecil, dan Age adalah yang paling lemah.

Model GBM sangat bergantung pada aktivitas fisik (ExerciseHours) dan profil kesehatan (Cholesterol) sebagai prediktor utama.

XGBoost

Interpretasi Feature Importance XGBoost (Langsung & Detil)

Urutan kepentingan fitur dari paling berpengaruh → paling rendah:

1. ExerciseHours — ±0.43 (paling tinggi)
  • Menjadi prediktor paling dominan.
  • XGBoost sangat banyak memakai fitur ini untuk memecah pohon.
  • Artinya durasi olahraga per minggu memiliki pengaruh terbesar terhadap target (mungkin HealthScore atau risiko kesehatan).
  • Perubahan kecil pada jam olahraga memberikan dampak prediksi yang jauh lebih besar dibanding variabel lain.
2. Cholesterol — ±0.21
  • Pentingnya setengah dari ExerciseHours.
  • Masuk sebagai faktor biologis utama yang memengaruhi hasil prediksi.
  • Model menganggap nilai kolesterol sangat relevan untuk menentukan kondisi kesehatan akhir.
3. BloodPressure — ±0.11
  • Penting dalam jumlah sedang.
  • Tidak sepenting kolesterol, tapi masih kontributor fisiologis yang signifikan.
  • Model memakai tekanan darah dalam beberapa split penting, tapi tidak seintens fitur-fitur sebelumnya.
4. BMI — ±0.095
  • Pengaruhnya sedikit lebih rendah dari BloodPressure.
  • Tetap digunakan model, tetapi tidak menjadi penggerak utama keputusan.
  • Artinya perubahan BMI memberikan dampak, namun tidak sebesar variabel biologis utama lain seperti kolesterol.
5. Age — ±0.07 (paling rendah)
  • Fitur paling sedikit digunakan oleh XGBoost.
  • Usia mungkin tetap relevan, tapi tidak memberikan informasi prediktif tinggi dibanding fitur lain.
  • Ini menunjukkan bahwa usia bukan pembeda kuat dalam pola data kamu.

Kesimpulan Visualisasi

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

9. Kesimpulan

9.1 Model Ensemble Terbaik

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
0.735326 0.727471 0.73956

Ringkasan:

  • XGBoost terbaik di RMSE, MSE, dan R²
  • GBM terbaik di MAE, tetapi selisihnya sangat kecil
  • XGBoost menunjukkan performa paling stabil pada seluruh visualisasi

Dari keseluruhan indikator, XGBoost adalah model dengan generalisasi paling kuat dan paling akurat.

9.2 Kenapa XGBoost Menang?

Berikut alasan utama berdasarkan hasil evaluasi dan perilaku model:

1. Error paling kecil dan paling stabil

  • RMSE dan MSE XGBoost paling rendah → error kuadrat paling kecil
  • R² tertinggi → menjelaskan variasi HealthScore paling baik

2. Residual paling acak

  • Residual plot XGBoost menunjukkan sebaran paling rapat dan acak
  • Tidak menunjukkan pola → tidak ada bias signifikan
  • Heteroskedastisitas paling rendah

3. Distribusi error paling sempit

  • Histogram error XGBoost paling simetris dan terkonsentrasi di sekitar 0
  • Outlier paling sedikit

###3 4. Mekanisme boosting lebih optimal

XGBoost memiliki keunggulan teknis:

  • Regularisasi (α, λ) mencegah overfitting
  • Tree boosting menggunakan struktur optimasi lebih efisien
  • Penanganan non-linearitas lebih baik

Kombinasi inilah yang membuat XGBoost outperform model lain.


9.3 Variabel Paling Berpengaruh

Semua model (Random Forest, GBM, XGBoost) menunjukkan pola importance yang konsisten.

Urutan fitur dari paling penting → paling rendah

  1. ExerciseHours

    • RF: tertinggi
    • GBM: 50.70% (paling besar)
    • XGBoost: ±0.43 (paling tinggi) → Faktor dominan, predictor utama HealthScore
  2. Cholesterol

    • RF: penting kedua
    • GBM: 21.63%
    • XGBoost: ±0.21 → Faktor biologis kunci yang kuat
  3. BloodPressure

    • Importance menengah di semua model → Relevan, tetapi bukan driver utama
  4. BMI

    • Pengaruh rendah → Masih dipakai, tapi tidak signifikan dalam keputusan split penting
  5. Age

    • Paling rendah di semua model → Usia tidak memberikan informasi prediktif besar pada dataset ini

9.4 Saran Perbaikan Model

Untuk meningkatkan akurasi model lebih lanjut, berikut langkah rekomendasi:

1. Hyperparameter Tuning

Terutama pada XGBoost:

  • max_depth
  • eta (learning rate)
  • min_child_weight
  • subsample & colsample_bytree
  • nrounds (jumlah boosting)

→ Potensi peningkatan akurasi cukup besar.

###3 2. Feature Engineering Tambahan

Beberapa ide:

  • Normalisasi intensitas olahraga (misal ExerciseHours per hari)

  • Kombinasi fitur baru:

    • BMI × Age
    • BloodPressure ratio (sys/dia jika tersedia)
  • Transformasi log pada fitur dengan skew

###3 3. Menambah Data

Lebih banyak variasi data dapat membantu model mempelajari pola ekstrem dengan lebih baik.

4. Cek dan tangani outlier

Outlier dapat meningkatkan RMSE → memperbaiki preprocessing bisa meningkatkan performa.

5. Cross-validation yang lebih robust

Gunakan:

  • K-Fold CV (k = 5 atau 10)
  • Repeated CV

→ Mengurangi varian estimasi performa.

Kesimpulan Utama

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.