purwadhika-logopurwadhika-logo

Optimasi Model Regresi dengan Elastic Net: Dari Prediksi Awal hingga Tuning Hyperparameter

Kevin Tasyah Rahmatullah

27 August 2024

Elastic_Net_868f7ff969.jpg

Screen Shot 2024-08-16 at 10.06.09.png

Machine learning telah merevolusi berbagai industri dengan memungkinkan ekstraksi wawasan berharga dari kumpulan data yang kompleks. Seiring dengan bertambahnya ukuran dan dimensi data, penggunaan teknik canggih menjadi penting untuk memastikan model yang akurat dan kuat.

Regresi adalah teknik statistik yang sangat penting dalam dunia data science dan machine learning. Teknik ini memungkinkan kita untuk memodelkan hubungan antara satu variabel dependen (target) dengan satu atau lebih variabel independen (prediktor). Salah satu tantangan dalam regresi adalah ketika kita memiliki banyak prediktor dan beberapa di antaranya mungkin berkorelasi tinggi. Dalam situasi seperti ini, model regresi tradisional seperti regresi linear sederhana atau multiple linear regression mungkin mengalami masalah overfitting atau multikolinearitas. Untuk mengatasi masalah ini, telah dikembangkan berbagai teknik regularisasi.

Metode regularisasi, seperti Regresi Lasso dan Regresi Elastic Net, memainkan peran penting dalam meningkatkan performa model, pemilihan fitur, dan mengurangi overfitting.

Pada kesempatan kali ini saya akan membahas apa itu Elastic Net, mengapa Elastic Net itu penting, kelebihan dan kekurangan dari Elastic Net, dan step-by-step implementasinya di Python.

Regularization dalam Machine Learning

Sebelum kita masuk ke Elastic Net, kita harus mengetahui dulu apa itu Regularization. Regularization adalah teknik yang digunakan dalam machine learning untuk mencegah overfitting dan meningkatkan performa generalisasi model. Intinya, regularization menambahkan istilah penalti pada fungsi kerugian, sehingga membuat model enggan mempelajari pola yang terlalu rumit yang mungkin tidak dapat digeneralisasi dengan baik pada data yang tidak terlihat. Hal ini membantu menciptakan model yang lebih sederhana dan kuat.

Teknik regularization yang paling umum adalah L1 regularization (Lasso), yang menambahkan nilai absolut bobot model ke fungsi kerugian, L2 regularization (Ridge), yang menambahkan nilai kuadrat bobot, dan Elastic Net yang mengkombinasikan L1 dan L2 regularization. Dengan memasukkan persyaratan penalti ini, regularization mencapai keseimbangan antara menyesuaikan training data dan menjaga model tetap sederhana, yang pada akhirnya menghasilkan performa yang lebih baik pada data baru.

Elastic Net

Elastic Net Regression adalah algoritma machine learning yang menggabungkan fitur Lasso dan Ridge Regression. Ini adalah teknik regresi regularized yang mana digunakan untuk mengatasi masalah multikolinearitas dan juga overfitting, yang umum terjadi pada dataset berdimensi tinggi. Algoritma ini bekerja dengan menambahkan suku penalti ke fungsi tujuan kuadrat terkecil standar.

Elastic Net Regression diperkenalkan oleh Zou dan Hastie pada tahun 2005. Ini adalah algoritma regresi linear yang menambahkan dua suku penalti ke fungsi tujuan kuadrat terkecil standar. Kedua suku penalti ini merupakan norma L1 dan L2 dari vektor koefisien, yang dikalikan dengan dua hyperparameter, alpha (α) dan lambda (λ). Norma L1 digunakan untuk melakukan seleksi fitur, sedangkan norma L2 digunakan untuk melakukan penyusutan fitur.

Elastic Net juga digunakan untuk menyeimbangkan antara feature selection dan feature preservation, dan untuk menghadapi situasi di mana regresi Lasso dan Ridge mungkin gagal. Misalnya, jika terdapat lebih banyak fitur daripada hasil observasi, regresi Lasso hanya dapat memilih satu fitur dari sekelompok fitur yang berkorelasi, sedangkan regresi Ridge mempertahankan semuanya. Regresi Elastic Net dapat memilih subset fitur yang berkorelasi dan menghindari ketidakstabilan dari regresi Lasso.

Regresi Elastic Net selalu bertujuan meminimalkan fungsi kerugian berikut:

Screen Shot 2024-08-16 at 10.12.23.png

