Nama : Rana Aribah
NIM : 140720260012
Dosen Pengampu : Prof. Dr. I Gede Nyoman Mindra Jaya,
M.Si.
Kanker payudara merupakan salah satu jenis kanker dengan jumlah kasus tertinggi pada perempuan di dunia. Menurut World Health Organization (WHO), pada tahun 2022 terdapat sekitar 2,3 juta kasus baru kanker payudara dan sekitar 670 ribu kematian akibat kanker payudara secara global. Kanker payudara juga menjadi jenis kanker paling umum yang didiagnosis pada perempuan di berbagai negara. (WHO, 2024)
Deteksi dini kanker payudara sangat penting untuk meningkatkan peluang keberhasilan pengobatan dan menurunkan angka kematian (WHO, 2024). Salah satu metode diagnosis yang sering digunakan adalah Fine Needle Aspirate (FNA), merupakan jenis biopsi yang dilakukan menggunakan jarum kecil untuk mengambil sampel jaringan atau cairan dari lesi payudara padat maupun kistik guna membantu proses diagnosis (Casaubon, 2023). Seiring berkembangnya teknologi, machine learning mulai banyak digunakan untuk membantu proses klasifikasi medis karena mampu memberikan hasil yang cepat dan akurat.
Salah satu metode machine learning yang sering digunakan dalam klasifikasi data medis adalah Support Vector Machine (SVM). Metode ini memiliki kemampuan yang baik dalam menangani data berdimensi tinggi dan mampu membentuk hyperplane optimal untuk memisahkan kelas data. Selain itu, penggunaan kernel pada SVM memungkinkan proses klasifikasi dilakukan baik secara linear maupun non-linear (Awad & Khanna, 2015).
Dataset yang digunakan dalam penelitian ini adalah Breast Cancer Wisconsin Diagnostic (WDBC) yang diperoleh dari UCI Machine Learning Repository. Dataset ini berisi karakteristik inti sel hasil pemeriksaan FNA yang digunakan untuk mengklasifikasikan tumor menjadi malignant dan benign.
Berdasarkan hal tersebut, penelitian ini dilakukan untuk menganalisis kemampuan metode Support Vector Machine dalam mengklasifikasikan tumor payudara berdasarkan karakteristik inti sel.
Tujuan dari analisis ini adalah:
Apakah karakteristik inti sel dapat digunakan untuk mengklasifikasikan tumor sebagai malignant atau benign menggunakan metode Support Vector Machine (SVM)?
Dataset yang digunakan dalam penelitian ini adalah Breast Cancer Wisconsin Diagnostic Dataset (WDBC) yang diperoleh dari UCI Machine Learning Repository. Dataset ini berisi karakteristik inti sel hasil pemeriksaan Fine Needle Aspirate (FNA) yang digunakan untuk membantu diagnosis kanker payudara.
Sumber data: https://archive.ics.uci.edu/dataset/17/breast%2Bcancer%2Bwisconsin%2Bdiagnostic
Unit observasi dalam dataset adalah setiap sampel hasil pemeriksaan Fine Needle Aspirate (FNA) dari pasien kanker payudara.
Variabel respons pada penelitian ini adalah diagnosis
yang terdiri dari dua kelas, yaitu:
Malignant : tumor ganasBenign : tumor jinakKarena variabel respons berbentuk kategori, maka analisis yang dilakukan termasuk ke dalam klasifikasi biner.
Variabel prediktor terdiri dari karakteristik inti sel hasil pemeriksaan FNA, seperti:
Setiap karakteristik memiliki tiga pengukuran, yaitu:
Persiapan Data
library(tidyverse)
library(tidymodels)
library(kernlab)
library(patchwork)
set.seed(123)
theme_set(theme_minimal())url_wdbc <- paste0(
"https://archive.ics.uci.edu/ml/machine-learning-databases/",
"breast-cancer-wisconsin/wdbc.data"
)
feature_names <- c(
"radius", "texture", "perimeter", "area", "smoothness",
"compactness", "concavity", "concave_points", "symmetry", "fractal_dimension"
)
col_names <- c(
"id", "diagnosis",
paste0(feature_names, "_mean"),
paste0(feature_names, "_se"),
paste0(feature_names, "_worst")
)
wdbc <- read_csv(
url_wdbc,
col_names = col_names,
show_col_types = FALSE
) |>
mutate(
diagnosis = factor(
if_else(diagnosis == "M", "Malignant", "Benign"),
levels = c("Malignant", "Benign")
)
)## [1] 569 32
## Rows: 569
## Columns: 32
## $ id <dbl> 842302, 842517, 84300903, 84348301, 84358402, …
## $ diagnosis <fct> Malignant, Malignant, Malignant, Malignant, Ma…
## $ radius_mean <dbl> 17.990, 20.570, 19.690, 11.420, 20.290, 12.450…
## $ texture_mean <dbl> 10.38, 17.77, 21.25, 20.38, 14.34, 15.70, 19.9…
## $ perimeter_mean <dbl> 122.80, 132.90, 130.00, 77.58, 135.10, 82.57, …
## $ area_mean <dbl> 1001.0, 1326.0, 1203.0, 386.1, 1297.0, 477.1, …
## $ smoothness_mean <dbl> 0.11840, 0.08474, 0.10960, 0.14250, 0.10030, 0…
## $ compactness_mean <dbl> 0.27760, 0.07864, 0.15990, 0.28390, 0.13280, 0…
## $ concavity_mean <dbl> 0.30010, 0.08690, 0.19740, 0.24140, 0.19800, 0…
## $ concave_points_mean <dbl> 0.14710, 0.07017, 0.12790, 0.10520, 0.10430, 0…
## $ symmetry_mean <dbl> 0.2419, 0.1812, 0.2069, 0.2597, 0.1809, 0.2087…
## $ fractal_dimension_mean <dbl> 0.07871, 0.05667, 0.05999, 0.09744, 0.05883, 0…
## $ radius_se <dbl> 1.0950, 0.5435, 0.7456, 0.4956, 0.7572, 0.3345…
## $ texture_se <dbl> 0.9053, 0.7339, 0.7869, 1.1560, 0.7813, 0.8902…
## $ perimeter_se <dbl> 8.589, 3.398, 4.585, 3.445, 5.438, 2.217, 3.18…
## $ area_se <dbl> 153.40, 74.08, 94.03, 27.23, 94.44, 27.19, 53.…
## $ smoothness_se <dbl> 0.006399, 0.005225, 0.006150, 0.009110, 0.0114…
## $ compactness_se <dbl> 0.049040, 0.013080, 0.040060, 0.074580, 0.0246…
## $ concavity_se <dbl> 0.05373, 0.01860, 0.03832, 0.05661, 0.05688, 0…
## $ concave_points_se <dbl> 0.015870, 0.013400, 0.020580, 0.018670, 0.0188…
## $ symmetry_se <dbl> 0.03003, 0.01389, 0.02250, 0.05963, 0.01756, 0…
## $ fractal_dimension_se <dbl> 0.006193, 0.003532, 0.004571, 0.009208, 0.0051…
## $ radius_worst <dbl> 25.38, 24.99, 23.57, 14.91, 22.54, 15.47, 22.8…
## $ texture_worst <dbl> 17.33, 23.41, 25.53, 26.50, 16.67, 23.75, 27.6…
## $ perimeter_worst <dbl> 184.60, 158.80, 152.50, 98.87, 152.20, 103.40,…
## $ area_worst <dbl> 2019.0, 1956.0, 1709.0, 567.7, 1575.0, 741.6, …
## $ smoothness_worst <dbl> 0.1622, 0.1238, 0.1444, 0.2098, 0.1374, 0.1791…
## $ compactness_worst <dbl> 0.6656, 0.1866, 0.4245, 0.8663, 0.2050, 0.5249…
## $ concavity_worst <dbl> 0.71190, 0.24160, 0.45040, 0.68690, 0.40000, 0…
## $ concave_points_worst <dbl> 0.26540, 0.18600, 0.24300, 0.25750, 0.16250, 0…
## $ symmetry_worst <dbl> 0.4601, 0.2750, 0.3613, 0.6638, 0.2364, 0.3985…
## $ fractal_dimension_worst <dbl> 0.11890, 0.08902, 0.08758, 0.17300, 0.07678, 0…
Dataset Breast Cancer Wisconsin Diagnostic terdiri dari 569 observasi dan 32 variabel. Struktur variabel pada dataset dapat dilihat pada tabel berikut.
Tabel 1. Jenis Variabel Data
| Jenis Variabel | Jumlah | Keterangan |
|---|---|---|
| Variabel Identitas | 1 | id |
| Variabel Target | 1 | diagnosis |
| Variabel Prediktor Numerik | 30 | Karakteristik inti sel kanker |
| Total Variabel | 32 | Seluruh variabel pada dataset |
Variabel diagnosis merupakan variabel kategorik bertipe
faktor yang digunakan sebagai target klasifikasi dengan dua kategori,
yaitu malignant (ganas) dan benign (jinak). Sementara itu, sebanyak 30
variabel numerik bertipe double digunakan sebagai variabel
prediktor.
Variabel prediktor berasal dari sepuluh karakteristik utama inti sel kanker yang direpresentasikan dalam tiga bentuk statistik, yaitu mean, standard error (SE), dan worst value.
Tabel 2. Jenis Variabel Data
| Karakteristik Utama | Mean | SE | Worst |
|---|---|---|---|
| Radius | radius_mean |
radius_se |
radius_worst |
| Texture | texture_mean |
texture_se |
texture_worst |
| Perimeter | perimeter_mean |
perimeter_se |
perimeter_worst |
| Area | area_mean |
area_se |
area_worst |
| Smoothness | smoothness_mean |
smoothness_se |
smoothness_worst |
| Compactness | compactness_mean |
compactness_se |
compactness_worst |
| Concavity | concavity_mean |
concavity_se |
concavity_worst |
| Concave Points | concave_points_mean |
concave_points_se |
concave_points_worst |
| Symmetry | symmetry_mean |
symmetry_se |
symmetry_worst |
| Fractal Dimension | fractal_dimension_mean |
fractal_dimension_se |
fractal_dimension_worst |
Seluruh variabel prediktor numerik digunakan dalam proses pembentukan model klasifikasi kanker payudara.
## id diagnosis radius_mean
## 0 0 0
## texture_mean perimeter_mean area_mean
## 0 0 0
## smoothness_mean compactness_mean concavity_mean
## 0 0 0
## concave_points_mean symmetry_mean fractal_dimension_mean
## 0 0 0
## radius_se texture_se perimeter_se
## 0 0 0
## area_se smoothness_se compactness_se
## 0 0 0
## concavity_se concave_points_se symmetry_se
## 0 0 0
## fractal_dimension_se radius_worst texture_worst
## 0 0 0
## perimeter_worst area_worst smoothness_worst
## 0 0 0
## compactness_worst concavity_worst concave_points_worst
## 0 0 0
## symmetry_worst fractal_dimension_worst
## 0 0
Berdasarkan hasil pemeriksaan missing value, seluruh variabel pada dataset Breast Cancer Wisconsin Diagnostic memiliki nilai 0, yang menunjukkan bahwa tidak terdapat data yang hilang (missing value) pada dataset.
Tabel 3. Missing Value
| Kondisi Data | Hasil |
|---|---|
| Variabel dengan Missing Value | 0 |
| Total Missing Value | 0 |
Hasil tersebut menunjukkan bahwa dataset berada dalam kondisi lengkap sehingga tidak diperlukan proses penanganan missing value, seperti imputasi maupun penghapusan data. Dengan demikian, seluruh observasi dapat langsung digunakan pada tahap analisis dan pemodelan klasifikasi kanker payudara.
## # A tibble: 2 × 3
## diagnosis n proporsi
## <fct> <int> <dbl>
## 1 Malignant 212 0.373
## 2 Benign 357 0.627
Berdasarkan hasil distribusi kelas, dataset Breast Cancer Wisconsin Diagnostic terdiri dari 212 sampel dengan diagnosis malignant (ganas) dan 357 sampel dengan diagnosis benign (jinak). Proporsi kelas benign sebesar 62,7%, sedangkan kelas malignant sebesar 37,3%.
Tabel 4. Distribusi Kelas
| Diagnosis | Frekuensi | Proporsi |
|---|---|---|
| Malignant | 212 | 37,3% |
| Benign | 357 | 62,7% |
ggplot(
wdbc,
aes(x = diagnosis, fill = diagnosis)
) +
geom_bar() +
labs(
title = "Distribusi Diagnosis",
x = "Diagnosis",
y = "Frekuensi"
) +
theme(legend.position = "none")Gambar 1. Grafik Distribusi Kelas
Visualisasi distribusi diagnosis menunjukkan bahwa kelas benign memiliki jumlah observasi lebih banyak dibandingkan kelas malignant. Meskipun demikian, distribusi kedua kelas masih tergolong cukup baik untuk proses klasifikasi karena kedua kategori tetap memiliki jumlah observasi yang memadai untuk pelatihan model.
wdbc_long <- wdbc %>%
select(-id) %>%
pivot_longer(
cols = -diagnosis,
names_to = "variable",
values_to = "value"
)
ggplot(
wdbc_long,
aes(x = value, fill = diagnosis)
) +
geom_density(alpha = 0.5) +
facet_wrap(
~ variable,
scales = "free",
ncol = 3
) +
labs(
title = "Distribusi Seluruh Variabel Berdasarkan Diagnosis",
x = "Value",
y = "Density"
) +
theme_minimal() +
theme(
legend.position = "bottom",
strip.text = element_text(size = 8)
)Gambar 2. Distribusi Variabel Prediktor Berdasarkan Diagnosis
Visualisasi distribusi variabel dilakukan untuk melihat pola persebaran setiap fitur pada kelas benign dan malignant. Grafik distribusi menunjukkan bagaimana karakteristik inti sel kanker berbeda antara tumor jinak dan tumor ganas berdasarkan masing-masing variabel prediktor.
Pada variabel seperti radius_mean,
perimeter_mean, dan area_mean, distribusi
kelas malignant cenderung berada pada nilai yang lebih tinggi
dibandingkan kelas benign. Hal ini menunjukkan bahwa tumor ganas umumnya
memiliki ukuran inti sel yang lebih besar dibandingkan tumor jinak.
Lebar distribusi pada masing-masing grafik menunjukkan tingkat variasi nilai pada setiap kelas. Distribusi yang lebih lebar menunjukkan bahwa variabel memiliki variasi nilai yang lebih tinggi, sedangkan distribusi yang lebih sempit menunjukkan nilai yang lebih homogen. Selain itu, bentuk distribusi yang berbeda antar kelas menunjukkan adanya perbedaan karakteristik morfologi inti sel antara tumor benign dan malignant.
Berdasarkan visualisasi distribusi, variabel yang berkaitan dengan ukuran inti sel seperti radius, perimeter, dan area menunjukkan pemisahan yang paling jelas antara kelas malignant dan benign. Sebaliknya, beberapa variabel seperti symmetry dan fractal dimension menunjukkan tumpang tindih distribusi yang lebih besar sehingga kemampuan diskriminasinya relatif lebih rendah. Temuan ini mengindikasikan bahwa karakteristik ukuran inti sel berpotensi menjadi faktor penting dalam proses klasifikasi kanker payudara.
library(corrplot)
# Mengambil variabel numerik
numeric_data <- wdbc %>%
select(-id, -diagnosis)
# Membuat matriks korelasi
cor_matrix <- cor(numeric_data)
# Visualisasi heatmap korelasi
corrplot(
cor_matrix,
method = "color",
type = "upper",
order = "hclust",
tl.cex = 0.7,
tl.col = "black",
addCoef.col = "black",
number.cex = 0.5
)Gambar 3. Heatmap Korelasi Variabel
Heatmap korelasi digunakan untuk melihat tingkat hubungan antar
variabel numerik pada dataset. Nilai korelasi berada pada rentang -1
hingga 1, dimana nilai yang mendekati 1 menunjukkan hubungan positif
yang kuat, sedangkan nilai yang mendekati 0 menunjukkan hubungan yang
lemah. Pada heatmap, warna yang lebih gelap menunjukkan korelasi yang
lebih tinggi antar variabel. Sebagai contoh, variabel
radius_mean dan perimeter_mean memiliki
korelasi positif yang tinggi, yang menunjukkan bahwa semakin besar
radius inti sel maka perimeter inti sel juga cenderung semakin besar.
SVM berfokus pada pencarian hyperplane pemisah optimal. Oleh karena itu
seluruh variabel tetap dipertahankan dalam proses pemodelan.
split_obj <- initial_split(
wdbc,
prop = 0.80,
strata = diagnosis
)
train_dat <- training(split_obj)
test_dat <- testing(split_obj)
dim(train_dat)## [1] 454 32
## [1] 115 32
Pembagian data train-test dilakukan dengan proporsi 80:20
menggunakan metode stratified sampling berdasarkan variabel
diagnosis. Hasil pembagian data dapat dilihat pada tabel
berikut.
Tabel 5. Pembagian Training dan Testing
| Jenis Data | Jumlah Observasi | Persentase |
|---|---|---|
| Training Data | 454 | 80% |
| Testing Data | 115 | 20% |
| Total | 569 | 100% |
Data training digunakan dalam proses pelatihan model Support Vector Machine (SVM), sedangkan data testing digunakan untuk mengevaluasi performa model pada data yang belum pernah dilihat sebelumnya.
Metode yang digunakan dalam penelitian ini adalah Support Vector Machine (SVM), yaitu metode machine learning untuk klasifikasi yang bekerja dengan membentuk hyperplane optimal untuk memisahkan kelas data. Support Vector Machine (SVM) dipilih karena memiliki beberapa keunggulan dalam permasalahan klasifikasi biner. SVM mampu bekerja dengan baik pada data berdimensi tinggi. Selain itu, penggunaan fungsi kernel memungkinkan SVM menangani pola hubungan yang bersifat linear maupun non-linear sehingga sesuai untuk diterapkan pada dataset Breast Cancer Wisconsin Diagnostic yang memiliki jumlah variabel prediktor cukup banyak. Pada penelitian ini digunakan dua jenis kernel, yaitu:
Kernel Linear digunakan ketika hubungan antar kelas cenderung linear, sedangkan kernel RBF digunakan untuk menangani pola data non-linear.
Secara umum, SVM berusaha mencari hyperplane terbaik yang memaksimalkan jarak (margin) antar kelas. Persamaan hyperplane pada SVM dapat dituliskan sebagai:
\[ w^T x + b = 0 \]
dengan:
Kernel Linear digunakan untuk data yang dapat dipisahkan secara linear. Pada kernel ini, fungsi kernel dituliskan sebagai:
\[ K(x_i, x_j) = x_i^T x_j \]
Sedangkan kernel Radial Basis Function (RBF) digunakan untuk menangani pola data non-linear. Fungsi kernel RBF dituliskan sebagai:
\[ K(x_i, x_j) = \exp(-\gamma ||x_i - x_j||^2) \]
dengan:
Proses tuning parameter dilakukan untuk memperoleh kombinasi
parameter terbaik pada model SVM. Pada SVM Kernel Linear, parameter cost
digunakan untuk mengontrol penalti terhadap kesalahan klasifikasi.
Sedangkan pada SVM Kernel RBF, parameter yang dituning adalah
cost dan rbf_sigma. Metode ini
direkomendasikan untuk menghasilkan performa klasifikasi non-linear yang
optimal pada SVM karena mampu melakukan optimasi klasifikasi melalui
pengaturan parameter cost (\(C\)) dan
gamma (\(\gamma\)) atau sigma (\(\sigma\)) (Budiman, 2019).
Tabel 6. Cross Validation
| Iterasi | Fold 1 | Fold 2 | Fold 3 | Fold 4 | Fold 5 |
|---|---|---|---|---|---|
| Iterasi 1 | Validasi | Training | Training | Training | Training |
| Iterasi 2 | Training | Validasi | Training | Training | Training |
| Iterasi 3 | Training | Training | Validasi | Training | Training |
| Iterasi 4 | Training | Training | Training | Validasi | Training |
| Iterasi 5 | Training | Training | Training | Training | Validasi |
Proses cross validation dilakukan menggunakan metode 5-fold cross validation pada data training dengan stratifikasi berdasarkan variabel diagnosis. Metode ini membagi data training menjadi lima bagian, dimana pada setiap iterasi empat bagian digunakan sebagai data pelatihan dan satu bagian digunakan sebagai data validasi. Proses tersebut dilakukan secara bergantian hingga seluruh bagian pernah menjadi data validasi. Penggunaan stratifikasi bertujuan untuk menjaga proporsi kelas benign dan malignant tetap seimbang pada setiap fold sehingga evaluasi model menjadi lebih stabil dan representatif.
Perhitungan metrik evaluasi didasarkan pada confusion matrix berikut:
Tabel 7. Confusion Matrix
| Aktual Positif | Aktual Negatif | |
|---|---|---|
| Prediksi Positif | TP | FP |
| Prediksi Negatif | FN | TN |
Keterangan:
Performa model dievaluasi menggunakan beberapa metrik klasifikasi, yaitu:
\[ Accuracy = \frac{TP + TN}{TP + TN + FP + FN} \]
\[ Sensitivity = \frac{TP}{TP + FN} \]
\[ Specificity = \frac{TN}{TN + FP} \]
Menurut Gorunescu (2011), nilai metrik kinerja klasifikasi seperti accuracy, recall, precision, dan f-measure dapat diinterpretasikan sebagai berikut:
rec_svm <- recipe(
diagnosis ~ .,
data = train_dat
) |>
update_role(id, new_role = "id") |>
step_zv(all_predictors()) |>
step_normalize(all_numeric_predictors())Normalisasi Data
Dilakukan normalisasi pada seluruh variabel numerik pada data training menggunakan metode standardisasi (z-score) karena SVM sensitif terhadap perbedaan skala antar variabel (Hsu dkk, 2025). Proses standardisasi dilakukan menggunakan rumus berikut.
\[ z = \frac{x - \mu}{\sigma} \]
Keterangan:
Melalui proses standardisasi, seluruh variabel memiliki skala yang sebanding.
Spesifikasi Model
svm_linear_spec <- svm_linear(
cost = tune()
) |>
set_engine(
"kernlab",
prob.model = TRUE
) |>
set_mode("classification")Workflow
Grid Tuning
Tuning Cross Validation
svm_linear_tuned <- tune_grid(
svm_linear_wf,
resamples = folds,
grid = linear_grid,
metrics = svm_metrics,
control = control_grid(save_pred = TRUE)
)Hasil Tuning SVM Linear
## # A tibble: 5 × 7
## cost .metric .estimator mean n std_err .config
## <dbl> <chr> <chr> <dbl> <int> <dbl> <chr>
## 1 0.0675 roc_auc binary 0.995 5 0.00273 pre0_mod02_post0
## 2 0.146 roc_auc binary 0.994 5 0.00263 pre0_mod03_post0
## 3 0.315 roc_auc binary 0.994 5 0.00232 pre0_mod04_post0
## 4 0.0312 roc_auc binary 0.994 5 0.00271 pre0_mod01_post0
## 5 0.680 roc_auc binary 0.992 5 0.00267 pre0_mod05_post0
Proses tuning dilakukan untuk memperoleh parameter cost
terbaik pada model SVM Linear menggunakan metode grid search
dan 5-fold cross validation dengan metrik evaluasi ROC-AUC. Hasil tuning
parameter dapat dilihat pada tabel berikut.
Tabel 8. Hasil Tuning SVM Kernel Linear
| Cost | ROC AUC | Standard Error |
|---|---|---|
| 0.0675 | 0.995 | 0.00273 |
| 0.1460 | 0.994 | 0.00263 |
| 0.3150 | 0.994 | 0.00232 |
| 0.0312 | 0.994 | 0.00271 |
| 0.6800 | 0.992 | 0.00267 |
Berdasarkan hasil tuning, diperoleh nilai ROC-AUC tertinggi sebesar
0.995 pada parameter cost sebesar 0.0675. Hasil tersebut
menunjukkan bahwa model SVM Linear memiliki kemampuan klasifikasi yang
sangat baik dalam membedakan kelas benign dan
malignant. Nilai cost yang relatif kecil
menunjukkan bahwa model dengan margin yang lebih lebar masih mampu
memberikan performa klasifikasi yang sangat baik. Hal ini
mengindikasikan bahwa pemisahan antara kelas benign dan malignant
relatif jelas sehingga tidak diperlukan penalti yang besar terhadap
kesalahan klasifikasi.
Visualisasi Tuning
Gambar 4. Visualisasi Tuning SVM Linear
Visualisasi tuning menunjukkan perubahan performa model SVM Linear
pada berbagai nilai parameter cost. Proses tuning dilakukan
menggunakan metode grid search dengan 10 kombinasi nilai
cost. Setiap nilai cost kemudian dievaluasi
menggunakan metode 5-fold cross validation. Dengan demikian, setiap
titik pada grafik merepresentasikan hasil rata-rata evaluasi model untuk
satu nilai cost yang diuji.
Berdasarkan grafik, nilai accuracy, ROC AUC, sensitivity, dan
specificity cenderung berada pada nilai yang tinggi dan relatif stabil
pada berbagai parameter yang diuji. Hal ini menunjukkan bahwa model SVM
Linear memiliki performa klasifikasi yang baik dan konsisten dalam
membedakan kelas benign dan malignant. Selain itu, nilai ROC AUC
tertinggi diperoleh pada parameter cost yang relatif
kecil.
Spesifikasi Model
svm_rbf_spec <- svm_rbf(
cost = tune(),
rbf_sigma = tune()
) |>
set_engine(
"kernlab",
prob.model = TRUE
) |>
set_mode("classification")Workflow
Grid Parameter
Tuning Cross Validation
svm_rbf_tuned <- tune_grid(
svm_rbf_wf,
resamples = folds,
grid = svm_grid,
metrics = svm_metrics,
control = control_grid(save_pred = TRUE)
)Hasil Tuning
## # A tibble: 5 × 8
## cost rbf_sigma .metric .estimator mean n std_err .config
## <dbl> <dbl> <chr> <chr> <dbl> <int> <dbl> <chr>
## 1 32 0.00316 roc_auc binary 0.995 5 0.00224 pre0_mod24_post0
## 2 5.66 0.00316 roc_auc binary 0.994 5 0.00246 pre0_mod19_post0
## 3 1 0.00316 roc_auc binary 0.993 5 0.00310 pre0_mod14_post0
## 4 0.177 0.00316 roc_auc binary 0.988 5 0.00472 pre0_mod09_post0
## 5 32 0.00001 roc_auc binary 0.986 5 0.00483 pre0_mod23_post0
Hasil Tuning SVM Radial (RBF)
Proses tuning dilakukan untuk memperoleh kombinasi parameter
cost dan rbf_sigma terbaik pada model SVM
Radial Basis Function (RBF) menggunakan metode grid search dan
5-fold cross validation dengan metrik evaluasi ROC-AUC. Hasil tuning
parameter dapat dilihat pada tabel berikut.
Tabel 9. Hasil Tuning SVM RBF
| Cost | RBF Sigma | ROC AUC | Standard Error |
|---|---|---|---|
| 32.00 | 0.00316 | 0.995 | 0.00224 |
| 5.66 | 0.00316 | 0.994 | 0.00246 |
| 1.00 | 0.00316 | 0.993 | 0.00310 |
| 0.177 | 0.00316 | 0.988 | 0.00472 |
| 32.00 | 0.00001 | 0.986 | 0.00483 |
Berdasarkan hasil tuning, diperoleh nilai ROC-AUC tertinggi sebesar
0.995 pada kombinasi parameter cost sebesar 32.00 dan
rbf_sigma sebesar 0.00316.
Visualisasi Tuning
Gambar 5. Visualisasi Tuning SVM RBF
Visualisasi tuning menunjukkan perubahan performa model SVM Radial
(RBF) pada berbagai kombinasi parameter cost dan
rbf_sigma yang diuji. Proses tuning dilakukan menggunakan
metode grid search dengan beberapa kombinasi parameter yang dievaluasi
menggunakan 5-fold cross validation. Setiap titik pada grafik
merepresentasikan hasil rata-rata evaluasi model untuk satu kombinasi
parameter yang diuji.
Berdasarkan grafik, kombinasi parameter rbf_sigma = 0.003162278 menghasilkan performa terbaik dibandingkan nilai rbf_sigma lainnya. Pada kombinasi tersebut, nilai accuracy, ROC-AUC, dan sensitivity cenderung lebih tinggi dan stabil pada berbagai nilai cost yang diuji. Peningkatan nilai cost pada rbf_sigma = 0.003162278 menunjukkan peningkatan performa model, terutama pada metrik sensitivity dan accuracy.
Model RBF Final
best_linear <- select_best(
svm_linear_tuned,
metric = "roc_auc"
)
final_linear_wf <- finalize_workflow(
svm_linear_wf,
best_linear
)
final_linear_fit <- last_fit(
final_linear_wf,
split = split_obj,
metrics = svm_metrics
)Model RBF Final
Metrik Evaluasi
## # A tibble: 4 × 4
## .metric .estimator .estimate .config
## <chr> <chr> <dbl> <chr>
## 1 accuracy binary 0.991 pre0_mod0_post0
## 2 sens binary 1 pre0_mod0_post0
## 3 spec binary 0.986 pre0_mod0_post0
## 4 roc_auc binary 1 pre0_mod0_post0
Prediksi Data Uji
Confusion Matrix
Gambar 6. Confusion Matrix SVM Linear
Berdasarkan confusion matrix, model SVM Linear berhasil mengklasifikasikan 43 data malignant dan 71 data benign dengan benar. Terdapat 1 data benign yang diprediksi sebagai malignant serta 0 data malignant yang diprediksi sebagai benign. Hasil tersebut menunjukkan bahwa model SVM Linear memiliki performa klasifikasi yang sangat baik dengan jumlah kesalahan prediksi yang relatif kecil pada data testing.
ROC Curve
Gambar 6. Kurva ROC SVM Linear
Berdasarkan grafik ROC Curve, model SVM Linear kurva ROC berada dekat dengan sudut kiri atas dan jauh di atas garis diagonal, yang menunjukkan bahwa model memiliki sensitivity tinggi dan tingkat kesalahan klasifikasi yang rendah. Selain itu, nilai ROC-AUC yang mendekati 1 menunjukkan kemampuan diskriminasi model yang sangat baik. Hasil tersebut perlu diinterpretasikan secara hati-hati karena dataset yang digunakan memiliki ukuran sampel yang relatif terbatas. Sehingga, perlu dilakukan evaluasi pada dataset eksternal untuk menguji kemampuan generalisasi model pada populasi yang lebih luas.
Metrik Evaluasi
## # A tibble: 4 × 4
## .metric .estimator .estimate .config
## <chr> <chr> <dbl> <chr>
## 1 accuracy binary 0.983 pre0_mod0_post0
## 2 sens binary 1 pre0_mod0_post0
## 3 spec binary 0.972 pre0_mod0_post0
## 4 roc_auc binary 1.000 pre0_mod0_post0
Prediksi Data Uji
Confusion Matrix
Gambar 7. Confusion Matrix SVM RBF
Berdasarkan confusion matrix, model SVM RBF berhasil mengklasifikasikan 43 data malignant dan 70 data benign dengan benar. Terdapat 2 data benign yang diprediksi sebagai malignant serta 0 data malignant yang diprediksi sebagai benign. Hasil tersebut menunjukkan bahwa model SVM RBF memiliki performa klasifikasi yang sangat baik dengan jumlah kesalahan prediksi yang relatif kecil pada data testing.
ROC Curve
Gambar 8. Kurva ROC SVM RBF
Berdasarkan grafik ROC Curve, model SVM Linear kurva ROC berada dekat dengan sudut kiri atas dan jauh di atas garis diagonal, yang menunjukkan bahwa model memiliki sensitivity tinggi dan tingkat kesalahan klasifikasi yang rendah. Nilai ROC-AUC mendekati 1 menunjukkan bahwa karakteristik inti sel pada dataset memiliki separabilitas baik, sehingga kedua kelas dapat dipisahkan oleh model SVM. Namun, hasil tersebut perlu diinterpretasikan secara hati-hati karena dataset yang digunakan memiliki ukuran sampel yang relatif terbatas. Sehingga, perlu dilakukan evaluasi pada dataset eksternal untuk menguji kemampuan generalisasi model pada populasi yang lebih luas.
linear_summary <- linear_metrics |>
select(.metric, .estimate) |>
rename(SVM_Linear = .estimate)
rbf_summary <- rbf_metrics |>
select(.metric, .estimate) |>
rename(SVM_RBF = .estimate)
comparison_table <- left_join( linear_summary, rbf_summary, by = ".metric" ) |> mutate( across( c(SVM_Linear, SVM_RBF), ~ sprintf("%.10f", .) ) )
comparison_table## # A tibble: 4 × 3
## .metric SVM_Linear SVM_RBF
## <chr> <chr> <chr>
## 1 accuracy 0.9913043478 0.9826086957
## 2 sens 1.0000000000 1.0000000000
## 3 spec 0.9861111111 0.9722222222
## 4 roc_auc 1.0000000000 0.9996770026
Tabel 10. Perbandingan Evaluasi Model
| Metric | SVM Linear | SVM RBF |
|---|---|---|
| Accuracy | 0.9913 | 0.9826 |
| Sensitivity | 1.0000 | 1.0000 |
| Specificity | 0.9861 | 0.9722 |
| ROC-AUC | 1.0000 | 0.9997 |
Berdasarkan hasil evaluasi, kedua model SVM memiliki performa klasifikasi yang sangat baik dalam membedakan tumor malignant dan benign. Model SVM Linear memberikan hasil sedikit lebih baik dibandingkan SVM RBF, dengan accuracy sebesar 99.13% dan ROC-AUC sebesar 1.0000. Hal ini menunjukkan bahwa karakteristik inti sel pada dataset dapat dipisahkan dengan sangat baik menggunakan pendekatan linear. Dengan demikian, penggunaan kernel non-linear yang lebih kompleks tidak memberikan peningkatan performa yang signifikan.
Dari sudut pandang praktis, model SVM Linear juga memiliki keunggulan berupa kompleksitas komputasi yang lebih rendah dibandingkan SVM RBF. Oleh karena itu, model SVM Linear dapat dipertimbangkan sebagai pilihan yang lebih efisien untuk kasus klasifikasi pada dataset Breast Cancer Wisconsin Diagnostic.
Berdasarkan hasil analisis, metode Support Vector Machine (SVM) mampu memberikan performa klasifikasi yang sangat baik dalam membedakan tumor malignant dan benign berdasarkan karakteristik inti sel pada dataset Breast Cancer Wisconsin Diagnostic (WDBC). Hal ini ditunjukkan oleh nilai accuracy, sensitivity, specificity, dan ROC-AUC yang sangat tinggi pada kedua model, baik SVM Kernel Linear maupun SVM Kernel Radial Basis Function (RBF).
Model SVM Linear memberikan performa sedikit lebih baik dibandingkan model SVM RBF dengan nilai accuracy sebesar 99.13%, specificity sebesar 98.61%, dan ROC-AUC sebesar 1.0000. Selain itu, kedua model memiliki sensitivity sebesar 100%, yang menunjukkan bahwa seluruh kasus tumor malignant pada data testing berhasil diklasifikasikan dengan benar. Hasil tersebut menunjukkan bahwa karakteristik inti sel pada dataset memiliki pola pemisahan yang sangat baik, bahkan dapat dipisahkan secara optimal menggunakan pendekatan linear.
Meskipun demikian, masih terdapat beberapa kesalahan klasifikasi pada kelas benign. Pada model SVM Linear terdapat 1 data benign yang diprediksi sebagai malignant, sedangkan pada model SVM RBF terdapat 2 data benign yang diprediksi sebagai malignant.
Penelitian ini memiliki beberapa keterbatasan. Dataset yang digunakan memiliki jumlah observasi yang relatif kecil dan berasal dari satu sumber dataset publik sehingga hasil penelitian belum tentu dapat digeneralisasikan pada seluruh kasus kanker payudara di dunia nyata. Selain itu, penelitian ini hanya menggunakan metode SVM tanpa membandingkan dengan metode klasifikasi lainnya seperti Random Forest, Decision Tree, atau Neural Network.
Penelitian ini memiliki beberapa keterbatasan dari sisi metode Support Vector Machine (SVM). Pertama, performa SVM sangat dipengaruhi oleh pemilihan parameter, seperti cost dan rbf_sigma, sehingga proses tuning parameter menjadi cukup penting untuk memperoleh model yang optimal. Kedua, metode SVM memiliki interpretabilitas yang sulit karena proses klasifikasi dilakukan melalui pembentukan hyperplane pada ruang berdimensi tinggi sehingga hubungan antar variabel tidak mudah dijelaskan secara langsung.
Berdasarkan hasil pemodelan menggunakan Support Vector Machine (SVM) dengan kernel Linear dan Radial Basis Function (RBF), diperoleh performa klasifikasi yang sangat tinggi pada dataset Breast Cancer Wisconsin Diagnostic.
Model SVM Linear menghasilkan accuracy sebesar 99.13%, sensitivity sebesar 100%, specificity sebesar 98.61%, dan ROC-AUC sebesar 1.0000. Sementara itu, model SVM RBF menghasilkan accuracy sebesar 98.26%, sensitivity sebesar 100%, specificity sebesar 97.22%, dan ROC-AUC sebesar 0.9997.
Hasil tersebut menunjukkan bahwa kedua model mampu mengklasifikasikan tumor dengan sangat baik. Nilai sensitivity sebesar 100% pada kedua model menunjukkan bahwa seluruh kasus tumor ganas (malignant) berhasil terdeteksi dengan benar. Selain itu, nilai ROC-AUC yang mendekati 1 menunjukkan kemampuan diskriminasi model yang sangat tinggi dalam membedakan tumor malignant dan benign.
Berdasarkan perbandingan performa, model SVM Linear memberikan hasil yang sedikit lebih baik dibandingkan SVM RBF pada data uji. Hal ini menunjukkan bahwa karakteristik inti sel pada dataset Breast Cancer Wisconsin Diagnostic cenderung dapat dipisahkan secara linear sehingga kernel non-linear tidak memberikan peningkatan performa yang signifikan.
Dengan demikian, dapat disimpulkan bahwa karakteristik inti sel dapat digunakan untuk mengklasifikasikan tumor sebagai malignant atau benign menggunakan metode Support Vector Machine (SVM). Model SVM Linear memberikan hasil terbaik sehingga dapat dipertimbangkan sebagai model yang efektif untuk permasalahan klasifikasi kanker payudara pada dataset ini.