Studi kasus ML

Random Forest untuk Obesity Risk dan Meal Planning

Studi kasus ini menunjukkan bagaimana kondisi fisik dan kebiasaan harian diubah menjadi prediksi risiko yang dapat dijelaskan.

Tim Riset Independen MLIR22 Jul 202616 menit baca1275 kata
Ilustrasi artikel Random Forest untuk Obesity Risk dan Meal Planning
Visual pembuka untuk Healthcare ML · Obesity Risk Prediction dan UCI Repository
Dalam artikel ini
01

Menyusun fitur fisik, pola makan, dan gaya hidup menjadi dataset klasifikasi.

02

Melatih beberapa model lalu memilih hasil terbaik berdasarkan evaluasi yang tepat.

03

Membaca feature importance dan menerjemahkan prediksi menjadi insight yang wajar.

Obesitas tidak dapat dijelaskan hanya dari satu angka. Dua orang dengan berat badan yang hampir sama bisa memiliki pola makan, aktivitas fisik, dan kebiasaan harian yang berbeda. Karena itu, kasus ini menarik untuk dipelajari dengan machine learning: apakah pola dari beberapa data individu dapat digunakan untuk mengelompokkan level obesitas?

Dalam studi Predicting risk of obesity and meal planning to reduce the obese in adulthood using artificial intelligence, prosesnya tidak berhenti pada prediksi. Hasil klasifikasi juga dihubungkan dengan meal planning. Namun kita perlu memisahkan dua hal tersebut dengan jelas. Model machine learning menghasilkan kelas risiko, sedangkan rekomendasi makanan membutuhkan aturan tambahan, kebutuhan gizi individu, dan pertimbangan tenaga kesehatan.

Alur dasarnya cukup sederhana: kumpulkan data individu, latih model untuk mengenali pola, evaluasi kesalahannya, lalu gunakan hasil prediksi sebagai salah satu masukan untuk proses meal planning.

1. Memahami Dataset Obesitas

Dataset yang digunakan untuk latihan berasal dari UCI Machine Learning Repository dengan nama Estimation of Obesity Levels Based on Eating Habits and Physical Condition. Data ini berisi 2.111 baris dari individu di Meksiko, Peru, dan Kolombia. Terdapat 16 fitur input dan satu kolom target, sehingga seluruhnya berjumlah 17 atribut.

Fitur input mencakup kondisi fisik, kebiasaan makan, aktivitas, konsumsi air, penggunaan perangkat teknologi, hingga jenis transportasi. Targetnya adalah NObeyesdad, yaitu level berat badan dalam tujuh kelas: Insufficient Weight, Normal Weight, Overweight Level I, Overweight Level II, Obesity Type I, Obesity Type II, dan Obesity Type III.

Kelompok fiturContohInformasi yang dibawa
Kondisi fisikAge, Gender, Height, WeightMemberikan gambaran dasar individu.
Kebiasaan makanHigh caloric food, vegetable intake, number of meals, snacksMembantu membaca pola konsumsi sehari-hari.
Gaya hidupWater consumption, physical activity, technology usage, transportationMewakili aktivitas dan kebiasaan harian.
TargetNObeyesdadMenjadi kelas yang akan diprediksi model.

Ada satu catatan penting sebelum kita mulai. Menurut dokumentasi UCI, sekitar 77% baris pada dataset ini dibuat secara sintetis menggunakan Weka dan SMOTE, sedangkan 23% dikumpulkan langsung dari pengguna. Artinya, dataset ini baik untuk eksperimen dan pembelajaran, tetapi performanya tidak boleh langsung dianggap mewakili populasi yang lebih luas.

2. Mengapa Menggunakan Random Forest?

Random Forest adalah kumpulan banyak decision tree. Setiap tree belajar dari sampel dan kombinasi fitur yang sedikit berbeda. Setelah itu, seluruh tree memberikan prediksi dan kelas dengan suara terbanyak menjadi hasil akhir.