Elastic Net juga memungkinkan kita untuk menyesuaikan parameter alpha di mana alpha = 0 berhubungan dengan regresi Ridge dan alpha = 1 dengan regresi Lasso. Demikian pula, ketika alpha = 0, fungsi penalti dikurangi menjadi regularisasi L1 (Ridge), dan ketika alpha = 1, fungsi penalti dikurangi menjadi regularisasi L2 (Lasso). Oleh karena itu, kita dapat memilih nilai alpha antara 0 dan 1 untuk mengoptimalkan Elastic Net dan ini akan mengecilkan beberapa koefisien dan menetapkan beberapa menjadi 0 untuk pemilihan yang renggang. Dalam regresi Elastic Net, hyperparameter lambda sebagian besar dan sangat bergantung pada hyperparameter alpha.

Mengapa Elastic Net itu Penting

Elastic Net Regression dianggap sebagai algoritma yang penting dalam dunia ilmu data dan karena dua alasan utama:

  1. Elastic Net membantu untuk meregularisasikan dimensi yang tinggi dengan mengurangi pentingnya variabel independen yang tidak signifikan. Hal ini sangat berguna dalam bidang aplikasi seperti prognosis kanker, mesin vektor pendukung, optimalisasi portofolio, pembelajaran metrik, dll.

  2. Elastic Net Regression menggabungkan regresi Lasso dan Ridge, mengambil regularisasi L1 dari regresi Lasso dan regularisasi L2 dari regresi Ridge. Hal ini membuat Elastic Net Regression menjadi dua kali lebih kuat dibandingkan Lasso dan Ridge.

Kelebihan dari Algoritma Elastic Net

Ada beberapa kelebihan saat menggunakan algoritma Elastic Net:

  1. Feature Selection: Elastic Net Regression dapat melakukan pemilihan fitur dengan mengecilkan koefisien variabel yang tidak relevan menjadi nol. Hal ini menghasilkan model dengan variabel yang lebih sedikit, sehingga lebih mudah diinterpretasikan dan tidak terlalu rentan terhadap overfitting.

  2. Robustness: Elastic Net Regression lebih robust dibandingkan teknik regresi linear lainnya, seperti regresi Lasso dan Ridge, karena menggabungkan kekuatan kedua teknik tersebut. Ini dapat menangani variabel yang berkorelasi dan variabel dengan skala yang berbeda.

3._ Better Performance_: Elastic Net Regression telah terbukti memiliki kinerja lebih baik dibandingkan teknik regresi linear lainnya, terutama ketika dataset memiliki variabel dengan jumlah yang besar.

  1. Handling Multicollinearity: Elastic Net dapat menangani multikolinearitas antar variabel dengan mengelompokkannya, yang bisa sangat berguna pada dataset tertentu.

Kekurangan dari Elastic Net

Terlepas dari beberapa kelebihan tersebut, model Elastic Net juga mempunyai kekurangan yang harus kita tinjau. Berikut merupakan kekurangan dari Elastic Net:

  1. Computationally Intensive: Elastic Net memerlukan komputasi yang intensif pada dataset yang besar karena memerlukan penyetelan terhadap hyperparameter tuning di Elastic Net, yaitu parameter Alpha dan Lambda. Parameter ini memerlukan pengujian kombinasi nilai yang berbeda dan mengevaluasi hasilnya. Ini dikarenakan tidak adanya cara yang pasti untuk memilih (tuning) parameter ini.

  2. Not Suitable for Certain Data: Elastic Net tidak berfungsi dengan baik untuk beberapa jenis data. Misalnya, Elastic Net tidak cocok untuk data yang berdimensi tinggi, yang jumlah prediktornya jauh lebih besar daripada jumlah observasi. Dalam hal ini, Elastic Net tidak dapat memilih fitur yang relevan atau mengurangi dimensi secara efektif. Elastic Net juga tidak cocok untuk permasalahan non-linear, yang mana hubungan antara prediktor dan hasilnya tidak linear. Dalam kasus ini, Elastic Net mungkin tidak mampu menangkap kompleksitas atau interaksi data.

  3. May be not Interpretable or Explainable: Lasso dan Ridge relatif sederhana dan intuitif, karena memiliki hubungan yang jelas antara koefisien dan prediktor. Sedangkan Elastic Net lebih kompleks dan ambigu, karena melibatkan kombinasi dua penalti dan dua hyperparameter. Elastic Net mungkin tidak memberikan penjelasan yang jelas mengenai model atau hasil dari model tersebut.

