Skip to content

The project aims to study the concept and development of health insurance as a financial system that provides social protection against health risks

Notifications You must be signed in to change notification settings

ssabrut/analysis-on-medical-insurance-charge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Laporan Proyek Machine Learning - Michael Eko

Domain Proyek

Latar Belakang

Asuransi kesehatan merupakan sebuah sistem keuangan yang memberikan jaminan sosial atas risiko yang ditimbulkan oleh gangguan kesehatan (penyakit), baik penyakit yang dapat disembuhankan dengan pelayanan rawat jalan maupun perawatan yang lebih intensif (rawat inap). Asuransi kesehatan dapat diselenggarakan baik oleh perusahaan asuransi sosial, perusahaan asuransi jiwa, maupun juga perusahaan asuransi umum. Tak jarang juga, pembiayaan kesehatan yang dilakukan langsung (Out of Pocket/OOP) masih mendominasi di negara-negara berkembang, termasuk Indonesia. Sistem pembiayaan seperti ini akan membebani individu baik kesulitan dalam mendapatkan akses maupun membebani secara finansial.

Menurut Thabrany (2005), pengeluaran OOP bersifat regresif, semakin sulit bagi mereka yang berpenghasilan rendah daripada mereka yang berpenghasilan tinggi. Selain itu, karena perkembangan teknologi kesehatan dan kedokteran, biaya pengobatan dan perawatan semakin meningkat. Bahkan orang kaya pun bisa kehilangan hartanya untuk membiayai pengobatan yang dijalani. Oleh karena itu, diperlukan persiapan untuk mengatasi risiko tersebut. Hal ini dimungkinkan dengan asuransi kesehatan.

Konsep asuransi kesehatan pertama kali dikemukakan oleh Hugh pada tahun 1964. Pada akhir abad ke-19, asuransi kesehatan hanya ditujukan untuk asuransi kecelakaan. Jenis asuransi ini berlanjut hingga awal abad ke-20 di California, negara bagian di Amerika Serikat dan berkembang dengan ditemukannya produk asuransi kesehatan baru yang semakin modern. Melalui asuransi kesehatan, biaya pengobatan dan perawatan orang yang sakit (tertanggung) akan ditanggung oleh perusahaan asuransi (penanggung).

Business Understanding

Problem Statement

Berdasarkan pada latar belakang di atas, permasalahan yang dapat diselesaikan pada proyek ini adalah sebagai berikut :

  • Bagaimana cara menentukan harga yang harus dibayar oleh pengguna berdasarkan beberapa ketentuan (umur, jenis kelamin, bmi, perokok atau tidak, daerah tempat tinggal, jumlah anak)?
  • Bagaimana cara membangun model yang dapat memprediksi harga asuransi kesehatan sesuai ketentuan dengan baik?

Goals

Tujuan proyek ini dibuat adalah sebagai berikut :

  • Dapat memprediksi harga asuransi kesehatan yang harus dibayar oleh pengguna
  • Membantu para pengguna asuransi kesehatan dalam menentukan harga yang terbaik

Solution Statement

Solusi yang dapat dilakukan agar goals terpenuhi adalah sebagai berikut :

  • Melakukan analisa, eksplorasi, pemrosesan pada data dengan memvisualisasikan data agar mendapat gambaran bagaimana data tersebut. Berikut adalah analisa yang dapat dilakukan :
    • Menangani missing value pada data
    • Mencari korelasi pada data
    • Melakukan normalisasi data pada fitur numerik agar dapat diterima oleh model dengan baik
  • Membuat model regresi untuk memprediksi bilangan kontinu untuk memprediksi harga yang akan datang. Berikut beberapa algoritma yang digunakan pada proyek ini :
    • Support Vector Machine
    • Linear Regression
    • Boosting Algorithm (AdaBoost & GradientBoost)
  • Melakukan hyperparameter tuning agar model dapat berjalan pada performa terbaik dengan menggunakan teknik Grid Search

Data Understanding


Dataset yang digunakan pada proyek ini diambil dari website kaggle Medical Insurance dataset. Dataset ini memiliki format .csv yang mempunya total 3630 data dengan 7 fitur (age, sex, bmi, smoker, region, children, charges) dengan penjelasan sebagai berikut :

  • age : merupakan umur dari responden
  • sex : merupakan jenis kelamin dari responden
  • bmi : merupakan bmi dari responden (berat badan (kg) / tinggi badan2 (m))
  • smoker : merupakan keterangan perokok atau tidak dari responden
  • region : merupakan negara responden tinggal
  • children : merupakan berapa banyak anak yang dimiliki responden
  • charges : merupakan biaya yang harus dibayar oleh responden

