Catatan penting : Jika Anda benar-benar awam tentang apa itu Python, silakan klik artikel saya ini. Jika Anda awam tentang R, silakan klik artikel ini.
Kali ini kita akan bahas tentang salah satu teknik classification (klasifikasi) yang sangat mudah, yaitu logistic regression (regresi logistik). Jika pembaca tidak tahu apa itu regresi, ada baiknya klik link ini.
Berbeda dengan regresi pada umumnya, regresi logistik merupakan teknik regresi yang fungsinya untuk memisahkan dataset menjadi dua bagian (kelompok).
Jika pembaca mahir di bidang statistik, maka pembaca pasti mengetahui tentang distribusi binomial. Seperti kasus koin yang dilempar, hasilnya hanya ada dua yaitu depan atau belakang. Begitu pula dengan regresi logistik, maka hasilnya hanyalah ada dua, yaitu YES atau No, atau bisa juga 1 atau 0.
Pertanyaan utamanya, “Kapan kita menggunakan regresi logistik? dan kapan menggunakan regresi biasa yang umum?” Jawabannya adalah tergantung dari data yang dimiliki. Selain itu, apakah data itu bisa menjawab pertanyaan besarnya (pertanyaan yang dimaksud adalah permasalahan klien) atau tidak.
Misal kita memiliki data sebagai berikut:
Jika kita mendapatkan dataset seperti di atas, kita bisa menduga bahwa ada hubungan linear antara gaji dan pengalaman, di mana semakin lama pengalaman, maka ada kecenderungan gajinya juga semakin besar. Permasalahan ini cukup diselesaikan dengan teknik regresi yang umum.
Namun, jika permasalahannya sebagai berikut:
Maka permasalahannya menjadi berbeda jika dibandingkan dengan grafik sebelumnya. Kali ini, kita memiliki data keputusan pembelian antara beli (1) atau tidak (0) di sumbu y-nya, dan di sumbu x kita memiliki data usia. Jelas, kita tidak mungkin bisa menggunakan regresi linear sederhana. Seandainya kita paksakan menggunakan regresi linear, maka hasilnya tampak seperti ini:
Jika kita paksakan, maka akan muncul garis regresi berwarna merah diagonal dari kiri bawah ke kanan atas. Namun hasil regresi linear ini tidak banyak memberikan jawaban, karena titik-titik sumbu y yang bisa diinterpretasikan hanyalah nilai 0 (tidak beli) dan 1 (beli) saja. Sehingga titik antara 0 dan 1 (misal 0,47) menjadi tidak bermakna, karena tidak ada keputusan 0.47 beli bukan? Keputusan hanya 2 antara ya/tidak, yes/no, beli/tidak.
Selain itu, hal lain yang tidak masuk akal adalah bagaimana kita bisa meginterpretasikan titik-titik yang dilalui garis regresi di bawah sumbu x (nilai y<0), dan titik-titik yang dilalui garis regresi di atas nilai y=1 ? Adalah hal yang mustahil, karena data poin di sumbu y hanya ada 2, yaitu 0 dan 1.
Oleh karena itu, jika kita menghadapi permasalahan seperti ini (hanya memiliki pembagian ke dalam 2 kelompok), maka salah satu solusinya adalah dengan teknik klasifikasi, dan dalam pembahasan kali ini merupakan teknik regresi logistik.
Kemudian, bagaimana regresi logistik bisa memodelkan permasalahan seperti di gambar B?
Sebelum menjawabnya, kita harus memahami dulu bagaimana konsep dasar dari regresi logistik. Pada dasarnya, regresi logistik juga menggunakan formula regresi sederhana. Kemudian, dari formula ini, digunakanlah fungsi sigmoid, untuk menghitung probabilitasnya, sehingga didapatkan fungsi regresi logistik. Lebih mudahnya, lihatlah diagram berikut:
Pada tahap 1, kita memasangkan fungsi sigmoid terhadap fungsi regresi (tentunya kita tidak membahas penurunan model matematikanya di sini). Di mana, variabel dependen yang sebelumnya adalah y, menjadi fungsi ln.
Untuk mempermudah, kita tidak bahas matematiknya, tapi kita fokus tentang bagaimana menginterpretasikan grafik pada bagian kanan fungsi regresi logistik. Tampak bahwa kurvanya sudah bukanlah garis lurus, melainkan garis yang mirip seperti huruf S. Perlu diperhatikan juga, bahwa sumbu y pada kurva ini bukanlah tindakan beli/tidak, melainkan p, yang merupakan probabilitas (peluang) untuk melakukan tindakan beli/tidak.
Mari kita lihat sebuah kasus sederhana. Misal saya memiliki data 6 orang yang berusia berbeda-beda. Kemudian asumsikan saja, dari data sebelumnya (ratusan data), kita berhasil membuat model regresi logistiknya yang tampak dari grafik di bawah ini. Lalu kita ingin menggolongkan dari 6 orang yang baru ini (test set), kita memprediksi apakah mereka masuk ke golongan yang akan memutuskan untuk membeli barang atau tidak.
Dari 6 data poin ini (lingkaran berwarna biru di sumbu x), kita proyeksikan ke model regresi logistiknya (kotak berwarna hijau). Kemudian, kita proyeksikan lagi ke sumbu y-nya, maka didapatlah probabilitasnya (seberapa besar peluang mereka beli atau tidak).
Pertanyaannya, jika probabilitasnya 0.35 apa artinya? Dan jika probabilitasnya 0.71 apa artinya?
Untuk menjawab dua pertanyaan ini, kita buat garis batasnya di sumbu y. Garis batas ini umumnya 0.5 tepat di tengah sumbu y, namun bisa juga berubah, sesuai keinginan. Tentunya untuk merubahnya, pembaca harus paham betul tujuan dari datanya. Setelah kita buat garis batas, maka cukup memutuskan, bahwa semua probabilitas di atas 0.5 akan menjadi 1, dan semua probabilitas di bawah 0.5 akan menjadi 0. Tampilannya akan menjadi sebagai berikut:
Dengan menggunakan garis batas 0,5 maka didapatkan bahwa usia 18. 24, dan 28 diprediksi tidak akan membeli barang, sedangkan usia 35, 41, dan 50 diprediksi akan membeli barang.
Cukup mudah bukan, memahami regresi logistik ini. Tentunya, gambaran di atas adalah untuk permasalahan yang sangatlah sederhana. Sekarang saatnya kita membuat modelnya dengan Python dan R melalui sebuah kasus nyata yang cukup rumit dengan data yang banyak.
Untuk melanjutkan membaca silakan klik halaman berikutnya di bawah ini.
Assalamu’alaikum pak,
Saya coba dengan dataset yang sama di google colab hasil confusion matric nya tidak sama pak. Mohon pencerahannya.
ini link google colabnya : https://colab.research.google.com/drive/1ww_sdcn1svFPzB8w6a8u76iYc4zvfwOq
maaf pak, sudah saya perbaiki. sudah benar. salah memasukan x_test ke model, bukan x_test_scaler
Halo pak.
Saya mau bertanya, jika feature scaling dilakukan sebelum spliting data apakah akan beda hasilnya jika spliting data dulu baru feature scaling? Terimakasih.