RESEARCH MONOGRAPH•2025•4 min read

Heart Disease Classification

Klasifikasi Risiko Penyakit Jantung Berbasis Deep Learning (TensorFlow/Keras) & Inferensi Web TensorFlow.js

Proyek diagnosis prediktif risiko penyakit jantung menggunakan dataset klinis UCI Cleveland (291 sampel pasien bersih, 13 parameter klinis). Model dibangun menggunakan arsitektur Deep Neural Network (TensorFlow/Keras) dengan regularisasi Early Stopping yang mencapai akurasi uji 96,67%, presisi 100%, dan recall 94,12%, serta diekspor ke format TensorFlow.js untuk inferensi langsung di browser.

TensorFlowKerasTensorFlow.jsPythonScikit-learnPandasNumPy
Test Accuracy
96.67%
Akurasi superior pada 30 data uji klinis independen
Precision
100%
0 False Positive (tidak ada pasien sehat yang salah divonis sakit)
Recall (Sensitivity)
94.12%
16 dari 17 pasien berisiko jantung berhasil terdeteksi
Specificity
100%
13 dari 13 pasien sehat teridentifikasi sempurna
Test Loss
0.2194
Nilai binary crossentropy loss stabil dan konvergen

Business Understanding & Strategic Context

Problem Statement

Penyakit kardiovaskular adalah penyebab kematian nomor satu di dunia, di mana hampir separuh pasien (49% kasus asimtomatik) tidak merasakan gejala nyeri dada tipikal pada tahap awal. Skrining medis konvensional memerlukan waktu interpretasi yang cukup lama, sehingga dibutuhkan sistem asisten AI klinis yang mampu memberikan penilaian risiko instan dan akurat.

Strategic Objective

Mengembangkan model klasifikasi biner berbasis Deep Learning yang andal untuk mendeteksi indikasi penyakit jantung dengan memprioritaskan sensitivitas/recall tinggi (meminimalkan false negative) dan mengekspor model ke TensorFlow.js untuk aksesibilitas web klinis.

Tangible Business Impact

Tingkat akurasi diagnosis 96,67% dan presisi sempurna 100% pada data uji klinis tanpa menghasilkan alarm palsu (False Positive = 0).
Sensitivitas/Recall 94,12% (16 dari 17 pasien berisiko berhasil terdeteksi dengan tepat).
Kemampuan inferensi client-side zero-latency (<20ms) via TensorFlow.js tanpa perlu mengirimkan data medis sensitif pasien ke server eksternal (menjaga privasi data medis).
Menyediakan baseline skrining awal cepat bagi tenaga medis sebelum pemeriksaan diagnostik lanjutan (angiografi/kateterisasi).

Target Users & Stakeholders

Cardiologists & General Practitioners
Clinical Decision Support System (CDSS) Developers
Healthcare Informatics Researchers
Telemedicine & Triage Screening Platforms

Dataset Specifications & Processing Pipeline

Data Scope & Volume

303 rekam medis pasien dari UCI Cleveland Heart Disease Dataset, disaring menjadi 291 data bersih setelah pembersihan missing values tersembunyi (13 fitur klinis + 1 target).

Algorithmic Methodology

Arsitektur Multi-Layer Perceptron (Sequential: Dense 64 ReLU -> Dense 32 ReLU -> Dense 1 Sigmoid) dengan optimasi Adam (lr=0.001), Binary Crossentropy, dan Early Stopping (patience=20, best weights restored pada epoch 6).

Key Variable Dimensions

age & sex (Usia 29–77 tahun & Jenis Kelamin)
cp (Tipe Nyeri Dada: Typical Angina, Atypical, Non-anginal, Asymptomatic)
trestbps & chol (Tekanan Darah Istirahat & Kolesterol Serum mg/dl)
fbs & restecg (Gula Darah Puasa & Hasil Elektrokardiogram/EKG)
thalach & exang (Detak Jantung Maksimum & Angina Induksi Olahraga)
oldpeak & slope (Depresi Segmen ST & Kemiringan Gelombang ST)
ca & thal (Jumlah Pembuluh Darah Utama & Status Thalassemia)
num (Target Diagnosis: 0 = Sehat, 1 = Penyakit Jantung)

