Optimisasi Statistika - Quadratic Programming
Video Pembelajaran - P9
Video Pembelajaran dapat diakses melalui link berikut : https://ipb.link/materiopstat
Quadratic Programming (QP)
Definisi: Quadratic Programming (QP) adalah salah satu metode optimasi matematis yang digunakan untuk meminimalkan atau memaksimalkan fungsi objektif kuadratik dengan kendala linear. Bentuk umum dari QP adalah:
\[ \text{Minimalkan } f(b) = -d^T b + \frac{1}{2} b^T D b \]
dengan:
- \(b\): Vektor keputusan (\(b \in \mathbb{R}^n\))
- \(D\): Matriks simetris positif-semi
definit (\(D \in \mathbb{R}^{n \times
n}\)), yang menentukan bentuk kuadratik fungsi
- \(d\): Vektor koefisien linier (\(d \in \mathbb{R}^n\))
- \(\frac{1}{2} b^T D b\): Komponen
kuadratik
- \(-d^T b\): Komponen linier
Fungsi ini sering disertai dengan kendala linear yang
berbentuk:
\[
A^T b \geq b_0
\] dimana:
- \(A\): Matriks kendala (\(A \in \mathbb{R}^{n \times m}\))
- \(b_0\): Vektor batas kendala (\(b_0 \in \mathbb{R}^m\))
Langkah-Langkah Solusi QP
1. Formulasi Masalah
Langkah pertama adalah menuliskan fungsi kuadratik dalam bentuk matriks \(D\) dan \(d\), serta menyusun kendala \(A^T b \geq b_0\) jika ada.
2. Menyusun Matriks
- Matriks \(D\): Diperoleh dari
koefisien kuadrat dalam fungsi objektif. Harus berbentuk simetris
positif-semi definit.
- Vektor \(d\): Koefisien linier
dalam fungsi objektif.
- Matriks \(A\): Merepresentasikan
kendala. Setiap baris menyatakan satu kendala.
- Vektor \(b_0\): Batas bawah dari kendala.
3. Menyelesaikan dengan Fungsi solve.QP
(R)
Fungsi solve.QP dari library quadprog
digunakan untuk menyelesaikan masalah QP.
Kasus Tanpa Kendala
Misalkan fungsi objektif:
\[
f(x_1, x_2) = -8x_1 - 16x_2 + x_1^2 + 4x_2^2
\]
Langkah-Langkah:
Identifikasi komponen kuadrat (\(D\)) dan linier (\(d\)):
\[ D = \begin{bmatrix} 2 & 0 \\ 0 & 8 \end{bmatrix}, \quad d = \begin{bmatrix} 8 \\ 16 \end{bmatrix} \]Tidak ada kendala, sehingga:
\[ A = \begin{bmatrix} 0 & 0 \\ 0 & 0 \end{bmatrix}, \quad b_0 = \begin{bmatrix} 0 \\ 0 \end{bmatrix} \]Gunakan
solve.QP:
library(quadprog)
D <- matrix(c(2, 0, 0, 8), 2, 2, byrow = TRUE)
d <- c(8, 16)
A <- matrix(0, 2, 2)
b0 <- c(0, 0)
solve.QP(D, d, A, b0)## $solution
## [1] 4 2
##
## $value
## [1] -32
##
## $unconstrained.solution
## [1] 4 2
##
## $iterations
## [1] 1 0
##
## $Lagrangian
## [1] 0 0
##
## $iact
## [1] 0
Hasil:
- Solusi: \(b = \begin{bmatrix} 4 \\ 2
\end{bmatrix}\)
- Nilai fungsi minimum: \(f(b) = -32\)
Interpretasi:
Nilai \(b = [4, 2]\) adalah solusi
optimal tanpa kendala, yaitu titik dimana fungsi objektif mencapai nilai
minimum.
Kasus Dengan Kendala (\(\geq\))
Fungsi objektif tetap sama, tetapi sekarang dengan kendala:
\[
x_1 + x_2 \geq 5, \quad x_1 \geq 4.5
\]
Langkah-Langkah:
Formulasi kendala:
- Kendala pertama (\(x_1 + x_2 \geq
5\)): \(A_1 = [1, 1], \, b_0 =
5\)
- Kendala kedua (\(x_1 \geq 4.5\)): \(A_2 = [1, 0], \, b_0 = 4.5\)
- Kendala pertama (\(x_1 + x_2 \geq
5\)): \(A_1 = [1, 1], \, b_0 =
5\)
Matriks kendala:
\[ A = \begin{bmatrix} 1 & 1 \\ 1 & 0 \end{bmatrix}, \quad b_0 = \begin{bmatrix} 5 \\ 4.5 \end{bmatrix} \]Gunakan
solve.QP:
## $solution
## [1] 4.5 2.0
##
## $value
## [1] -31.75
##
## $unconstrained.solution
## [1] 4 2
##
## $iterations
## [1] 2 0
##
## $Lagrangian
## [1] 0 1
##
## $iact
## [1] 2
Hasil:
- Solusi: \(b = \begin{bmatrix} 4.5 \\ 2
\end{bmatrix}\)
- Nilai fungsi: \(f(b) = -31.75\)
Interpretasi:
Solusi optimal tetap memenuhi kendala \(x_1 +
x_2 \geq 5\) dan \(x_1 \geq
4.5\), sambil meminimalkan fungsi objektif.
Kasus Dengan Kendala (\(\leq\))
Fungsi objektif dengan kendala:
\[
x_1 + x_2 \leq 5, \quad x_1 \leq 3
\]
Langkah-Langkah:
Ubah kendala menjadi bentuk \(-A \geq -b_0\):
\[ -x_1 - x_2 \geq -5, \quad -x_1 \geq -3 \]Matriks kendala:
\[ A = \begin{bmatrix} -1 & -1 \\ -1 & 0 \end{bmatrix}, \quad b_0 = \begin{bmatrix} -5 \\ -3 \end{bmatrix} \]Gunakan
solve.QP:
## $solution
## [1] 3 2
##
## $value
## [1] -31
##
## $unconstrained.solution
## [1] 4 2
##
## $iterations
## [1] 2 0
##
## $Lagrangian
## [1] 0 2
##
## $iact
## [1] 2
Hasil:
- Solusi: \(b = \begin{bmatrix} 3 \\ 2
\end{bmatrix}\)
- Nilai fungsi: \(f(b) = -31\)
Interpretasi:
Solusi optimal berada di dalam batas kendala yang diberikan, yaitu \(x_1 + x_2 \leq 5\) dan \(x_1 \leq 3\).
OLS (Ordinary Least Squares)
Fungsi Objektif:
Tujuan OLS adalah meminimalkan Residual Sum of Squares (RSS):
\[
\text{RSS} = \epsilon^T \epsilon = (y - X\beta)^T(y - X\beta)
\]
Dapat dituliskan dalam bentuk QP:
\[
f(\beta) = -2y^T X\beta + \beta^T X^T X\beta
\]
Maka:
\[
D = 2(X^T X), \quad d = 2X^T y
\]
Kode R:
y <- as.matrix(mtcars$mpg)
X <- as.matrix(cbind(1, mtcars[, 2:7]))
D <- 2 * t(X) %*% X
d <- 2 * t(y) %*% X
solve.QP(D, d, A = diag(0, ncol(X)), b = rep(0, ncol(X)))## $solution
## [1] 26.30735899 -0.81856023 0.01320490 -0.01792993 1.32040573 -4.19083238
## [7] 0.40146117
##
## $value
## [1] -13878.83
##
## $unconstrained.solution
## [1] 26.30735899 -0.81856023 0.01320490 -0.01792993 1.32040573 -4.19083238
## [7] 0.40146117
##
## $iterations
## [1] 1 0
##
## $Lagrangian
## [1] 0 0 0 0 0 0 0
##
## $iact
## [1] 0
Hasil: Sama seperti menggunakan
lm().
LASSO (Least Absolute Shrinkage and Selection Operator)
Definisi:
LASSO adalah teknik regresi yang memperkenalkan regularisasi \(L_1\) untuk menyusutkan beberapa koefisien
regresi ke nol. Hal ini sangat berguna untuk seleksi variabel (feature
selection) dalam model dengan banyak variabel prediktor.
Fungsi optimasi LASSO adalah:
\[
\text{Minimalkan } \text{RSS} + \lambda \sum_{j=1}^p |\beta_j|
\] dengan:
- \(\text{RSS} = \sum_{i=1}^n (y_i -
\hat{y}_i)^2\): Residual Sum of Squares.
- \(\lambda\): Parameter regularisasi
yang mengontrol tingkat penyusutan.
- \(\sum_{j=1}^p |\beta_j|\): Penalti
\(L_1\).
Parameter \(\lambda\) menentukan
keseimbangan antara akurasi model (fit) dan
sederhana model (sparsity).
- Jika \(\lambda = 0\): Model sama
dengan OLS (tidak ada penalti).
- Jika \(\lambda\) besar: Banyak
koefisien \(\beta_j\) menjadi nol,
menghasilkan model yang lebih sederhana.
Formulasi LASSO dalam QP
Regresi LASSO dapat diformulasikan sebagai masalah Quadratic
Programming (QP) dengan kendala:
\[
\sum_{j=1}^p |\beta_j| \leq s
\] dimana \(s\) adalah batas
kendala yang menggantikan parameter \(\lambda\).
Jika terdapat \(p\) variabel prediktor, maka akan ada \(2^p\) kendala, yang dihasilkan dari kombinasi tanda \(\pm\) pada koefisien \(\beta_j\).
Sebagai contoh:
- Untuk \(p = 2\):
\[
|\beta_1| + |\beta_2| \leq s \quad \Rightarrow \quad
\begin{cases}
\beta_1 + \beta_2 \leq s \\
-\beta_1 + \beta_2 \leq s \\
\beta_1 - \beta_2 \leq s \\
-\beta_1 - \beta_2 \leq s
\end{cases}
\]
- Matriks \(A\) dan \(b_0\) direpresentasikan sebagai:
\[ A = \begin{bmatrix} -1 & -1 \\ 1 & -1 \\ -1 & 1 \\ 1 & 1 \end{bmatrix}, \quad b_0 = \begin{bmatrix} -s \\ -s \\ -s \\ -s \end{bmatrix} \]
Contoh Penerapan LASSO dalam Dataset
mtcars
Langkah-Langkah:
- Formulasi Masalah:
Gunakan datasetmtcarsdengan 6 variabel prediktor (\(x_1, x_2, \ldots, x_6\)) untuk memprediksi \(y = \text{mpg}\). Dalam kasus ini:- \(p = 6\), sehingga ada \(2^6 = 64\) kendala.
- Menyusun Matriks Kendala:
Matriks \(A\) dibangun dari semua kombinasi tanda (\(-1\) dan \(1\)) pada setiap \(\beta_j\).
## Var1 Var2 Var3 Var4 Var5 Var6
## [1,] -1 -1 -1 -1 -1 -1
## [2,] 1 -1 -1 -1 -1 -1
## [3,] -1 1 -1 -1 -1 -1
## [4,] 1 1 -1 -1 -1 -1
## [5,] -1 -1 1 -1 -1 -1
## [6,] 1 -1 1 -1 -1 -1
## [7,] -1 1 1 -1 -1 -1
## [8,] 1 1 1 -1 -1 -1
## [9,] -1 -1 -1 1 -1 -1
## [10,] 1 -1 -1 1 -1 -1
## [11,] -1 1 -1 1 -1 -1
## [12,] 1 1 -1 1 -1 -1
## [13,] -1 -1 1 1 -1 -1
## [14,] 1 -1 1 1 -1 -1
## [15,] -1 1 1 1 -1 -1
## [16,] 1 1 1 1 -1 -1
## [17,] -1 -1 -1 -1 1 -1
## [18,] 1 -1 -1 -1 1 -1
## [19,] -1 1 -1 -1 1 -1
## [20,] 1 1 -1 -1 1 -1
## [21,] -1 -1 1 -1 1 -1
## [22,] 1 -1 1 -1 1 -1
## [23,] -1 1 1 -1 1 -1
## [24,] 1 1 1 -1 1 -1
## [25,] -1 -1 -1 1 1 -1
## [26,] 1 -1 -1 1 1 -1
## [27,] -1 1 -1 1 1 -1
## [28,] 1 1 -1 1 1 -1
## [29,] -1 -1 1 1 1 -1
## [30,] 1 -1 1 1 1 -1
## [31,] -1 1 1 1 1 -1
## [32,] 1 1 1 1 1 -1
## [33,] -1 -1 -1 -1 -1 1
## [34,] 1 -1 -1 -1 -1 1
## [35,] -1 1 -1 -1 -1 1
## [36,] 1 1 -1 -1 -1 1
## [37,] -1 -1 1 -1 -1 1
## [38,] 1 -1 1 -1 -1 1
## [39,] -1 1 1 -1 -1 1
## [40,] 1 1 1 -1 -1 1
## [41,] -1 -1 -1 1 -1 1
## [42,] 1 -1 -1 1 -1 1
## [43,] -1 1 -1 1 -1 1
## [44,] 1 1 -1 1 -1 1
## [45,] -1 -1 1 1 -1 1
## [46,] 1 -1 1 1 -1 1
## [47,] -1 1 1 1 -1 1
## [48,] 1 1 1 1 -1 1
## [49,] -1 -1 -1 -1 1 1
## [50,] 1 -1 -1 -1 1 1
## [51,] -1 1 -1 -1 1 1
## [52,] 1 1 -1 -1 1 1
## [53,] -1 -1 1 -1 1 1
## [54,] 1 -1 1 -1 1 1
## [55,] -1 1 1 -1 1 1
## [56,] 1 1 1 -1 1 1
## [57,] -1 -1 -1 1 1 1
## [58,] 1 -1 -1 1 1 1
## [59,] -1 1 -1 1 1 1
## [60,] 1 1 -1 1 1 1
## [61,] -1 -1 1 1 1 1
## [62,] 1 -1 1 1 1 1
## [63,] -1 1 1 1 1 1
## [64,] 1 1 1 1 1 1
- Normalisasi Data:
Data \(x\) dan \(y\) harus dinormalisasi untuk memastikan penalti \(\lambda\) bersifat adil terhadap semua variabel.
sigma.beta<-sum(abs(ols.tb$coefficients))
s<-0.5*sigma.beta #misalnya saja
b0<-rep(-s,2^6)
sdata<-as.data.frame(scale(data.frame(y,x)))
yscale<-as.matrix(sdata$y);yscale## [,1]
## [1,] 0.15088482
## [2,] 0.15088482
## [3,] 0.44954345
## [4,] 0.21725341
## [5,] -0.23073453
## [6,] -0.33028740
## [7,] -0.96078893
## [8,] 0.71501778
## [9,] 0.44954345
## [10,] -0.14777380
## [11,] -0.38006384
## [12,] -0.61235388
## [13,] -0.46302456
## [14,] -0.81145962
## [15,] -1.60788262
## [16,] -1.60788262
## [17,] -0.89442035
## [18,] 2.04238943
## [19,] 1.71054652
## [20,] 2.29127162
## [21,] 0.23384555
## [22,] -0.76168319
## [23,] -0.81145962
## [24,] -1.12671039
## [25,] -0.14777380
## [26,] 1.19619000
## [27,] 0.98049211
## [28,] 1.71054652
## [29,] -0.71190675
## [30,] -0.06481307
## [31,] -0.84464392
## [32,] 0.21725341
- Matriks \(D\), \(d\), dan Kendala \(b_0\):
- \(D = 2(X^T X)\), dengan \(X\) adalah matriks prediktor.
- \(d = 2X^T y\), dengan \(y\) adalah vektor target.
- \(b_0 = -s\), dengan \(s = 0.5 \times \text{total penalti}\).
- \(D = 2(X^T X)\), dengan \(X\) adalah matriks prediktor.
- Solusi dengan
solve.QP:
## [1] -0.2425580 0.2715466 -0.2039718 0.1171394 -0.6803694 0.1190301
Kesimpulan Akhir
- Quadratic Programming (QP):
- QP adalah metode fleksibel untuk menyelesaikan optimasi fungsi
kuadrat dengan kendala linear.
- Dapat digunakan dalam berbagai kasus, termasuk regresi (OLS) dan regularisasi (LASSO).
- QP adalah metode fleksibel untuk menyelesaikan optimasi fungsi
kuadrat dengan kendala linear.
- OLS dan LASSO:
- OLS mencari koefisien yang meminimalkan error, tetapi tidak memiliki
regularisasi, sehingga rawan overfitting.
- LASSO menambahkan penalti \(L_1\), yang memungkinkan seleksi variabel otomatis dan menghasilkan model yang lebih sederhana.
- OLS mencari koefisien yang meminimalkan error, tetapi tidak memiliki
regularisasi, sehingga rawan overfitting.
- Penerapan:
- Implementasi dalam R melalui fungsi
solve.QPmemungkinkan analisis QP untuk masalah kompleks, termasuk regresi dengan banyak kendala.
- Implementasi dalam R melalui fungsi
- Rekomendasi:
Untuk data besar atau kasus dengan banyak variabel, gunakan regularisasi seperti LASSO untuk menghasilkan model yang lebih robust dan efisien.