Exploratory Data Analysis

Sebelum melakukan pemrosesan data, ada baiknya untuk mengeksplor data untuk mengetahui keadaan data seperti mencari korelasi antar fitur, mencari outlier, analisis univariate dan multivariate

  • Univariate Analysis Pada tahap ini kita akan mencari fitur-fitur yang memiliki korelasi dengan fitur dependan (charges). Gambar 1, Persebaran data antara age dengan charges

    Dari visualisasi pada Gambar 1, dapat kita lihat fitur age dan variabel dependen (charges) memiliki korelasi positif dan linear yang kuat. Sehingga dapat kita simpulkan bahwa semakin bertambah umur seseorang, maka akan semakin banyak juga biaya yang harus dikeluarkan untuk asuransi kesehatan.

    Gambar 2, Persebaran data antara bmi dengan charges

    Dari visualisasi pada Gambar 2, dapat kita lihat fitur bmi dan variabel dependen (charges) memiliki korelasi positif yang kuat namun tidak memiliki hubungan linear, melainkan polynomial. Sehingga dari visualisasi Gambar 2 dapat kita simpulkan bahwa semakin tinggi bmi seseorang maka tidak menjamin harga asuransi akan mahal.

  • Multivariate Analysis Selanjutnya kita akan melihat distribusi dari seluruh fitur dan melihat hubungan antar fitur-fitur yang terdapat pada dataset.

    Gambar 3, Plot persebaran distribusi dan korelasi antar fitur

    Untuk lebih jelasnya dapat kita visualisasikan menggunakan matriks korelasi menggunakan library seaborn. Dapat kita lihat, age dan bmi memiliki korelasi positif dengan nilai 0.3 dan 0.21 secara berurutan dengan fitur charges. Sehingga fitur ini dapat menjadi prediktor yang kuat.

    Gambar 4, Plot matriks korelasi antar fitur

Data Preparation

Splitting Dataset

Kita akan membagi dataset menjadi 2 yaitu sebagai train data dan test data. Train data digunakan sebagai training model dan test data digunakan sebagai validasi apakah model sudah akurat atau belum. Proposi yang umum dalam splitting dataset adalah 80:20, 80% sebagai train data dan 20% sebagai test data, sehingga kita akan menggunakan proporsi tersebut.

Data Normalization

Normalisasi data digunakan agar model dapat bekerja lebih optimal karena model tidak perlu mengolah data dengan angka besar. Normalisasi biasanya mentransformasi data dalam skala tertentu. Untuk proyek ini kita akan normalisasi data 0 hingga 1.

Modeling

Model yang akan digunakan proyek kali ini yaitu Support Vector Machine, Linear Regression, Ada Boost dan Gradient Boost. Dalam membentuk model ini kita akan menggunakan teknik Grid Search untuk menentukan hyperparameter yang paling optimal untuk setiap model.

Support Vector Machine

Support Vector Regression memiliki prinsip yang sama dengan SVM, namun SVM biasa digunakan dalam klasifikasi. Pada SVM, algoritma tersebut berusaha mencari jalan terbesar yang bisa memisahkan sampel dari kelas berbeda, sedangkan SVR mencari jalan yang dapat menampung sebanyak mungkin sampel di jalan. Untuk hyper parameter yang digunakan pada model ini adalah sebagai berikut :

  • kernel : Hyperparameter ini digunakan untuk menghitung kernel matriks sebelumnya.
  • C : Hyperparameter ini adalah parameter regularisasi digunakan untuk menukar klasifikasi yang benar dari contoh training terhadap maksimalisasi margin fungsi keputusan.
  • gamma : Hyperparameter ini digunakan untk menetukan seberapa jauh pengaruh satu contoh pelatihan mencapai, dengan nilai rendah berarti jauh dan nilai tinggi berarti dekat.

Setelah menjalan grid search sebanyak 5 fold pada SVM, maka didapatkan parameter terbaik yaitu C : 1000, gamma : auto dan kernel : rbf.

Kelebihan
  • Lebih efektif pada data dimensi tinggi (data dengan jumlah fitur yang banyak).
  • Memori lebih efisien karena menggunakan subset poin pelatihan.
Kelemahan
  • Sulit dipakai pada data skala besar

Linear Regression

Linear Regression mempelajari bentuk hubungan antara satu atau lebih variable bebas X dengan sebuah variable respon Y. Dalam menganalisis hubungan antara variable bebas X dan variabel respon Y, ada kemungkinan terjadi hubungan linier yang berbeda untuk setiap interval X. Untuk linear regression kita akan menggunakan default hyperparameter, maksudnya kita tidak akan menajalankan grid search untuk mencari parameter terbaik dari model ini.

