Logistic Regression
Dalam statistik, kita sering menggunakan model regresi untuk memprediksi variabel dependen (target) berdasarkan satu atau lebih variabel independen (fitur). Model regresi logistik digunakan ketika variabel dependen bersifat kategorik, khususnya untuk klasifikasi biner.
logit(p)
adalah fungsi log-odds yang menghubungkan probabilitas kejadian suatu peristiwa dengan model regresi linear. Fungsi ini digunakan untuk memodelkan hubungan antara variabel dependen dan independen dalam regresi logistik.
Interpretasi koefisien regresi logistik dapat dilakukan dengan menggunakan odds ratio (OR). OR adalah rasio peluang kejadian suatu peristiwa dibandingkan dengan peluang tidak terjadinya peristiwa tersebut. Dalam konteks regresi logistik, OR dapat dihitung sebagai eksponensial dari koefisien regresi.
\[ OR = \exp(\beta_j) \]
Model regresi logistik tidak lagi menggunakan OLS (Ordinary Least Squares) untuk estimasi parameter, tetapi menggunakan Maximum Likelihood Estimation (MLE). MLE adalah metode statistik yang digunakan untuk memperkirakan parameter model dengan memaksimalkan fungsi likelihood.
\[ \ell(\boldsymbol\beta) = \sum_{i=1}^{N} \left[\, y_i \log \hat{p}_i + (1 - y_i)\log (1 - \hat{p}_i) \right] \]
Koefisien \(\boldsymbol\beta\) diestimasi dengan memaksimalkan log-likelihood menggunakan metode numerik seperti Newton-Raphson atau iterasi Fisher scoring.
Dalam environmen ML, kita sering menggunakan fungsi aktivasi untuk mengubah output dari model menjadi probabilitas. Interpretabikitas model kadang tidak terlalu penting, karena fokus pada kinerja akurasi model.
Dalam package scikit-learn, fungsi yang digunakan untuk klasifikasi adalah LogisticRegression yang menggunakan fungsi sigmoid. Fungsi sigmoid adalah fungsi aktivasi yang mengubah output model menjadi probabilitas antara 0 dan 1.
\[ \sigma(z) = \frac{1}{1 + e^{-z}} \]
Di mana \(z\) adalah kombinasi linear dari variabel independen:
\[ z = \beta_0 + \beta_1x_1 + \dots + \beta_p x_p \]
Prediksi probabilitas kejadian dalam diturunkan dari fungsi sigmoid:
\[ \hat{p}_i = \sigma\!\bigl(\mathbf{x}_i^\top \boldsymbol\beta\bigr) \]
Keputusan biner:
\(j_i = 1\) bila \(\hat{p}_i \ge \tau\) (default \(\tau = 0.5\)).
Dalam scikit-learn
, kita dapat menggunakan parameter C
untuk mengatur kekuatan regulasi. Semakin kecil nilai C
, semakin kuat regulasi yang diterapkan pada model. Terdapat dua jenis regulasi yang umum digunakan dalam regresi logistik:
L2 (Ridge):
\[ \ell_{\text{reg}} = \ell - \lambda \lVert \boldsymbol\beta \rVert_2^2 \]
L1 (Lasso):
\[ \ell_{\text{reg}} = \ell - \lambda \lVert \boldsymbol\beta \rVert_1 \]
Di Scikit‑Learn, parameter regulasi dinyatakan dengan C = 1/\(\lambda\)
Untuk \(K\) kategori, misalnya \(K = 3\), kita dapat menggunakan softmax regression untuk memodelkan probabilitas kelas. Fungsi softmax mengubah output model menjadi probabilitas yang dijumlahkan menjadi 1. Kasus multiclass misalnya adalah klasifikasi tingkat kepuasan pelanggan: sangat tidak puas, tidak puas, netral, puas, sangat puas.
\[ P(y = c \mid \mathbf x) = \frac{\exp\bigl(\boldsymbol\beta_c^\top \mathbf x\bigr)} {\displaystyle\sum_{k=1}^{K} \exp\bigl(\boldsymbol\beta_k^\top \mathbf x\bigr)} \]
Fungsi log-likelihood: multiclass cross‑entropy:
\[ \ell = \sum_{i=1}^{N} \sum_{k=1}^{K} y_{ik} \log P(y = k \mid \mathbf x_i) \]
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
X, y = load_breast_cancer(return_X_y=True)
log_reg = LogisticRegression(
penalty='l2', # 'l1', 'elasticnet', None
solver='lbfgs', # 'liblinear', 'saga', ...
max_iter=1000,
C=1.0, # 1/λ
random_state=42
)
print(cross_val_score(log_reg, X, y, cv=10).mean())
Solver adalah algoritme optimasi yang digunakan untuk memperbarui koefisien model selama pelatihan.
Penjelasan masing-masing solver:
liblinear
: Algoritme optimasi berbasis koordinat yang efisien untuk dataset kecil hingga menengah. Cocok untuk regulasi L1 dan L2.lbfgs
: Algoritme optimasi berbasis kuasi-Newton yang efisien untuk dataset besar. Cocok untuk regulasi L2. Untuk lebih jelas dapat dilihat pada scikit-learn documentation.Parameter | Fungsi | Efek |
---|---|---|
penalty |
Jenis regulasi ('l2','l1',… ) |
Kendali overfitting |
C |
\(1/\lambda\) (≥ 0) | Bias–variance trade‑off |
solver |
Algoritme optimasi | Dukungan regulasi bervariasi |
max_iter |
Iterasi maksimum | Konvergensi |
class_weight |
Bobot kelas | Penanganan data imbalanced |