Pendekatan ini cocok dijadikan baseline untuk data tabular karena hubungan antarfitur tidak selalu sederhana. Misalnya, tinggi dan berat badan saja belum menceritakan seluruh kondisi seseorang. Pola makan, aktivitas fisik, riwayat keluarga, dan kebiasaan lain dapat membentuk kombinasi yang berbeda.

Pada ilustrasi berikut, Tree 1 dan Tree 3 memilih Obesity Type I, sedangkan Tree 2 memilih Normal Weight. Voting mayoritas kemudian menghasilkan prediksi Obesity Type I. Contoh ini menyederhanakan proses sebenarnya, tetapi cukup membantu kita memahami mengapa banyak tree biasanya lebih stabil daripada hanya satu tree.

Random Forest untuk prediksi risiko obesitas
Gambar 1. Beberapa decision tree memberikan prediksi, kemudian Random Forest mengambil hasil voting mayoritas.

3. Bootstrap Sampling: Setiap Tree Belajar dari Sampel Berbeda

Salah satu alasan setiap tree dapat menghasilkan keputusan berbeda adalah bootstrap sampling. Pada proses ini, baris data diambil secara acak dengan pengembalian. Karena itu, satu individu dapat terpilih lebih dari sekali, sedangkan individu lain mungkin tidak terpilih pada sampel sebuah tree.

Gambar berikut merupakan ilustrasi sederhana untuk menunjukkan bahwa Sampel A dan Sampel B berisi susunan data yang berbeda. Dalam implementasi bootstrap yang sebenarnya, pengulangan baris tetap diperbolehkan. Jika setiap baris selalu unik, proses tersebut lebih dekat dengan pengambilan sampel tanpa pengembalian, bukan bootstrap murni.

Ilustrasi bootstrap sampling pada dataset obesitas
Gambar 2. Ilustrasi perbedaan sampel antar-tree; implementasi bootstrap sebenarnya dapat memilih baris yang sama lebih dari sekali.

4. Menghubungkan Prediksi dengan Meal Planning

Setelah model menghasilkan level obesitas, kita mendapatkan sebuah informasi klasifikasi. Informasi ini belum otomatis menjadi menu sarapan, makan siang, atau makan malam. Agar dapat digunakan untuk meal planning, kita membutuhkan tahap keputusan yang terpisah untuk menghitung kebutuhan energi, komposisi makronutrien, kondisi kesehatan, alergi, preferensi makanan, dan tujuan pengguna.

Diagram berikut merangkum alur dari data individu menuju model, level risiko, lalu meal plan. Agar visual tetap ringkas, dua kelas overweight pada dataset UCI digabung menjadi satu label Over Weight. Pada proses training yang sebenarnya, kedua kelas asli sebaiknya tetap dipertahankan jika memang itu target yang ingin dipelajari.

Alur prediksi risiko obesitas dan meal planning
Gambar 3. Prediksi model menjadi masukan untuk tahap meal planning, bukan resep medis yang langsung dihasilkan oleh classifier.

Penting: hasil model ini bukan diagnosis medis. Meal planning berbasis model sebaiknya digunakan untuk edukasi atau pendukung keputusan awal, kemudian ditinjau oleh dokter atau ahli gizi.

5. Mencoba Dataset di AutoTrain ML

Jika ingin mencoba alurnya tanpa menulis kode, kita dapat mengunggah dataset CSV atau Excel ke AutoTrain ML, memilih NObeyesdad sebagai target, lalu menjalankan beberapa algoritma klasifikasi. Hasil Random Forest dapat dibandingkan dengan XGBoost, Gradient Boosting, atau model lain melalui metrik dan confusion matrix.

Jangan hanya memilih model dengan angka akurasi tertinggi. Periksa precision, recall, dan F1-score pada setiap kelas. Kita juga perlu memastikan data train dan test dipisahkan dengan benar serta memeriksa kemungkinan data leakage. Pada kasus kesehatan, memahami jenis kesalahan model sama pentingnya dengan melihat skor akhirnya.

Workflow AutoTrain ML untuk dataset obesitas
Gambar 4. Alur eksperimen no-code dari upload dataset, pemilihan target, training, evaluasi, hingga export model.