Data Preprocessing & Feature Engineering Architecture

STEP 01

Hidden Missing Values Handling: Mengidentifikasi 6 nilai string "?" pada kolom ca (4) dan thal (2) yang lolos dari deteksi isnull(), lalu dikonversi ke numeric dan dilakukan pembersihan baris.

STEP 02

Binary Target Rebinning: Menstandarkan label target multi-kelas (0–4) menjadi biner (0 = Sehat, 1 = Penyakit Jantung).

STEP 03

Feature Standardization: Penerapan StandardScaler pada 13 variabel input numerik dan kategorikal terenkode.

STEP 04

Stratified Train/Test Split: Pembagian data 90/10 dengan random_state=42 dan stratifikasi target (Train: 261 sampel | Test: 30 sampel).

Deep Neural Network Architecture & Training Pipeline

Early Stopping (Best Epoch 6)
Input Layer
13 Features
StandardScaler Normalized
Hidden Layer 1
Dense (64 Units)
Activation: ReLU
Hidden Layer 2
Dense (32 Units)
Activation: ReLU
Output Layer
Dense (1 Unit)
Sigmoid (0 = Sehat, 1 = Sakit)
OptimizerAdam (lr=0.001)
Loss FunctionBinary Crossentropy
Batch Size18 Samples
Early StoppingPatience = 20 Epochs

Clinical Confusion Matrix (Test Set: 30 Pasien)

Akurasi: 96.67%
True Negative (Sehat)
13
Specificity: 100%
False Positive (Alarm Palsu)
0
Precision: 100%
False Negative (Sakit Lolos)
1
Hanya 1 Kasus Sakit Terlewat
True Positive (Sakit Terdeteksi)
16
Recall / Sensitivitas: 94.12%

Model berhasil mendeteksi 16 dari 17 pasien penyakit jantung tanpa satupun vonis salah pada pasien sehat (False Positive = 0).

Model Export & Web Deployment

1. TensorFlow.js Web Model
model.json + group1-shard1of1.bin untuk inferensi langsung di browser.
2. Preprocessing Metadata
scaler_info.json menyimpan mean & scale untuk standardisasi 13 input pasien.
3. TensorFlow SavedModel
Format produksi saved_model.pb untuk integrasi TFX / TensorFlow Serving.

Empirical Discoveries & Key Findings

Karakteristik Gejala144 / 291 Pasien (49%)

49% Pasien Penyakit Jantung Bersifat Asymptomatic

Sebanyak 144 pasien masuk dalam kategori nyeri dada Asymptomatic (tipe 4). Ketiadaan gejala nyeri dada nyata menjadi bukti krusial pentingnya pemodelan prediktif berbasis biomarker elektrokardiografi dan pembuluh darah.

Kualitas Data6 Baris Objek Lolos

Missing Values Tersembunyi pada Karakter String "?"

Fungsi isnull() standar gagal mendeteksi nilai hilang karena tercatat sebagai string "?". Konversi eksplisit numeric membongkar 4 missing value di kolom ca dan 2 di kolom thal sebelum pelatihan model.

Pola Biomarkeroldpeak > 1.0 & thalach < 140

Kombinasi Thalach Rendah & ST-Depression Tinggi

Pasien terkonfirmasi penyakit jantung memiliki kecenderungan detak jantung maksimum (thalach) yang lebih rendah saat uji stres dan depresi segmen ST (oldpeak) yang signifikan pasca aktivitas fisik.

Pelatihan JaringanVal Accuracy 96.67%

Konvergensi Optimal pada Epoch 6 via Early Stopping

Model mencapai performa validasi tertinggi pada epoch 6 dari 100 epoch maksimal. Mekanisme Early Stopping memulihkan bobot terbaik pada epoch 26, mencegah overfitting pada dataset sampel kecil.

Actionable Strategic Recommendations

Target 1
Deployment Web Client-Side (TensorFlow.js)

Integrasikan model.json dan scaler_info.json ke antarmuka aplikasi web untuk inferensi instan tanpa biaya server backend.

Expected Business Outcome:

Menghadirkan kalkulator risiko jantung real-time berlatensi <20ms dengan privasi data medis 100% terjaga di sisi klien.

