Methods for High Dimensional Data
Pendahuluan
Data berdimensi tinggi atau high dimensional data, adalah kumpulan data yang berisi fitur (peubah) yang lebih banyak daripada observasinya (n < p). Pendekatan klasik seperti kuadrat terkecil pada regresi linear tidak sesuai pada kondisi ini karena dapat menyebabkan overfitting dan trade off bias-variance. Secara umum untuk mengatasi permasalahan pada data dimensi tinggi dapat dilakukan dengan tiga cara yaitu:
- Selection atau seleksi peubah (atau seleksi fitur), yaitu tidak semua peubah akan dimasukkan ke dalam model. Contohnya adalah dengan best subset, stepwise.
- Shrinkage atau penyusutan, yaitu koefisien dari fitur/ penduga disusutkan ke arah nol. Contohnya adalah dengan ridge (gulud), LASSO, elastic-net.
- Reduction atau reduksi, teknik reduksi yang dimaksud disini adalah bukan mereduksi dimensi X, namun X ditransformasi ke peubah laten, kemudian peubah laten tersebut diseleksi (tidak semua peubah laten dipilih). Contohnya adalah dengan PCR, PLS.
Model Regresi Linier
Bentuk model regresi linier
\[\mathrm{Y} = \beta_0 + \beta_1X_1+ \beta_2X_2+...+\beta_nX_n\] Penduga dengan metode kuadrat terkecil, menghasilkan metode yang tidak bias tetapi ragam besar sehingga bermasalah dalam keakuratan prediksi. Dalam data dimensi tinggi terdapat korelasi antar peubah sehingga ragam menjadi besar. Menggunakan MKT pun menjadi sulit untuk diinterpretasikan jika semakin banyak peubah penjelas yang dimasukkan ke dalam model.
Pada kondisi ini, dapat digunakan metode seleksi dan penyusutan dalam menduga model regresi, meskipun penduga yang dihasilkan berbias, namun ragamnya kecil.
Metode seleksi peubah atau fitur sebagai contoh adalah metode subset terbaik dan regresi bertatar (stepwise), namun ada trade-off bias dan ragam. Metode ini dapat mengurangi ragam prediksi dengan mengorbankan sedikit bias. Interpretasi model semakin mudah karena model hanya memuat subset dari keseluruhan peubah penjelas. Kekurangannya adalah penduga model tidak stabil, dimana perubahan kecil pada data (penambahan atau pengurangan) dapat menghasilkan model yang berbeda (termasuk subset peubahnya).
Metode shrinkage atau menyusutkan koefisien regresi juga dapat dijadikan alternatif. Sebagai contoh menggunakan regresi gulud yang akan menurunkan ragam prediksi dengan mengorbankan sedikit bias. Penduga model yang dihasilkan oleh regresi gulud lebih stabil, tetapi untuk interpretasi model relatif lebih sulit dibandingkan metode seleksi apabila jumlah peubah yang digunakan sangat banyak. Selain itu, dapat juga menggunakan LASSO yang menggabungkan teknik seleksi dengan shrinkage. LASSO bertujuan mengatasi masalah dalam keakuratan pendugaan dan interpretasi dengan mempertahankan keuntungan - keuntungan metode seleksi subset dan regresi gulud.
Pendugaan Model Regresi Linier
Untuk menduga \(\beta\) dari model regresi linear umumnya digunakan metode kuadrat terkecil, yaitu dengan meminimumkan jumlah kuadrat sisaan. Penduga \(\beta\) yang unik dapat diperoleh jika matriks \(X^TX\) berpangkat penuh, jika tidak maka penduga \(\beta\) menjadi tidak unik. Jika data berasal dari data berdimensi tinggi, setiap fitur akan memiliki hubungan atau korelasi. Hal ini berdampak pada syarat \(X^TX\) berpangkat penuh tidak terpenuhi, sehingga jika menggunakan MKT tidak bisa didapatkan penduga \(\beta\) yang unik.
Regresi Gulud
Regresi gulud memberikan finalti dari koefisien regresi pada norm \(L_2\) atau secara spesifik menduga \(\beta\) dengan meminimumkan \(JKS(\beta)\) dengan kendala \[\sum_{j=1}^{p} \beta_j^2 \le t, t \ge 0\] Jika dalam MKT adalah meminimumkan JKS, maka di dalam regresi gulud fungsi objektiv atau fungsi yang diminimumkan jika ditulis dalam bentuk lagrangian adalah \[JKS(\beta)+\lambda \sum_{j=1}^{p} \beta_j^2 \le t, \lambda \ge 0\] Solusi penduga \(\beta\) selalu unik untuk setiap nilai \(\lambda\). Terdapat banyak \(\lambda\) yang dapat dipilih, sehingga pemilihan \(\lambda\) merupakan hal yang kritis. Untuk pemilihan \(\lambda\) tersebut bisa digunakan teknik validasi silang k-folds dengan memperhatikan trade-off antara bias dan ragam. Jika \(\lambda\) mendekati 0 maka bias akan semakin berkurang tetapi ragam semakin meningkat. Ingat jika \(\lambda\) = 0 maka akan menjadi JKS biasa. Penduga koefisien yang diperoleh dari regresi gulud adalah tidak equievariant. Jika X ditransformasi menjadi X, \(\beta\) yang diperoleh dari hasil regresi gulud tidak bisa dikembalikan. Sehingga secara default* pada regresi gulud, X akan distandarisasi (dibakukan) terlebih dahulu sebelum dihitung modelnya.
Package yang dapat digunakan untuk regresi gulut adalah glmnet
dan glmnetUtils
Data yang digunakan adalah dataset leukemia
dari package varbvs
.
[1] "list"
Data yang digunakan dalam package glmnet
berupa matrix
, untuk mengakomodasi penggunaan data.frame
menggunakan glmnetUtils
.
Tampilan data leukimia
model_ridge_auc <- cv.glmnet(y~.,data=leukemia,alpha = 0,
type.measure="auc",
family="binomial",
nfolds=5)
plot(model_ridge_auc)
Untuk mengetahui nilai
lambda.min
[1] 30.25095
Untuk mengetahui nilai lamda.1se
[1] 30.25095
Seleksi Forward
Dalam seleksi forward akan dipilih peubah yang memiliki kriteria tertentu untuk model regresi. Seleksi forward terdiri dari stepwise dan stagewise. Pada seleksi forward stepwise model diduga dimulai dengan konstanta \(Y = \beta_0\) kemudian dievaluasi dengan memasukkan satu persatu peubah. Kriteria untuk memasukkan peubah didasarkan pada \(R^2\), \(R^2_{adj}\), JKS, F, CP’s Mallows, AIC, BIC, dll. Dalam pendugaan setiap modelnya menggunakan MKT.
Package yang digunakan dalam metode seleksi forward adalah leaps
dengan fungsinya adalah regsubsets
. Argumen nvmax
digunakan untuk menentukan banyaknya peubah/ subset yang dimasukkan ke dalam model. Data leukimia memiliki 72 observasi, maka peubah yang dimasukkan ke dalam model maksimal adalah 71.
Untuk memilih subset yang terbaik dapat menggunakan nilai BIC. Nilai BIC yang terkecil dianggap sebagai subset terbaik.
best_forward <- data.frame(subset=seq_along(summary(model_forward)$bic),
BIC = summary(model_forward)$bic)
Untuk melihat nilai BIC yang paling kecil akan digunakan plot
library(ggplot2)
ggplot(best_forward,aes(subset,BIC))+
geom_line(size=1)+
geom_point(color="red",size=2)+
theme_minimal()
Dari plot tersebut terlihat bahwa nilai BIC yang paling kecil adalah ketika subset-nya antara 70 dan 71, sehingga untuk melihat subset terbaik dapat menggunakan fungsi
best_forward
.
subset BIC
70 70 -5065.3
71 71 -Inf
Terlihat bahwa subset 71 bernilai -inf, sehingga subset yang dipilih adalah subset 70. Selanjutnya akan ditampilkan peubah yang terpilih beserta koefisiennya.
[1] 71
(Intercept) X183 X218 X235 X287
3.472222e-01 -7.404151e-02 -6.090950e-08 7.576329e-03 -2.753443e-03
X296 X298 X341 X348 X351
-4.656128e-02 -2.685595e-04 -2.859934e-08 -2.095386e-04 -3.125436e-06
X418 X446 X478 X598 X604
7.108548e-03 7.806248e-05 -1.666704e-04 -5.760329e-06 -4.508718e-04
X625 X682 X691 X697 X710
-1.916912e-05 -1.113632e-06 -2.082914e-02 -1.107586e-03 5.790618e-03
X716 X784 X801 X849 X1053
7.966634e-03 2.169628e-02 -5.422339e-02 4.383456e-03 -3.178720e-02
X1123 X1182 X1192 X1204 X1219
3.787290e-02 1.141740e-01 -1.234209e-02 1.736643e-11 -1.698153e-01
X1267 X1335 X1493 X1551 X1560
-1.877156e-02 1.451522e-02 2.187258e-04 -2.049213e-03 -5.764137e-10
X1667 X1713 X1858 X1889 X1909
-1.533883e-03 5.013101e-04 -1.541831e-05 -4.734743e-06 3.503166e-02
X1946 X2089 X2102 X2107 X2155
7.517935e-02 6.261964e-04 3.353616e-02 1.917570e-02 1.403177e-04
X2234 X2315 X2363 X2427 X2491
-1.787946e-04 4.128251e-02 -3.593878e-03 3.409575e-02 2.144905e-02
X2523 X2558 X2579 X2715 X2751
-2.823069e-03 -4.467083e-02 6.571662e-05 4.532983e-05 -5.201828e-07
X2761 X2811 X2861 X2888 X2915
-1.124179e-03 1.097293e-02 -2.455356e-07 7.308873e-02 -1.769428e-03
X2954 X3038 X3311 X3478 X3512
8.256019e-04 1.414855e-01 8.937411e-09 4.371139e-02 -2.100190e-03
X3522 X3529 X3530 X3539 X3545
1.596075e-02 1.728537e-05 -2.879700e-02 2.584945e-02 -1.363613e-03
X3557
-4.631553e-02
LASSO
LASSO memberikan penalti \(L_1\) dibanding \(L_2\) pada regresi gulud \[\sum_{j=1}^{p} | \beta_j| \le t, t \ge 0\] Dalam bentuk lagrangian, permasalahan ini dapat ditulis \[JKS(\beta)+\lambda \sum_{j=1}^{p} |\beta_j| \le t, t \ge 0\] Solusi \(\beta\) tidak dapat diperoleh dalam bentuk tertutup. Pendugaan LASSO bersifat equivariant sehingga dilakukan proses pembakuan peubah sebelum diduga modelnya.
Di dalam R, LASSO dapat dijalankan melalui package glmnet
dan fungsi cv.glmnet
. Fungsi cv.glmnet
digunakan untuk menjalakan metode LASSO asalkan nilai argumen alpha=1
.
set.seed(5816)
model_lasso_dev <- cv.glmnet(y~.,data=leukemia,alpha = 1,
type.measure="deviance",
family="binomial",
nfolds=5)
model_lasso_auc <- cv.glmnet(y~.,data=leukemia,alpha = 1,
type.measure="auc",
family="binomial",
nfolds=5)
Nilai koefisien dari variabel terpilih
Peubah yang terpilih berdasarkan nilai lambda optimal, maka s
diisi dengan lambda.min
model_lasso_auc
row column value
1 (Intercept) 1 -1.781018442
2 X158 1 0.080551992
3 X219 1 -0.055438814
4 X456 1 -0.544966098
5 X657 1 -0.117877397
6 X672 1 -0.818117717
7 X888 1 0.026746538
8 X918 1 0.023983733
9 X956 1 0.404309535
10 X979 1 1.366152414
11 X1182 1 0.044035231
12 X1219 1 -0.200857066
13 X1652 1 0.351322309
14 X1946 1 0.418338192
15 X2230 1 0.006557391
16 X2481 1 0.896602539
17 X2537 1 0.036936781
18 X2888 1 0.184174771
19 X3098 1 0.329983880
20 X3158 1 0.053761876
model_lasso_dev
row column value
1 (Intercept) 1 -2.08757850
2 X158 1 0.05197922
3 X219 1 -0.12944846
4 X456 1 -0.60966938
5 X657 1 -0.16050205
6 X672 1 -0.99194885
7 X888 1 0.08984458
8 X918 1 0.08763502
9 X956 1 0.47233352
10 X979 1 1.59130673
11 X1219 1 -0.26174776
12 X1652 1 0.35069763
13 X1796 1 0.01100616
14 X1946 1 0.55837041
15 X2230 1 0.04807908
16 X2239 1 -0.01181079
17 X2387 1 -0.01973279
18 X2481 1 1.02686842
19 X2537 1 0.03960220
20 X2727 1 -0.02821787
21 X2888 1 0.23668504
22 X3098 1 0.39943739
23 X3158 1 0.05086214
24 X3292 1 0.00638291
Peubah yang terpilih berdasarkan nilai lambda yang memiliki selang terkecil, maka s
diisi dengan lambda.1se
model_lasso_auc
row column value
1 (Intercept) 1 -1.781018442
2 X158 1 0.080551992
3 X219 1 -0.055438814
4 X456 1 -0.544966098
5 X657 1 -0.117877397
6 X672 1 -0.818117717
7 X888 1 0.026746538
8 X918 1 0.023983733
9 X956 1 0.404309535
10 X979 1 1.366152414
11 X1182 1 0.044035231
12 X1219 1 -0.200857066
13 X1652 1 0.351322309
14 X1946 1 0.418338192
15 X2230 1 0.006557391
16 X2481 1 0.896602539
17 X2537 1 0.036936781
18 X2888 1 0.184174771
19 X3098 1 0.329983880
20 X3158 1 0.053761876
model_lasso_dev
row column value
1 (Intercept) 1 -1.202783501
2 X456 1 -0.348724903
3 X626 1 -0.192490430
4 X672 1 -0.407115218
5 X956 1 0.295115988
6 X979 1 0.916017432
7 X1182 1 0.004487211
8 X1219 1 -0.061822704
9 X1652 1 0.260076303
10 X1946 1 0.171132397
11 X2481 1 0.596925768
12 X2888 1 0.028961393
13 X3098 1 0.165247266
14 X3158 1 0.018010204
15 X3441 1 -0.020083808
PCR: Regresi Komponen Utama
Principal Component Regression merupakan metode reduksi. PCR merupakan perpaduan antara teknik PCA dengan MKT. PCA merupakan teknik mereduksi dimensi n x p dari matriks X. Perlu diingat bahwa mereduksi disini adalah mentransformasi dari X menjadi Z. Proses yang dilakukan adalah X ditransformasi ke dalam maksimum p komponen utama \(Z_i\) yang saling orthogonal, i = 1, …, p.
Tahap PCR/ RKU:
- X ditransformasi ke dalam k < p komponen utama (tidak semua komponen utama digunakan)
- Lakukan pendugaan modeL \(Y = X\beta\)
Pemilihan Tunning Parameter
Semua metode yang dibahas tersebut memiliki sifat bias, berbeda dengan MKT yang tidak berbias, namun metode tersebut memiliki ragam paling kecil. Untuk dapat memilih model terbaik, misalkan pada regresi gulud dan LASSO harus ditentukan \(\lambda\) nya berapa, \(\lambda\) ini adalah sebuah tunning parameter. Dalam stepwise menentukan berapa peubah yang dimasukkan ke dalam model, maka p merupakan tunning parameter. Dalam PCR, ditentukan berapa komponen utama yang digunakan, maka komponen utama merupakan tunning parameter.
Metode yang umum digunakan dalam pemilihan penalti/ tunning parameter ini adalah validasi silang (Cross Validation/ CV). Tipe validasi silang yang umum adalah validasi silang leave-one-out (LOO) dan k-fold.
Referensi
Nurussadad, A.A. (Maret, 2021). STA581-06 - Metode Seleksi Peubah untuk High-dimensional Data. Retrieved from https://rpubs.com/nurussadad/STA581-06-Seleksi-Peubah
Soleh, A.M. (2021). STA581 Sains Data: Methods for High Dimensional Data, Selection, Shrinkage, and Reduction. Retrieved from https://newlms.ipb.ac.id/