Alur praktis: upload dataset → pilih target NObeyesdad → jalankan auto-train → bandingkan model → periksa confusion matrix → export model jika hasil evaluasinya memadai.

6. Baseline Sederhana dengan Python

Versi Python berikut dapat digunakan sebagai baseline. Tujuannya bukan langsung membuat sistem medis, melainkan memahami alur data, preprocessing, training, dan evaluasi secara utuh.

import pandas as pd

data = pd.read_csv("ObesityDataSet_raw_and_data_sinthetic.csv")

data.info()
print(data.head())
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder

X = data.drop("NObeyesdad", axis=1)
y = data["NObeyesdad"]

X = pd.get_dummies(X, drop_first=True)

label_encoder = LabelEncoder()
y_encoded = label_encoder.fit_transform(y)

X_train, X_test, y_train, y_test = train_test_split(
    X, y_encoded,
    test_size=0.2,
    random_state=42,
    stratify=y_encoded
)
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(
    n_estimators=500,
    random_state=42,
    class_weight="balanced"
)

model.fit(X_train, y_train)
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix

y_pred = model.predict(X_test)

print("Accuracy:", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred, target_names=label_encoder.classes_))
print(confusion_matrix(y_test, y_pred))

Dari hasil tersebut, perhatikan kelas mana yang sering tertukar. Jika Overweight Level II sering diprediksi sebagai Obesity Type I, misalnya, kita perlu memeriksa kembali distribusi data, fitur yang dominan, dan batas antarkelas. Nah, di sinilah confusion matrix membantu kita memahami perilaku model lebih jauh daripada satu angka akurasi.

Apa yang Dapat Kita Ambil dari Proyek Ini?

Nilai utama proyek ini bukan sekadar membuktikan bahwa Random Forest dapat menghasilkan prediksi. Proyek ini menunjukkan alur yang lebih lengkap: memahami dataset, memilih model, membaca kesalahan, lalu menentukan dengan hati-hati bagaimana output model boleh digunakan.

Untuk eksperimen berikutnya, kita dapat membandingkan beberapa algoritma dan melihat feature importance. Namun batasnya harus tetap jelas. Model mengelompokkan pola dari data; keputusan gizi dan kesehatan tetap membutuhkan konteks manusia serta penilaian profesional.

Sumber

  1. UCI Machine Learning Repository: Estimation of Obesity Levels Based on Eating Habits and Physical Condition, DOI 10.24432/C5H31Z.
  2. Kaur, R., Kumar, R., dan Gupta, M. Predicting risk of obesity and meal planning to reduce the obese in adulthood using artificial intelligence. Endocrine 78, 458–469 (2022), DOI 10.1007/s12020-022-03215-4.
  3. AutoTrain ML: dokumentasi alur upload dataset, training, evaluasi, export model, dan deployment API.
POIN PENTING

Ringkasan praktis

  • Studi kasus ini menunjukkan bagaimana kondisi fisik dan kebiasaan harian diubah menjadi prediksi risiko yang dapat dijelaskan.
  • Periksa contoh dan batas metode sebelum menarik kesimpulan dari hasilnya.
  • Gunakan roadmap belajar untuk menguji satu perubahan pada satu waktu.
FAQ SINGKAT

Pertanyaan yang sering muncul

Apa yang perlu disiapkan sebelum membaca?

Tidak ada prasyarat khusus. Istilah tentang healthcare ml akan dijelaskan saat pertama kali digunakan.

Bagaimana cara menguji pemahaman ini?

Gunakan data kecil dan ubah satu parameter pada satu waktu. Setelah itu, buka roadmap belajar untuk melihat apakah intuisi kita sesuai dengan hasilnya.

SUMBER ASLI

Obesity Risk Prediction dan UCI Repository

Sumber berikut dapat dibuka untuk memeriksa konteks dan rujukan yang digunakan.

Buka sumber asli →
BagikanXLinkedInWhatsApp
BACA JUGA

Artikel terkait