Target 2
Validasi Klinis Lanjutan (Stratified K-Fold CV)

Terapkan 10-Fold Cross Validation dan uji komparasi dengan model TF-Decision Forests serta XGBoost.

Expected Business Outcome:

Memperoleh interval kepercayaan (confidence interval) yang lebih stabil sebelum integrasi sistem rumah sakit.

Target 3
Interpretabilitas Model (SHAP / Feature Attribution)

Tambahkan visualisasi kontribusi fitur per pasien untuk menjelaskan alasan di balik skor probabilitas risiko.

Expected Business Outcome:

Meningkatkan transparansi keputusan (Explainable AI) dan mempermudah verifikasi oleh dokter spesialis.

CRISP-DM Standard Methodology Execution

Cross-Industry Standard Process for Data Mining (CRISP-DM): This project rigorously applies the 6 standard industry phases of data science from business understanding through deployment.
Fase 1Healthcare Framing

Business & Clinical Understanding

Merumuskan kebutuhan deteksi dini penyakit kardiovaskular dengan toleransi False Negative serendah mungkin.

Memahami 13 parameter biomarker kardiovaskular standar medis UCI Cleveland.
Menetapkan metrik evaluasi sensitivitas/recall sebagai prioritas utama keselamatan pasien.
Merancang arsitektur model ringan yang kompatibel untuk web deployment TensorFlow.js.
Fase 2Clinical Profiling

Data Understanding

Eksplorasi data 303 pasien, deteksi anomali karakter string, dan profil distribusi demografis.

Deteksi nilai "?" pada kolom pembuluh darah (ca) dan thalassemia (thal).
Analisis sebaran jenis kelamin (68% laki-laki, 32% perempuan) dan kelompok usia rata-rata 54,4 tahun.
Inspeksi distribusi kolesterol dan tekanan darah terhadap risiko penyakit jantung.
Fase 3Pipeline & Scaling

Data Preparation

Pembersihan data menjadi 291 sampel bersih, rebinning target biner, dan standardisasi fitur.

Konversi nilai missing "?" ke NaN dan eliminasi baris tidak lengkap.
Rebinning target num > 0 menjadi kelas biner (0 = Sehat, 1 = Sakit).
Penerapan StandardScaler dan penyimpanan parameter mean/scale ke scaler_info.json.
Stratified 90/10 train-test split untuk menjaga proporsi kelas pada data uji.
Fase 4Deep Neural Network

Modeling

Pembangunan arsitektur Multi-Layer Perceptron Keras dengan regularisasi Early Stopping.

Konstruksi Sequential Network: Dense 64 (ReLU) -> Dense 32 (ReLU) -> Dense 1 (Sigmoid).
Kompilasi dengan Adam optimizer (learning rate 0.001) dan Binary Crossentropy loss.
Pelatihan model dengan batch size 18 dan early stopping callback (restore best weights).
Fase 5Clinical Validation

Evaluation

Evaluasi performa model pada 30 data uji independen dengan matriks konfusi klinis.

Pencapaian Test Accuracy 96,67% dan Test Loss 0,2194 pada data uji.
Evaluasi Confusion Matrix: 16 True Positive, 13 True Negative, 0 False Positive, 1 False Negative.
Pencapaian Precision 100% dan Sensitivity/Recall 94,12%.
Fase 6TF.js & Serving Export

Deployment

Ekspor model ke format TensorFlow.js dan SavedModel untuk integrasi web dan produksi.

Konversi model Keras ke format TensorFlow.js (model.json & group1-shard1of1.bin).
Penyusunan file scaler_info.json untuk sinkronisasi normalisasi data pada inferensi frontend.
Ekspor format TensorFlow SavedModel (saved_model.pb) untuk pipeline production serving.
Clinical Research & Medical Disclaimer

Model klasifikasi ini dikembangkan untuk tujuan educational / research only. Hasil prediksi dan probabilitas risiko bukan merupakan diagnosis medis resmi dan tidak boleh dijadikan pengganti konsultasi, pemeriksaan fisik, atau evaluasi medis langsung oleh dokter spesialis jantung dan tenaga medis profesional bersertifikasi.