Implementasi Elastic Net di Python

Sekarang kita akan mengimplementasikan model Elastic Net ke dalam Python, dan kita akan mencari nilai MSE (Mean Squared Error).

Pertama-tama, kita import libraries yang diperlukan untuk model. Screen Shot 2024-08-16 at 13.42.16.png

Lalu, kita lakukan data understanding, preprocessing, dan cleaning.

Screen Shot 2024-08-16 at 13.42.57.png

Terlihat bahwa ada 20640 data yang ada di dalam dataset tersebut. Sekarang kita akan melakukan data cleaning, seperti menghapus missing values, outliers, duplicate data, dan minority data.

Screen Shot 2024-08-16 at 13.44.05.png

Terlihat bahwa tidak ada missing values. Maka dari itu, tidak perlu kita lakukan treatment missing values. Selanjutnya kita akan melihat outliers (gambar boxplot ada di halaman selanjutnya).

Screen Shot 2024-08-16 at 13.46.00.png

Terlihat bahwa ada outliers di semua kolom, kecuali kolom “HouseAge”. Maka dari itu, anggap saja kita hapus semua outliers-nya (Gambar boxplot ada di halaman selanjutnya).

Screen Shot 2024-08-16 at 13.47.21.png

Selanjutnya kita melihat data duplikasi.

Screen Shot 2024-08-16 at 13.48.10.png

Terlihat bahwa tidak ada data yang terindikasi duplikat. Maka dari itu, kita masuk ke tahap selanjutnya yaitu modelling dengan model yang kita gunakan adalah Elastic Net.

Screen Shot 2024-08-16 at 13.49.07.png

Setelah kita scaling dan data splitting, kita akan memprediksikan MEDV sebelum dituning.

Screen Shot 2024-08-16 at 13.49.54.png

Hasil dari MSE yang didapatkan dari predict sebesar 1.12 dan R-squared nya sebesar 0.14, yang bisa kita anggap bahwa fitur fitur tersebut hanya mewakili 14% dari target tersebut. Hasil tersebut sangatlah kecil. Maka dari itu, selanjutnya kita akan melakukan hyperparameter tuning.

Screen Shot 2024-08-16 at 13.50.52.png

Ternyata, hasil tuning meningkatkan performa model Elastic Net, dari yang MSE sebesar 1.12 turun menjadi 0.65. Begitu pula dengan hasil R-Squared dari yang sebesar 0.14 meningkat menjadi 0.51. Artinya, fitur fitur tersebut sekarang mewakili 51% dari hasil prediksi target model tersebut.

Selanjutnya kita akan melihat fitur mana saja yang paling berpengaruh terhadap prediksi target.

Screen Shot 2024-08-16 at 13.51.41.png

Terlihat bahwa “MedInc” yang paling berpengaruh terhadap prediksi MEDV. Sekarang kita akan lihat berdasarkan dari barplot.

Screen Shot 2024-08-16 at 13.52.10.png

Kalau dilihat dari barplot, ternyata fitur “Population” dan “AveOccup” bisa dibilang tidak mempengaruhi terhadap prediksi MEDV karena nilai koefisiennya sangat mendekati nol. Sedangkan “Latitude” mempengaruhi MEDV dengan nilai koefisien negatif.

Elastic Net merupakan teknik regularisasi serbaguna yang efektif dalam mengatasi multikolinearitas dan pemilihan fitur dalam model regresi. Dengan menggabungkan kekuatan regresi Lasso dan Ridge, metode ini menawarkan pendekatan yang fleksibel dan kuat.

Meskipun Elastic Net adalah alat yang ampuh, perlu pertimbangan cermat terhadap hyperparameter tuning, feature engineering, dan karakteristik spesifik dataset Anda. Eksperimen dan evaluasi sangat penting untuk mengoptimalkan kinerja model untuk masalah tertentu.

Dengan memahami prinsip-prinsip dasarnya dan menerapkan Elastic Net secara bijaksana, Anda dapat meningkatkan kemampuan prediksi model dan memperoleh wawasan berharga dari data Anda.

Demikian penjelasan dari Elastic Net, kelebihan dan kekurangan Elastic Net, serta implementasinya di dalam Python. Semoga dengan artikel ini kita semua bisa jadi lebih mengerti tentang model regresi yang satu ini.

Untuk Hands On bisa klik di link ini: Elastic Net Hands On.ipynb


bagikan