1. Pendahuluan

1.1. Latar Belakang

 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.

1.2. Tujuan Analisis

 Tujuan dari analisis ini adalah:

  1. Mengimplementasikan metode Support Vector Machine (SVM) pada dataset kanker payudara.
  2. Membandingkan performa SVM kernel Linear dan kernel Radial Basis Function (RBF).
  3. Mengevaluasi kemampuan model dalam mengklasifikasikan tumor sebagai malignant atau benign.

1.3. Pertanyaan Prediksi

 Apakah karakteristik inti sel dapat digunakan untuk mengklasifikasikan tumor sebagai malignant atau benign menggunakan metode Support Vector Machine (SVM)?

2. Deskripsi Data

2.1. Sumber Data

 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

2.2. Unit Observasi

 Unit observasi dalam dataset adalah setiap sampel hasil pemeriksaan Fine Needle Aspirate (FNA) dari pasien kanker payudara.

2.3. Variabel Respons

 Variabel respons pada penelitian ini adalah diagnosis yang terdiri dari dua kelas, yaitu:

  • Malignant : tumor ganas
  • Benign : tumor jinak

 Karena variabel respons berbentuk kategori, maka analisis yang dilakukan termasuk ke dalam klasifikasi biner.

2.4. Variabel Prediktor

 Variabel prediktor terdiri dari karakteristik inti sel hasil pemeriksaan FNA, seperti:

  1. Radius
  2. Texture
  3. Perimeter
  4. Area
  5. Smoothness
  6. Compactness
  7. Concavity
  8. Concave Points
  9. Symmetry
  10. Fractal Dimension

 Setiap karakteristik memiliki tiga pengukuran, yaitu:

  1. Mean
  2. Standard Error (SE)
  3. Worst

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")
    )
  )

2.5. Dimensi dan Struktur Data

dim(wdbc)
## [1] 569  32
glimpse(wdbc)
## 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.

3. Preprocessing dan Exploratory Data Analisis

3.1. Pemeriksaan Kualitas Data

3.1.1. Missing Value

colSums(is.na(wdbc))
##                      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.

3.1.2. Pemeriksaan Data Duplikat

sum(duplicated(wdbc))
## [1] 0

 Berdasarkan hasil, dataset tidak memiliki data duplikat sehingga data dapat langsung digunakan untuk proses analisis lebih lanjut.

3.2. Distribusi Kelas

class_dist <- wdbc |>
  count(diagnosis) |>
  mutate(proporsi = n / sum(n))

class_dist
## # 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.

3.3. Visualisasi

3.3.1. Visualisasi Variabel Prediktor

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.

3.3.2. Heatmap Korelasi Variabel

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.

3.4. Pembagian Data Train-Test

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
dim(test_dat)
## [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.

4. Metode

4.1. Metode Analisis

 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:

  1. SVM Kernel Linear
  2. SVM Kernel Radial Basis Function (RBF)

 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:

  • \(w\) : vektor bobot (weight vector)
  • \(x\) : vektor fitur
  • \(b\) : bias atau intercept

 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:

  • \(\gamma\) : parameter kernel
  • \(||x_i - x_j||^2\) : jarak Euclidean antar observasi

4.2. Parameter Tuning

 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).

4.3. Cross Validation

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.

4.4. Metrik Evaluasi

 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:

  • \(TP\) (True Positive) : data positif yang berhasil diprediksi positif
  • \(TN\) (True Negative) : data negatif yang berhasil diprediksi negatif
  • \(FP\) (False Positive) : data negatif yang diprediksi positif
  • \(FN\) (False Negative) : data positif yang diprediksi negatif

 Performa model dievaluasi menggunakan beberapa metrik klasifikasi, yaitu:

  1. Accuracy  Accuracy digunakan untuk mengukur proporsi prediksi yang benar terhadap seluruh data observasi. Rumus accuracy dapat dituliskan sebagai:

\[ Accuracy = \frac{TP + TN}{TP + TN + FP + FN} \]

  1. Sensitivity (Recall)  Sensitivity digunakan untuk mengukur kemampuan model dalam mendeteksi kelas malignant secara benar.

\[ Sensitivity = \frac{TP}{TP + FN} \]

  1. Specificity  Specificity digunakan untuk mengukur kemampuan model dalam mendeteksi kelas benign secara benar.

\[ Specificity = \frac{TN}{TN + FP} \]

  1. ROC-AUC  ROC-AUC (Receiver Operating Characteristic - Area Under Curve) digunakan untuk mengukur kemampuan model dalam membedakan kedua kelas berdasarkan kurva ROC. Nilai AUC berada pada rentang 0 sampai 1, dimana semakin mendekati 1 menunjukkan performa model yang semakin baik.

Menurut Gorunescu (2011), nilai metrik kinerja klasifikasi seperti accuracy, recall, precision, dan f-measure dapat diinterpretasikan sebagai berikut:

  1. 0.90 – 1.00 = klasifikasi sangat baik
  2. 0.80 – 0.90 = klasifikasi baik
  3. 0.70 – 0.80 = klasifikasi cukup
  4. 0.60 – 0.70 = klasifikasi buruk
  5. 0.50 – 0.00 = klasifikasi salah

5. Hasil Analisis

5.1. Persiapan Data

folds <- vfold_cv(
  train_dat,
  v = 5,
  strata = diagnosis
)
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:

  • \(x\) = nilai data asli
  • \(\mu\) = rata-rata variabel
  • \(\sigma\) = standar deviasi variabel

 Melalui proses standardisasi, seluruh variabel memiliki skala yang sebanding.

