Blog

Blog: Machine Learning[2]: Logistic Regression


Sabtu, 4 Mei 2019 saya dan kelompok mendapat tugas mempresentasikan klasifikasi dengan menggunakan Logistic Regression di kelas Pembelajaran Mesin. Berikut adalah materi tentang Logistic Regression yang kami presentasikan . Terdapat 3 poin penting yang dibahas pada story kali ini, yaitu:

  1. penentuan koefisien dengan Maximum Likelihood+R-squared (R²),
  2. penentuan koefisien dengan Stochastic Gradient Descent
  3. Data Preparation pada Logistic Regression.

Masalah Pada Linear Regression

Sebelum kita mempelajari Logistic Regression, alangkah baiknya kita mengetahui Linear Regression terlebih dahulu.

Apasih Linear Regression itu? Linear Regression adalah suatu cara permodelan masalah keterhubungan antara suatu variabel independen terhadap variabel dependen. Contohnya adalah menentukan apakah suatu nilai ukuran tumor tertentu termasuk kedalam tumor ganas atau tidak.

Contoh klasifikasi dengan Linear Regression

Dari grafik diatas, terlihat bahwa garis yang dibentuk dari Linear Regression mampu mengklasifikasi masalah tumor dengan baik. Namun, ada masalah yang muncul ketika kita memiliki Outlier Data. Perhatikan gambar berikut!

Terlihat bahwa adanya Outlier Data membuat garis Linear Regression tidak lagi mengklasifikasi data dengan baik. 2 Data yang sebelumnya terklasifikasi sebagai Tumor ganas berpindah menjadi Tumor tidak ganas hanya karena 1 data baru.

Lalu bagaimana kita dapat membentuk suatu garis yang dapat membagi data kedalam 2 kelas secara baik?


Solusi: Logistic Regression

Pada kasus klasifikasi Tumor Ganas, terlihat bahwa tidak terjadi kegagalan klasifikasi terhadap 2 data kelas positif seperti yang terjadi pada model Linear Regression, sehingga dapat disimpulkan untuk kasus klasifikasi ini penggunaan Logistic Regression adalah lebih baik jika dibandingkan dengan Linear Regression, karena mampu menangani Outlier Data.

Apa itu Logistic Regression?

Logistic Regression adalah sebuah algoritma klasifikasi untuk mencari hubungan antara fitur (input) diskrit/kontinu dengan probabilitas hasil output diskrit tertentu.

Tipe-tipe Logistic Regression

  1. Binary Logistic Regression : Adalah Logistic Regression yang hanya memiliki 2 output saja (mengklasifikasi kedalam 2 kelas berbeda). Contoh: Positif-Negatif, Obesitas-Tidak Obesitas.
  2. Multinomial Logistic Regression : Adalah Logistic Regression yang memiliki 2 output atau lebih (mengklasifikasi kedalam 2 kelas berbeda). Contohnya kelas Sentiment Analysis kalimat positif, negatif, dan netral.
  3. Ordinal Logistic Regression : Adalah Logistic Regression yang memiliki 2 output atau lebih dengan memperhatikan urutan. (mengklasifikasi kedalam 2 kelas berbeda dengan memperhatikan urutan). Contohnya adalah membagi kelas mahasiswa dalam range Index Prestasi Kumulatif 1.xx, 2.xx, 3.xx, dan 4.00.

Pada story ini kita akan fokus membahas Logistic Regression tipe 1: Binary Logistic Regression


Logistic Function

Logistic Function adalah suatu fungsi yang dibentuk dengan menyamakan nilai Y pada Linear Function dengan nilai Y pada Sigmoid Function. Tujuan dari Logistic Function adalah merepresentasikan data-data yang kita miliki kedalam bentuk fungsi Sigmoid.

