Mempersiapkan Dataset untuk Machine Learning
Membangun sarana prediksi risiko kesehatan yang praktis dimulai dari pengolahan data yang bersih. Proyek ini menggunakan dataset publik berisi 158.355 catatan kesehatan dengan 22 kolom, mencakup 21 indikator demografis, klinis, dan gaya hidup dengan target biner heart_attack. Fitur kategorikal di-encode, dan nilai numerik dinormalisasi menggunakan MinMaxScaler agar setiap fitur memiliki bobot yang seimbang selama pelatihan model.
Untuk mencegah kebocoran data (data leakage), dataset dibagi 80:20 (126.684 baris training dan 31.671 baris testing) menggunakan stratified sampling. SMOTE hanya diterapkan pada data training untuk menangani ketidakseimbangan kelas sehingga seimbang menjadi 151.766 sampel, sementara data testing tetap murni. Hyperparameter tuning dengan RandomizedSearchCV mengevaluasi F1-Score pada empat algoritma: Random Forest, Linear SVM, K-Nearest Neighbors, dan Logistic Regression.
- Dataset
- 158,355 rows / 22 columns
- Pembagian stratified
- 80:20
- Accuracy Random Forest
- 71.93%
- ROC-AUC Random Forest
- 0.8015

Menyajikan Prediksi Melalui Flask API Mandiri
- Data Kesehatan Pasien di iHealth Edu
- Backend Aplikasi Laravel
- Microservice Flask REST API
- Artefak Preprocessing Terserialisasi
- Inferensi Random Forest
- Payload Risiko Terstruktur
Pada iHealth Edu yang dikembangkan bersama Puskesmas Padangsari di Semarang, fitur screening pasien, modul edukasi, rekam medis, dan perangkat IoT ESP32 berada di dalam aplikasi web Next.js dan Laravel. Alih-alih menjalankan model Python langsung di server web utama, alur machine learning dipisahkan ke dalam microservice Flask REST API mandiri.
Menggunakan Joblib, artefak model Random Forest (.pkl), MinMaxScaler, dan kamus pemetaan fitur disimpan bersama. Langkah ini memastikan data pasien yang masuk secara real-time mengalami transformasi matematis yang persis sama dengan saat pelatihan offline. Layanan Flask dikemas menggunakan Docker dan di-deploy pada server Linux Ubuntu.
Menerjemahkan Probabilitas Menjadi Pendukung Keputusan
Random Forest dipilih untuk purwarupa ini karena meraih akurasi terdokumentasi tertinggi sebesar 71,93% dan ROC-AUC tertinggi sebesar 0,8015 di antara algoritma yang dibandingkan, meskipun Logistic Regression memiliki F1 tertinggi (0,6618) dan KNN memiliki recall tertinggi (70,40%).
Saat tenaga kesehatan yang berwenang memasukkan data pemeriksaan pasien, API Flask mengembalikan respons JSON terstruktur yang memuat kategori risiko prediksi, probabilitas numerik, faktor risiko pendukung berbasis aturan, dan lima feature importance global teratas. Frontend menampilkan indikator ini sebagai konteks visual yang informatif di dalam riwayat kesehatan pasien.

Batasan Medis yang Jelas dan Dampak Praktis
- Sajikan hasil prediksi dan skor probabilitas sebagai indikator statistik, bukan diagnosis medis.
- Tampilkan faktor risiko berbasis aturan sebagai referensi pendukung, bukan penyebab mutlak.
- Posisikan feature importance teratas sebagai wawasan perilaku model global, bukan saran medis individual.
- Lindungi data rekam medis pasien melalui kontrol akses berbasis peran yang ketat.
Penerapan machine learning di bidang kesehatan paling bermanfaat saat batasannya disampaikan secara transparan. Dengan memadukan pelatihan model yang terstruktur dan penyajian pendukung keputusan yang jelas, platform ini memberikan indikator risiko awal yang bermanfaat sambil tetap menempatkan keputusan klinis pada tenaga medis profesional.