Kelebihan
  • Kemudahan untuk digunakan
  • Menentukan Kekuatan Prediktor
  • Dapat Memprediksi Tren di Masa yang Akan Datang
Kelemahan
  • Hasil prediksi dari analisis regresi merupakan nilai estimasi, sehingga kemungkinan untuk tidak sesuai dengan data aktual
  • Penentuan variabel independen dan variabel dependen yang saling berkaitan

Gradient Boosting

Gradient Boosting, adalah algoritma machine learning yang menggunakan teknik ensembel learning dari decision tree untuk memprediksi nilai. Gradient Boosting sangat mampu menangani pattern yang kompleks dan data ketika linear model tidak dapat menangani. Untuk hyperparameter yang digunakan pada model ini ada 3 yaitu :

  • learning_rate : Hyperparameter training yang digunakan untuk menghitung nilai koreksi bobot padad waktu proses training. Umumnya nilai learning rate berkisar antara 0 hingga 1
  • n_estimators : Jumlah tahapan boosting yang akan dilakukan.
  • criterion : Hyperparameter yang digunakan untuk menemukan fitur dan ambang batas optimal dalam membagi data

Setelah menjalan grid search sebanyak 5 fold pada SVM, maka didapatkan parameter terbaik yaitu criterion : squared_error, learning_rate : 0.1 dan n_estimators : 500.

Kelebihan
  • Hasil pemodelan yang lebih akurat
  • Model yang stabil dan lebih kuat (robust)
  • Dapat digunakan untuk menangkap hubungan linear maupun non linear pada data
Kelemahan
  • Pengurangan kemampuan interpretasi model
  • Waktu komputasi dan desain tinggi
  • Tingkat kesulitan yang tinggi dalam pemilihan model

Untuk proyek kali ini kita akan menggunakan model GradientBoostRegressor karena data pada proyek ini bersifat non-linier yang dimana GradientBoost bekerja baik dengan data linier maupun non-linier yang menghasilkan error paling sedikit daripada model yang lain.

Evaluation

Untuk evaluasi pada machine learning model ini, metrik yang digunakan adalah mean squared error (mse). Dimana metrik ini mengukur seberapa dekat garis pas dengan titik data.

mean_squared_error = $$\tfrac{\sum_{t=1}^{n} (Y_{i} - \widehat{Y_{i}})^{2}}{n}$$

dimana :

  • n = jumlah data
  • Yi = nilai sesungguhnya
  • Yi_hat = nilai prediksi

Setelah melakukan proses training dan testing pada semua model, maka didapatkan mean squared error sebagai berikut :

SVR LinearRegression GradientBoos
train_mse 97504147.821138 33145267.308484 7103268.223391
test_mse 110082026.991648 30747334.712031 12906691.126701

dari tabel di atas dapat kita visualisasikan menggunakan bar chart sebagai berikut :

Berdasarkan visualisasi error diatas, dapat kita lihat bahwa model GradientBoost memiliki error yang peling kecil yaitu 12,906,691 (dengan menghiraukan desimal). Sehingga model terbaik untuk dataset ini yaitu Gradient Boosting. Sehingga dapat disimpulkan bahwa model dapat memprediksi harga dari asuransi dari data tes dengan baik. Sehingga kedepannya dapat membantu para masyarakat dalam menentukan harga asuransi yang diperlukan.

Referensi (APA7) :


  1. Hans, R. (2021, April 28). Kenali analisis regresi linear, Salah Satu Metode pengolahan data Yang sering Digunakan! https://www.dqlab.id/files/dqlab/cache/6b8c33bdec694a9af1b696bef97d2d25_x_118_X_30.png. Retrieved October 22, 2022, from https://www.dqlab.id/kenali-analisis-regresi-linear-metode-pengolahan-data-yang-sering-digunakan
  2. Zhang, Z. (2019, August 7). Boosting algorithms explained. Medium. Retrieved October 22, 2022, from https://towardsdatascience.com/boosting-algorithms-explained-d38f56ef3f30
  3. Sharma, G. (2022, July 21). Regression algorithms: 5 regression algorithms you should know. Analytics Vidhya. Retrieved October 22, 2022, from https://www.analyticsvidhya.com/blog/2021/05/5-regression-algorithms-you-should-know-introductory-guide/

About

The project aims to study the concept and development of health insurance as a financial system that provides social protection against health risks

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published