Kita dapat membentuk Logistic Function dengan melakukan langkah-langkah berikut:

  1. Melakukan opersai Invers pada Sigmoid Function, sehingga fungsi sigmoid berubah bentuk menjadi Y = ln(p/(1-p).
  2. Setarakan dengan fungsi Linear Y = b0+b1*X sehingga kita dapatkan persamaan ln(p/(1-p) = b0+b1*X.
  3. Ubah persamaan ln(p/(1-p) = b0+b1*X kedalam bentuk logaritmik sehingga didapatkan persamaan P = 1/(1+e^-(b0+b1*X))

Cara Pertama Penentuan Koefisien Logistic Function : Maximum Likelihood + R-Squared (R²)

Maximum Likelihood

Maximum Likelihood adalah cara untuk menentukan posisi Sigmoid yang menjadi model terbaik yang dapat dibentuk dari data-data yang tersedia. Bagaimana caranya? perhatikan persamaan fungsi Logistik berikut:

dari fungsi diatas kita ketahui bahwa yang mempengaruhi posisi fungsi Sigmoid adalah persamaan b0+b1*X, artinya perubahan garis (merubah nilai koefisien b0 dan b1)akan mempengaruhi posisi dan nilai Likelihood dari Logistic Function.

Langkah sederhananya adalah sebagai berikut:

  1. Tentukan suatu persamaan garis sembarang, ubah kedalam bentuk Sigmoid, dan hitung nilai Likelihood-nya
  2. Lakukan Rotasi (bisa disertai translasi juga) pada persamaan garis sebelumnya, kemudian ubah kembali kedalam bentuk Sigmoid, dan hitung nilai Likelihood garis baru.
  3. Ulangi terus langkah kedua hingga mendapatkan nilai Likelihood tertinggi. Garis dengan Likelihood tertinggi berarti mengisyaratkan bahwa garis yang digunakan menentukan posisi Sigmoid yang merepresentasikan klasifikasi data dengan baik.

Nilai Likelihood dari setiap garis dapat dicari dengan formula berikut:

Catatan penting! pada formula diatas terdapat “1-P(datanegatif)” karena likelihood menghitung kemiripan peluang terhadap kelas positif (dalam konteks ini kelas 1 positif dan kelas 0 negatif), sehingga representasi positif dari “P(datanegatif)” adalah “1-P(datanegatif)”.

Untuk lebih jelas tentang Maximum Likelihood, kunjungi link Github yang tersedia di akhir story dan membuka PDF slide presentasi yang tersedia disana.

R-Squared (R²)

R-Squared adalah cara yang digunakan untuk mengetahui apakah Logistic Function dengan nilai Maximum Likelihood dapat merepresentasikan data dengan baik (baik jika R-squared = 1, Buruk jika R-squared = 0).

Terdapat 2 parameter penting yang dibutuhkan dalam mencari nilai R-Squared, yaitu Maximum Likelihood dan Badfit Likelihood.

Untuk parameter Badfit Likelihood, garis lurus didapat dengan persamaan:

Y = banyak data kelas 1 / banyak data keseluruhan

sehingga kita dapat mencari nilai Badfit Likelihood dengan cara:

Badfit Likelihood = Log(Y) + Log(Y) + …. + Log(1-Y) + Log(1-Y)

Dari Maximum Likelihood dan Badfit Likelihood dapat dibentuk formula R-Squared (R²) sebagai berikut:


Cara Kedua Penentuan Koefisien Logistic Function : Stochastic Gradient Descent

Stochastic Gradient Descent merupakan pendekatan yang mudah dan cukup baik jika dibandingkan dengan cara Maximum Likelihood + R-Squared. Kita hanya bergantung pada nilai Error prediksi untuk mencari nilai koefisien Logistic Function yang paling baik (menggunakan turunan parsial dError/dx).

Update nilai b dengan Stochastic Gradient Descent

Bagian turunan parsial persamaan diatas telah dibahas pada story Machine Learning [1]: Single Layer Perceptron, silahkan dikunjungi untuk memahami darimana bagian (P target -P prediksi blablabla….) muncul :D

Langkah-langkah yang harus dilakukan ketika menggunakan Stochastic Gradient Descent sebagai berikut:

  1. Hitung Prediksi dengan nilai koefisien sementara (nilai random pada iterasi pertama)
  2. Hitung koefisien baru berdasarkan nilai error koefisien sebelumnya
  3. Ulangi sampai mendapatkan nilai Error / batasan iterasi / batasan waktu tertentu.

Mari kita coba mengolah suatu Training Data dengan Stochastic Gradient Descent.

x1 = 2.7810836

x2 = 2.550537003

P(target) = 0

Learning Rate (α) = 0.02

Misalkan kita memiliki Logistic Function sebagai berikut dengan b0, b1, dan b2 adalah koefisien yang akan dicari, x1 dan x2 adalah fitur input:

Kita inisialisasikan nilai b0, b1, dan b2 awal dengan suatu nilai random:

Lanjut, kita substitusi nilai x1 dan x2 ke dalam Logistic Function:

Nilai Error yang didapat dengan Error = 1/2 ( P target -P prediksi )² adalah 0.125. Selanjutnya kita update nilai b0, b1, dan b2 untuk mendapatkan nilai Error yang lebih kecil.

Dari koefisien b0, b1, dan b2 baru diatas, didapatkan nilai P(data) = 0.51904, dan nilai Error turun menjadi Error = 0.1156. Ulangi langkah-langkah sebelumnya hingga mendapatkan nilai Error / batasan iterasi / batasan waktu tertentu.


Data Preparation di Logistic Regression

Proses pengolahan data awal sangat mempengaruhi tingkat kebaikan model yang akan dihasilkan. Menurut website machinelearningmastery.com (rekomen untuk dibaca :D), ada beberapa hal yang perlu kita perhatikan agar mendapat model Logistic Regression yang baik. Hal-hal tersebut sebagai berikut:

1. Binary Output Variable

Logistic Regression ditujukan untuk mengklasifikasi data kedalam 2 kelas (direpresentasikan dengan 0 dan 1)

2. Remove Noise

Pertimbangkan menghapus Outlier data dan atau data yang terindikasi memiliki klasifikasi yang salah dari Training Data

3. Gaussian Distribution

Seperti yang kita lihat pada bagian Maximum Likelihood, fungsi linear dari input mempengaruhi hasil model Logistic Function. Oleh karena itu melakukan Transformasi dan Normalisasi pada Training Data yang kita miliki dapat membuat hubungan Linear antara input dan output menjadi lebih baik

4. Remove Correlated Input

Memiliki input-input yang saling berkorelasi erat dapat membuat model yang dihasilkan mengalami Overfitting. Oleh karena itu disarankan untuk memilih dan menyeleksi input-input yang akan digunakan.

5. Fail to Converge

Ada kemungkikan dimana model Maximum Likelihood tidak dapat menghasilkan model yang konvergen dengan Training Data. Masalah ini mungkin terjadi karena terlalu banyak input yang saling berkorelasi ataupun ketika jumlah data kelas yang kita miliki tidak berimbang (misal: terlalu banyak data dengan label kelas 1 pada Training Data)


Penutup

Demikian story tentang Logistic Regression, semoga story kali ini cukup membantu mengerti proses-proses dan ilmu yang berkaitan dengan Logistic Regression. Terima kasih telah meluangkan waktu untuk membaca :D

(Jangan lupa kunjungi Github Logistic Regression dengan menklik link dibawah ini. Repository berisi PDF slide presentasi tentang Logistic Regression dan Python Notebooks menyelesaikan masalah klasifikasi dengan Logistic Regression library SciKit-Learn)

Source: Artificial Intelligence on Medium

Leave a Reply

Your email address will not be published. Required fields are marked *

Back To Top
a

Display your work in a bold & confident manner. Sometimes it’s easy for your creativity to stand out from the crowd.

Social