5.2. Pemodelan SVM Kernel Linear

svm_metrics <- metric_set(
  accuracy,
  sens,
  spec,
  roc_auc
)

Spesifikasi Model

svm_linear_spec <- svm_linear(
  cost = tune()
) |>
  set_engine(
    "kernlab",
    prob.model = TRUE
  ) |>
  set_mode("classification")

Workflow

svm_linear_wf <- workflow() |>
  add_recipe(rec_svm) |>
  add_model(svm_linear_spec)

Grid Tuning

linear_grid <- grid_regular(
  cost(range = c(-5, 5)),
  levels = 10
)

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

show_best(
  svm_linear_tuned,
  metric = "roc_auc"
)
## # 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

autoplot(svm_linear_tuned)

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.

5.3. Pemodelan SVM Radial (RBF)

Spesifikasi Model

svm_rbf_spec <- svm_rbf(
  cost = tune(),
  rbf_sigma = tune()
) |>
  set_engine(
    "kernlab",
    prob.model = TRUE
  ) |>
  set_mode("classification")

Workflow

svm_rbf_wf <- workflow() |>
  add_recipe(rec_svm) |>
  add_model(svm_rbf_spec)

Grid Parameter

svm_grid <- grid_regular(
  cost(range = c(-5, 5)),
  rbf_sigma(range = c(-10, 0)),
  levels = 5
)

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

show_best(
  svm_rbf_tuned,
  metric = "roc_auc"
)
## # 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

autoplot(svm_rbf_tuned)

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

best_rbf <- select_best(
  svm_rbf_tuned,
  metric = "roc_auc"
)

final_rbf_wf <- finalize_workflow(
  svm_rbf_wf,
  best_rbf
)

final_rbf_fit <- last_fit(
  final_rbf_wf,
  split = split_obj,
  metrics = svm_metrics
)

5.4. Evaluasi Model

5.4.1. Evaluasi Model SVM Kernel Linear

Metrik Evaluasi

linear_metrics <- collect_metrics(
  final_linear_fit
)

linear_metrics
## # 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

pred_linear <- collect_predictions(
  final_linear_fit
)

Confusion Matrix

cm_linear <- conf_mat(
  pred_linear,
  truth = diagnosis,
  estimate = .pred_class
)
autoplot(
  cm_linear,
  type = "heatmap"
)

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

roc_curve(
  pred_linear,
  truth = diagnosis,
  .pred_Malignant
) |>
  autoplot()

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.

5.4.2. Evaluasi Model SVM RBF

Metrik Evaluasi

rbf_metrics <- collect_metrics(
  final_rbf_fit
)

rbf_metrics
## # 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

pred_rbf <- collect_predictions(
  final_rbf_fit
)

Confusion Matrix

cm_rbf <- conf_mat(
  pred_rbf,
  truth = diagnosis,
  estimate = .pred_class
)
autoplot(
  cm_rbf,
  type = "heatmap"
)

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

roc_curve(
  pred_rbf,
  truth = diagnosis,
  .pred_Malignant
) |>
  autoplot()

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.

5.4.3. Perbandingan Evaluasi Model

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.

6. Interpretasi dan Diskusi

 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.

7. Kesimpulan

 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.

Referensi

  1. UCI Machine Learning Repository. Breast Cancer Wisconsin (Diagnostic) Dataset.
    https://archive.ics.uci.edu/dataset/17/breast+cancer+wisconsin+diagnostic
  2. World Health Organization. (2024). Breast Cancer. https://www.who.int/news-room/fact-sheets/detail/breast-cancer
  3. Casaubon JT, Tomlinson-Hansen SE, Regan JP. Fine Needle Aspiration of Breast Masses. [Updated 2023 Jul 23]. In: StatPearls [Internet]. Treasure Island (FL): StatPearls Publishing; 2026 Jan-. Available from: https://www.ncbi.nlm.nih.gov/books/NBK470268/
  4. Mohammad, A. et al. (2022). Breast Cancer Detection Using Machine Learning Techniques. https://pmc.ncbi.nlm.nih.gov/articles/PMC8993572/
  5. Bilal, M. et al. (2024). Machine Learning Approaches for Breast Cancer Diagnosis. https://www.nature.com/articles/s41598-024-61322-w
  6. Awad, M., Khanna, R. (2015). Support Vector Machines for Classification. In: Efficient Learning Machines. Apress, Berkeley, CA. https://doi.org/10.1007/978-1-4302-5990-9_3
  7. Yuliati, I. F., Wulandary, S., & Sihombing, P. R. (2020). Penerapan Metode Support Vector Machine (SVM) dan Backpropagation Neural Network (BPNN) dalam Pengklasifikasian Pasangan Usia Subur di Jawa Barat. Jurnal Statistika dan Aplikasinya, 4(1).
  8. Budiman, F. (2019). SVM-RBF parameters testing optimization using cross validation and grid search to improve multiclass classification. Scientific Visualization, 11(1), 80–90. https://doi.org/10.26583/sv.11.1.07
  9. Hsu, C.-W., Chang, C.-C., & Lin, C.-J. (last updated: 2025, September 4). A practical guide to support vector classification. Department of Computer Science, National Taiwan University. https://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf
  10. Gorunescu, Florin. (2011). Data mining. Concepts, models and techniques. Extended and updated translation from the 2006 Romanian orginal. 10.1007/978-3-642-19721-5.