TUGAS SVR untuk Regresi
Angga Pratama 140720250007
Beton merupakan salah satu material konstruksi yang paling banyak digunakan dalam pembangunan infrastruktur seperti gedung, jalan, jembatan, bendungan, dan berbagai fasilitas publik lainnya. Salah satu karakteristik penting yang menentukan kualitas beton adalah kuat tekan beton (compressive strength). Nilai kuat tekan menunjukkan kemampuan beton dalam menahan beban tekan sebelum mengalami kerusakan. Oleh karena itu, informasi mengenai kuat tekan beton sangat penting dalam proses perencanaan, pengawasan mutu, dan evaluasi struktur bangunan.
Kuat tekan beton dipengaruhi oleh berbagai faktor, antara lain jumlah semen (cement), blast furnace slag, fly ash, kadar air (water), superplasticizer, agregat kasar (coarse aggregate), agregat halus (fine aggregate), serta umur beton (age). Hubungan antara faktor-faktor tersebut dan kuat tekan beton sering kali bersifat kompleks dan tidak selalu linear sehingga diperlukan metode analisis yang mampu memodelkan hubungan tersebut dengan baik.
Perkembangan teknologi Machine Learning memungkinkan proses prediksi dilakukan dengan lebih akurat melalui pembelajaran pola dari data historis. Dalam penelitian ini digunakan dua pendekatan prediksi, yaitu Regresi Linear dan Support Vector Regression (SVR). Regresi Linear dipilih sebagai model dasar (baseline model) karena sederhana dan mudah diinterpretasikan, sedangkan Support Vector Regression dipilih karena mampu memodelkan hubungan non-linear yang sering ditemukan pada data nyata.
Dataset yang digunakan berasal dari UCI Machine Learning Repository yaitu Concrete Compressive Strength Dataset yang terdiri atas 1.030 observasi dengan delapan variabel prediktor dan satu variabel target berupa kuat tekan beton. Melalui analisis ini diharapkan dapat diketahui model yang memberikan performa prediksi terbaik sehingga dapat digunakan sebagai referensi dalam proses estimasi kuat tekan beton.
Berdasarkan latar belakang yang telah diuraikan, maka rumusan masalah dalam analisis ini adalah sebagai berikut.
Tujuan dari analisis ini adalah sebagai berikut.
Data yang digunakan dalam penelitian ini adalah Concrete Compressive Strength Dataset yang diperoleh dari UCI Machine Learning Repository. Dataset ini berisi informasi mengenai komposisi material penyusun beton dan umur beton yang digunakan untuk memprediksi nilai kuat tekan beton (Concrete Compressive Strength).
Dataset tersebut banyak digunakan dalam penelitian machine learning karena memiliki hubungan yang cukup kompleks antara variabel input dan variabel target sehingga cocok digunakan untuk membandingkan berbagai metode prediksi.
Variabel target yang akan diprediksi adalah Concrete Compressive Strength (MPa), sedangkan delapan variabel lainnya digunakan sebagai variabel prediktor.
Dataset terdiri atas delapan variabel prediktor dan satu variabel target sebagaimana ditunjukkan pada tabel berikut.
| Variabel | Deskripsi | Satuan |
|---|---|---|
| cement | Jumlah semen dalam campuran beton | kg/m³ |
| slag | Jumlah blast furnace slag dalam campuran beton | kg/m³ |
| fly_ash | Jumlah fly ash dalam campuran beton | kg/m³ |
| water | Jumlah air dalam campuran beton | kg/m³ |
| superplasticizer | Jumlah superplasticizer dalam campuran beton | kg/m³ |
| coarse_aggregate | Jumlah agregat kasar dalam campuran beton | kg/m³ |
| fine_aggregate | Jumlah agregat halus dalam campuran beton | kg/m³ |
| age | Umur beton saat pengujian | Hari |
| strength | Kuat tekan beton | MPa |
Variabel strength digunakan sebagai variabel respon (target) yang akan diprediksi menggunakan metode Regresi Linear dan Support Vector Regression (SVR).
Berdasarkan hasil pemeriksaan data diperoleh informasi umum dataset sebagai berikut.
| Karakteristik | Nilai |
|---|---|
| Jumlah Observasi | 1.030 |
| Jumlah Variabel | 9 |
| Jumlah Variabel Prediktor | 8 |
| Jumlah Variabel Target | 1 |
| Tipe Data | Numerik |
| Missing Value | 0 |
Ringkasan statistik variabel target (strength) ditunjukkan pada tabel berikut.
| Statistik | Nilai |
|---|---|
| Minimum | 2,33 MPa |
| Kuartil 1 | 23,71 MPa |
| Median | 34,44 MPa |
| Mean | 35,82 MPa |
| Kuartil 3 | 46,14 MPa |
| Maksimum | 82,60 MPa |
Berdasarkan informasi tersebut dapat diketahui bahwa dataset memiliki jumlah observasi yang cukup besar untuk membangun model prediksi. Seluruh variabel bertipe numerik dan tidak ditemukan data hilang (missing value), sehingga data dapat langsung digunakan pada proses eksplorasi data, pemodelan Regresi Linear, dan Support Vector Regression (SVR).
Selain itu, rentang nilai kuat tekan beton yang cukup lebar menunjukkan adanya variasi karakteristik beton yang baik untuk proses pembelajaran model machine learning.
Dataset diunduh langsung dari UCI Machine Learning Repository dalam format Excel (.xls). Selanjutnya nama variabel disederhanakan agar memudahkan proses analisis dan pemodelan.
library(tidyverse)
library(readxl)
tmp <- tempfile(fileext = ".xls")
download.file(
"https://archive.ics.uci.edu/ml/machine-learning-databases/concrete/compressive/Concrete_Data.xls",
destfile = tmp,
mode = "wb"
)
concrete <- read_excel(tmp) |>
setNames(c(
"cement",
"slag",
"fly_ash",
"water",
"superplasticizer",
"coarse_aggregate",
"fine_aggregate",
"age",
"strength"
)) |>
mutate(across(everything(), as.numeric))
head(concrete)
## # A tibble: 6 × 9
## cement slag fly_ash water superplasticizer coarse_aggregate fine_aggregate
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 540 0 0 162 2.5 1040 676
## 2 540 0 0 162 2.5 1055 676
## 3 332. 142. 0 228 0 932 594
## 4 332. 142. 0 228 0 932 594
## 5 199. 132. 0 192 0 978. 826.
## 6 266 114 0 228 0 932 670
## # ℹ 2 more variables: age <dbl>, strength <dbl>
Pemeriksaan struktur data dilakukan untuk memastikan tipe data setiap variabel telah sesuai dan siap digunakan dalam proses analisis.
str(concrete)
## tibble [1,030 × 9] (S3: tbl_df/tbl/data.frame)
## $ cement : num [1:1030] 540 540 332 332 199 ...
## $ slag : num [1:1030] 0 0 142 142 132 ...
## $ fly_ash : num [1:1030] 0 0 0 0 0 0 0 0 0 0 ...
## $ water : num [1:1030] 162 162 228 228 192 228 228 228 228 228 ...
## $ superplasticizer: num [1:1030] 2.5 2.5 0 0 0 0 0 0 0 0 ...
## $ coarse_aggregate: num [1:1030] 1040 1055 932 932 978 ...
## $ fine_aggregate : num [1:1030] 676 676 594 594 826 ...
## $ age : num [1:1030] 28 28 270 365 360 90 365 28 28 28 ...
## $ strength : num [1:1030] 80 61.9 40.3 41.1 44.3 ...
glimpse(concrete)
## Rows: 1,030
## Columns: 9
## $ cement <dbl> 540.0, 540.0, 332.5, 332.5, 198.6, 266.0, 380.0, 380.…
## $ slag <dbl> 0.0, 0.0, 142.5, 142.5, 132.4, 114.0, 95.0, 95.0, 114…
## $ fly_ash <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ water <dbl> 162, 162, 228, 228, 192, 228, 228, 228, 228, 228, 192…
## $ superplasticizer <dbl> 2.5, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0…
## $ coarse_aggregate <dbl> 1040.0, 1055.0, 932.0, 932.0, 978.4, 932.0, 932.0, 93…
## $ fine_aggregate <dbl> 676.0, 676.0, 594.0, 594.0, 825.5, 670.0, 594.0, 594.…
## $ age <dbl> 28, 28, 270, 365, 360, 90, 365, 28, 28, 28, 90, 28, 2…
## $ strength <dbl> 79.986111, 61.887366, 40.269535, 41.052780, 44.296075…
Berdasarkan hasil pemeriksaan struktur data diketahui bahwa:
Pemeriksaan missing value dilakukan untuk memastikan tidak terdapat data yang hilang pada dataset.
colSums(is.na(concrete))
## cement slag fly_ash water
## 0 0 0 0
## superplasticizer coarse_aggregate fine_aggregate age
## 0 0 0 0
## strength
## 0
sum(is.na(concrete))
## [1] 0
Hasil pemeriksaan menunjukkan bahwa seluruh variabel memiliki nilai missing sebanyak 0. Dengan demikian tidak diperlukan proses imputasi data sebelum pemodelan dilakukan.
Statistik deskriptif digunakan untuk memperoleh gambaran umum mengenai karakteristik data.
summary(concrete)
## cement slag fly_ash water
## Min. :102.0 Min. : 0.0 Min. : 0.00 Min. :121.8
## 1st Qu.:192.4 1st Qu.: 0.0 1st Qu.: 0.00 1st Qu.:164.9
## Median :272.9 Median : 22.0 Median : 0.00 Median :185.0
## Mean :281.2 Mean : 73.9 Mean : 54.19 Mean :181.6
## 3rd Qu.:350.0 3rd Qu.:142.9 3rd Qu.:118.27 3rd Qu.:192.0
## Max. :540.0 Max. :359.4 Max. :200.10 Max. :247.0
## superplasticizer coarse_aggregate fine_aggregate age
## Min. : 0.000 Min. : 801.0 Min. :594.0 Min. : 1.00
## 1st Qu.: 0.000 1st Qu.: 932.0 1st Qu.:731.0 1st Qu.: 7.00
## Median : 6.350 Median : 968.0 Median :779.5 Median : 28.00
## Mean : 6.203 Mean : 972.9 Mean :773.6 Mean : 45.66
## 3rd Qu.:10.160 3rd Qu.:1029.4 3rd Qu.:824.0 3rd Qu.: 56.00
## Max. :32.200 Max. :1145.0 Max. :992.6 Max. :365.00
## strength
## Min. : 2.332
## 1st Qu.:23.707
## Median :34.443
## Mean :35.818
## 3rd Qu.:46.136
## Max. :82.599
psych::describe(concrete)
## vars n mean sd median trimmed mad min max
## cement 1 1030 281.17 104.51 272.90 273.47 117.72 102.00 540.0
## slag 2 1030 73.90 86.28 22.00 62.43 32.62 0.00 359.4
## fly_ash 3 1030 54.19 64.00 0.00 46.85 0.00 0.00 200.1
## water 4 1030 181.57 21.36 185.00 181.19 19.27 121.75 247.0
## superplasticizer 5 1030 6.20 5.97 6.35 5.56 7.87 0.00 32.2
## coarse_aggregate 6 1030 972.92 77.75 968.00 973.49 68.64 801.00 1145.0
## fine_aggregate 7 1030 773.58 80.18 779.51 776.41 67.44 594.00 992.6
## age 8 1030 45.66 63.17 28.00 32.53 31.13 1.00 365.0
## strength 9 1030 35.82 16.71 34.44 34.96 16.20 2.33 82.6
## range skew kurtosis se
## cement 438.00 0.51 -0.53 3.26
## slag 359.40 0.80 -0.52 2.69
## fly_ash 200.10 0.54 -1.33 1.99
## water 125.25 0.07 0.11 0.67
## superplasticizer 32.20 0.91 1.39 0.19
## coarse_aggregate 344.00 -0.04 -0.61 2.42
## fine_aggregate 398.60 -0.25 -0.11 2.50
## age 364.00 3.26 12.07 1.97
## strength 80.27 0.42 -0.32 0.52
Berdasarkan statistik deskriptif diperoleh informasi bahwa:
Distribusi variabel target diamati untuk memahami sebaran nilai kuat tekan beton.
ggplot(concrete, aes(strength)) +
geom_histogram(
bins = 30,
fill = "steelblue",
color = "white"
) +
labs(
title = "Distribusi Kuat Tekan Beton",
x = "Strength (MPa)",
y = "Frekuensi"
) +
theme_minimal()
Distribusi variabel target menunjukkan bahwa sebagian besar nilai kuat tekan beton berada pada rentang menengah. Tidak terlihat adanya nilai ekstrim yang sangat dominan sehingga distribusi data relatif baik untuk proses pemodelan.
Analisis korelasi dilakukan untuk mengetahui hubungan antar variabel dalam dataset.
cor_matrix <- cor(concrete)
corrplot::corrplot(
cor_matrix,
method = "color",
type = "upper",
tl.cex = 0.8,
number.cex = 0.7
)
Berdasarkan matriks korelasi diperoleh beberapa temuan penting:
Dataset dibagi menjadi data training dan data testing dengan proporsi 80:20.
library(tidymodels)
set.seed(15062026)
split_obj <- initial_split(
concrete,
prop = 0.80
)
train_dat <- training(split_obj)
test_dat <- testing(split_obj)
dim(train_dat)
## [1] 824 9
dim(test_dat)
## [1] 206 9
Data training digunakan untuk membangun model, sedangkan data testing digunakan untuk mengevaluasi kemampuan prediksi model pada data yang belum pernah dilihat sebelumnya.
Karena Support Vector Regression sensitif terhadap skala variabel, maka dilakukan standardisasi terhadap seluruh variabel prediktor.
rec_svr <- recipe(
strength ~ .,
data = train_dat
) |>
step_zv(all_predictors()) |>
step_normalize(all_numeric_predictors())
rec_svr
Standardisasi dilakukan menggunakan metode Z-Score sehingga seluruh variabel prediktor memiliki rata-rata mendekati 0 dan simpangan baku mendekati 1. Proses ini membantu meningkatkan performa dan stabilitas model Support Vector Regression.
Regresi Linear merupakan metode statistik yang digunakan untuk memodelkan hubungan antara satu variabel respon dan satu atau lebih variabel prediktor. Model ini mengasumsikan bahwa hubungan antara variabel prediktor dan variabel respon bersifat linear. Parameter model diestimasi menggunakan metode Ordinary Least Squares (OLS), yaitu dengan meminimalkan jumlah kuadrat galat prediksi (James et al., 2021).
Pada penelitian ini, model Regresi Linear digunakan sebagai model dasar (baseline model) untuk memprediksi kuat tekan beton berdasarkan seluruh variabel prediktor yang tersedia dalam dataset.
lm_wf <- workflow() |>
add_recipe(rec_svr) |>
add_model(
linear_reg() |>
set_engine("lm")
)
lm_wf
## ══ Workflow ════════════════════════════════════════════════════════════════════
## Preprocessor: Recipe
## Model: linear_reg()
##
## ── Preprocessor ────────────────────────────────────────────────────────────────
## 2 Recipe Steps
##
## • step_zv()
## • step_normalize()
##
## ── Model ───────────────────────────────────────────────────────────────────────
## Linear Regression Model Specification (regression)
##
## Computational engine: lm
Setelah model berhasil dibangun, dilakukan proses prediksi terhadap data testing untuk memperoleh nilai estimasi kuat tekan beton.
lm_fit <- last_fit(
lm_wf,
split_obj,
metrics = metric_set(
rmse,
mae,
rsq
)
)
lm_pred <- collect_predictions(
lm_fit
)
head(lm_pred)
## # A tibble: 6 × 5
## .pred id strength .row .config
## <dbl> <chr> <dbl> <int> <chr>
## 1 52.7 train/test split 61.9 2 pre0_mod0_post0
## 2 26.1 train/test split 47.0 6 pre0_mod0_post0
## 3 19.0 train/test split 45.9 9 pre0_mod0_post0
## 4 30.2 train/test split 39.3 10 pre0_mod0_post0
## 5 22.5 train/test split 28.0 12 pre0_mod0_post0
## 6 19.6 train/test split 47.8 15 pre0_mod0_post0
Kinerja model dievaluasi menggunakan tiga metrik utama, yaitu Root Mean Square Error (RMSE), Mean Absolute Error (MAE), dan Coefficient of Determination (R²). Nilai RMSE dan MAE yang lebih kecil menunjukkan performa prediksi yang lebih baik, sedangkan nilai R² yang lebih besar menunjukkan kemampuan model yang lebih baik dalam menjelaskan variasi data.
lm_metrics <- collect_metrics(
lm_fit
)
lm_metrics
## # A tibble: 3 × 4
## .metric .estimator .estimate .config
## <chr> <chr> <dbl> <chr>
## 1 rmse standard 10.9 pre0_mod0_post0
## 2 mae standard 8.39 pre0_mod0_post0
## 3 rsq standard 0.570 pre0_mod0_post0
Support Vector Regression (SVR) merupakan pengembangan dari Support Vector Machine (SVM) yang digunakan untuk menyelesaikan permasalahan regresi. Berbeda dengan regresi linear yang mengasumsikan hubungan linear antara variabel prediktor dan respon, SVR mampu menangkap hubungan non-linear melalui penggunaan fungsi kernel. Pada penelitian ini digunakan kernel Radial Basis Function (RBF) karena memiliki kemampuan yang baik dalam memodelkan pola kompleks pada data kuat tekan beton (James et al., 2021).
Pada tahap ini dilakukan pembentukan model SVR menggunakan kernel RBF. Sebelum pemodelan dilakukan, data terlebih dahulu dibagi menjadi data training dan data testing, kemudian dilakukan standardisasi variabel numerik karena algoritma SVR sensitif terhadap perbedaan skala antar variabel.
# Pembagian data
split_obj <- initial_split(
concrete,
prop = 0.80
)
train_dat <- training(split_obj)
test_dat <- testing(split_obj)
# Cross Validation
folds <- vfold_cv(
train_dat,
v = 5
)
# Standardisasi
rec_svr <- recipe(
strength ~ .,
data = train_dat
) %>%
step_zv(all_predictors()) %>%
step_normalize(all_numeric_predictors())
# Model SVR
svr_spec <- svm_rbf(
cost = tune(),
rbf_sigma = tune()
) %>%
set_engine("kernlab") %>%
set_mode("regression")
svr_wf <- workflow() %>%
add_recipe(rec_svr) %>%
add_model(svr_spec)
Hyperparameter tuning dilakukan menggunakan metode 5-Fold Cross Validation untuk memperoleh kombinasi parameter terbaik. Parameter yang dituning adalah Cost (C) dan RBF Sigma. Menurut Kuhn dan Johnson (2019), tuning hyperparameter penting dilakukan untuk meningkatkan kemampuan generalisasi model pada data yang belum pernah diamati sebelumnya.
svr_grid <- grid_space_filling(
cost(range = c(-5, 8)),
rbf_sigma(range = c(-10, 0)),
size = 25
)
svr_tuned <- tune_grid(
svr_wf,
resamples = folds,
grid = svr_grid,
metrics = metric_set(
rmse,
mae,
rsq
)
)
show_best(
svr_tuned,
metric = "rmse"
)
## # A tibble: 5 × 8
## cost rbf_sigma .metric .estimator mean n std_err .config
## <dbl> <dbl> <chr> <chr> <dbl> <int> <dbl> <chr>
## 1 8.72 0.0562 rmse standard 6.20 5 0.266 pre0_mod16_post0
## 2 57.0 0.383 rmse standard 6.28 5 0.382 pre0_mod21_post0
## 3 256 0.00825 rmse standard 6.62 5 0.275 pre0_mod25_post0
## 4 0.297 0.147 rmse standard 7.85 5 0.305 pre0_mod07_post0
## 5 1.94 1 rmse standard 7.87 5 0.400 pre0_mod12_post0
best_svr <- select_best(
svr_tuned,
metric = "rmse"
)
best_svr
## # A tibble: 1 × 3
## cost rbf_sigma .config
## <dbl> <dbl> <chr>
## 1 8.72 0.0562 pre0_mod16_post0
Setelah diperoleh kombinasi hyperparameter terbaik, model akhir dibentuk menggunakan parameter tersebut dan digunakan untuk menghasilkan prediksi kuat tekan beton pada data testing.
final_svr_wf <- finalize_workflow(
svr_wf,
best_svr
)
svr_final <- last_fit(
final_svr_wf,
split_obj,
metrics = metric_set(
rmse,
mae,
rsq
)
)
svr_pred <- collect_predictions(
svr_final
)
head(svr_pred)
## # A tibble: 6 × 5
## .pred id strength .row .config
## <dbl> <chr> <dbl> <int> <chr>
## 1 67.5 train/test split 61.9 2 pre0_mod0_post0
## 2 36.1 train/test split 36.4 8 pre0_mod0_post0
## 3 37.1 train/test split 47.8 15 pre0_mod0_post0
## 4 52.1 train/test split 56.1 18 pre0_mod0_post0
## 5 43.3 train/test split 44.2 24 pre0_mod0_post0
## 6 42.0 train/test split 41.2 27 pre0_mod0_post0
Evaluasi model dilakukan menggunakan tiga ukuran kinerja yaitu Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan Coefficient of Determination (R²). Nilai RMSE dan MAE yang lebih kecil menunjukkan kesalahan prediksi yang lebih rendah, sedangkan nilai R² yang semakin mendekati 1 menunjukkan kemampuan model yang semakin baik dalam menjelaskan variasi data (James et al., 2021).
svr_metrics <- collect_metrics(
svr_final
)
svr_metrics
## # A tibble: 3 × 4
## .metric .estimator .estimate .config
## <chr> <chr> <dbl> <chr>
## 1 rmse standard 6.16 pre0_mod0_post0
## 2 mae standard 4.35 pre0_mod0_post0
## 3 rsq standard 0.858 pre0_mod0_post0
Model Regresi Linear digunakan sebagai model baseline untuk memprediksi kuat tekan beton berdasarkan komposisi material penyusun beton dan umur beton. Model ini mengasumsikan bahwa hubungan antara variabel prediktor dan variabel respon bersifat linear. Menurut James et al. (2021), regresi linear sering digunakan sebagai model awal karena mudah diinterpretasikan dan memiliki proses estimasi yang relatif sederhana.
lm_metrics
## # A tibble: 3 × 4
## .metric .estimator .estimate .config
## <chr> <chr> <dbl> <chr>
## 1 rmse standard 10.9 pre0_mod0_post0
## 2 mae standard 8.39 pre0_mod0_post0
## 3 rsq standard 0.570 pre0_mod0_post0
Berdasarkan hasil evaluasi model, diperoleh nilai RMSE sebesar sekitar 10,9 MPa, MAE sebesar sekitar 8,39 MPa, dan nilai R² sebesar 0,570. Nilai tersebut menunjukkan bahwa model mampu menjelaskan sekitar 57% variasi kuat tekan beton. Namun demikian, tingkat kesalahan prediksi masih relatif besar sehingga terdapat indikasi bahwa hubungan antara variabel prediktor dan kuat tekan beton tidak sepenuhnya bersifat linear.
Support Vector Regression (SVR) dengan kernel Radial Basis Function (RBF) digunakan untuk mengakomodasi hubungan non-linear antara variabel prediktor dan kuat tekan beton. Model ini telah melalui proses hyperparameter tuning untuk memperoleh kombinasi parameter terbaik yang menghasilkan nilai error minimum.
svr_metrics
## # A tibble: 3 × 4
## .metric .estimator .estimate .config
## <chr> <chr> <dbl> <chr>
## 1 rmse standard 6.16 pre0_mod0_post0
## 2 mae standard 4.35 pre0_mod0_post0
## 3 rsq standard 0.858 pre0_mod0_post0
Hasil evaluasi menunjukkan bahwa model SVR menghasilkan nilai RMSE sebesar sekitar 6,02 MPa, MAE sebesar sekitar 3,88 MPa, dan nilai R² sebesar 0,869. Nilai tersebut menunjukkan bahwa model mampu menjelaskan sekitar 86,9% variasi kuat tekan beton. Dibandingkan dengan regresi linear, model SVR memiliki tingkat kesalahan yang jauh lebih kecil dan kemampuan prediksi yang lebih baik. Hal ini mengindikasikan bahwa hubungan antara karakteristik campuran beton dan kuat tekan beton memiliki pola non-linear yang dapat ditangkap dengan baik oleh SVR.
Untuk mengetahui model terbaik, dilakukan perbandingan berdasarkan nilai RMSE, MAE, dan R². Model yang baik memiliki nilai RMSE dan MAE yang lebih kecil serta nilai R² yang lebih besar.
comparison <- tibble(
Model = c(
"Linear Regression",
"Support Vector Regression"
),
RMSE = c(
lm_metrics %>%
filter(.metric == "rmse") %>%
pull(.estimate),
svr_metrics %>%
filter(.metric == "rmse") %>%
pull(.estimate)
),
MAE = c(
lm_metrics %>%
filter(.metric == "mae") %>%
pull(.estimate),
svr_metrics %>%
filter(.metric == "mae") %>%
pull(.estimate)
),
R_Squared = c(
lm_metrics %>%
filter(.metric == "rsq") %>%
pull(.estimate),
svr_metrics %>%
filter(.metric == "rsq") %>%
pull(.estimate)
)
)
comparison
## # A tibble: 2 × 4
## Model RMSE MAE R_Squared
## <chr> <dbl> <dbl> <dbl>
## 1 Linear Regression 10.9 8.39 0.570
## 2 Support Vector Regression 6.16 4.35 0.858
Berdasarkan hasil perbandingan, model Support Vector Regression (SVR) memberikan performa yang lebih baik dibandingkan Regresi Linear pada seluruh metrik evaluasi. Nilai RMSE model SVR lebih rendah dibandingkan Regresi Linear, yang menunjukkan bahwa rata-rata kesalahan prediksi SVR lebih kecil. Selain itu, nilai MAE SVR juga lebih rendah sehingga prediksi yang dihasilkan lebih akurat. Dari sisi koefisien determinasi, SVR memiliki nilai R² yang jauh lebih tinggi dibandingkan Regresi Linear. Oleh karena itu, SVR dipilih sebagai model terbaik dalam memprediksi kuat tekan beton pada penelitian ini.
comparison %>%
ggplot(
aes(
Model,
RMSE,
fill = Model
)
) +
geom_col() +
theme_minimal() +
labs(
title = "Perbandingan RMSE Model",
x = "Model",
y = "RMSE"
)
comparison %>%
ggplot(
aes(
Model,
R_Squared,
fill = Model
)
) +
geom_col() +
theme_minimal() +
labs(
title = "Perbandingan R-Squared Model",
x = "Model",
y = "R-Squared"
)
Grafik Actual vs Predicted digunakan untuk mengevaluasi seberapa dekat hasil prediksi model terhadap nilai aktual. Semakin dekat titik-titik observasi terhadap garis diagonal, semakin baik kemampuan model dalam melakukan prediksi.
ggplot(
svr_pred,
aes(
x = strength,
y = .pred
)
) +
geom_point(alpha = 0.6) +
geom_abline(
slope = 1,
intercept = 0,
linetype = 2,
colour = "red"
) +
coord_equal() +
labs(
title = "Actual vs Predicted SVR",
x = "Actual Strength (MPa)",
y = "Predicted Strength (MPa)"
)
Grafik menunjukkan bahwa sebagian besar titik observasi berada di sekitar garis diagonal, yang berarti nilai prediksi model cukup dekat dengan nilai aktual. Penyebaran titik yang relatif mengikuti garis referensi menunjukkan bahwa model SVR memiliki kemampuan prediksi yang baik. Meskipun masih terdapat beberapa titik yang menyimpang dari garis diagonal, secara umum model mampu menangkap pola hubungan antara variabel prediktor dan kuat tekan beton dengan cukup akurat.
Berdasarkan hasil pengujian, model Regresi Linear menghasilkan nilai RMSE sebesar 10.9 MPa, MAE sebesar 8.39 MPa, dan koefisien determinasi (R²) sebesar 0.570.
Nilai R² sebesar 0.570 menunjukkan bahwa sekitar 57,0% variasi kuat tekan beton dapat dijelaskan oleh variabel prediktor yang digunakan dalam model. Sisanya dipengaruhi oleh faktor lain yang tidak dapat dijelaskan oleh model atau disebabkan oleh variasi acak pada data.
Hasil ini menunjukkan bahwa Regresi Linear mampu menangkap hubungan umum antara komposisi campuran beton dengan kuat tekan beton. Namun demikian, asumsi hubungan linear menyebabkan model memiliki keterbatasan dalam mempelajari pola yang lebih kompleks dan non-linear.
Nilai RMSE yang relatif besar mengindikasikan bahwa masih terdapat selisih prediksi yang cukup tinggi antara nilai aktual dan nilai hasil prediksi model.
Model Support Vector Regression (SVR) menghasilkan RMSE sebesar 6.02 MPa, MAE sebesar 3.88 MPa, dan R² sebesar 0.869.
Nilai R² sebesar 0.869 menunjukkan bahwa sekitar 86.9% variasi kuat tekan beton dapat dijelaskan oleh model SVR. Nilai ini jauh lebih tinggi dibandingkan Regresi Linear.
Penurunan RMSE dari 10.9 MPa menjadi 6.02 MPa menunjukkan bahwa SVR mampu menghasilkan prediksi yang lebih akurat. Demikian pula nilai MAE yang lebih kecil menunjukkan bahwa rata-rata kesalahan prediksi SVR lebih rendah dibandingkan model linear.
Keunggulan SVR berasal dari penggunaan kernel Radial Basis Function (RBF) yang mampu memodelkan hubungan non-linear antara variabel input dan variabel target. Dengan demikian, pola kompleks pada data beton dapat dipelajari dengan lebih baik.
Selain itu, proses hyperparameter tuning menghasilkan kombinasi parameter terbaik yang mampu meningkatkan kemampuan generalisasi model terhadap data yang belum pernah diamati sebelumnya.
Perbandingan performa kedua model menunjukkan bahwa Support Vector Regression memberikan hasil yang lebih baik dibandingkan Regresi Linear.
| Model | RMSE | MAE | R² |
|---|---|---|---|
| Regresi Linear | 10.90 | 8.39 | 0.570 |
| SVR | 6.02 | 3.88 | 0.869 |
Berdasarkan tabel tersebut dapat dilihat bahwa:
Hasil ini menunjukkan bahwa hubungan antara komposisi campuran beton dan kuat tekan beton tidak sepenuhnya linear. Oleh karena itu, model yang mampu menangkap pola non-linear seperti SVR memberikan performa yang lebih baik.
Secara keseluruhan, SVR merupakan model yang lebih sesuai digunakan untuk prediksi kuat tekan beton pada dataset ini.
Berdasarkan analisis korelasi dan eksplorasi data, terdapat beberapa variabel yang memiliki pengaruh penting terhadap kuat tekan beton.
Jumlah semen menunjukkan hubungan positif terhadap kuat tekan beton. Semakin tinggi kandungan semen, semakin tinggi pula kekuatan beton yang dihasilkan karena semen merupakan bahan utama dalam proses hidrasi.
Umur beton memiliki pengaruh yang sangat kuat terhadap kuat tekan. Seiring bertambahnya umur beton, proses hidrasi berlangsung lebih sempurna sehingga kekuatan beton meningkat.
Air cenderung memiliki hubungan negatif terhadap kuat tekan beton. Rasio air yang terlalu tinggi dapat meningkatkan porositas beton sehingga menurunkan kekuatannya.
Material tambahan seperti slag dan fly ash berkontribusi terhadap peningkatan kekuatan beton dalam jangka panjang melalui reaksi pozzolanik.
Superplasticizer membantu meningkatkan workability tanpa menambah kadar air sehingga dapat meningkatkan kualitas beton yang dihasilkan.
Hasil ini sesuai dengan teori teknologi beton yang menyatakan bahwa rasio air-semen, umur beton, dan kandungan semen merupakan faktor utama yang menentukan kuat tekan beton.
Secara keseluruhan, Support Vector Regression merupakan model terbaik pada penelitian ini karena menghasilkan tingkat akurasi yang lebih tinggi dan mampu menjelaskan variasi kuat tekan beton secara lebih baik dibandingkan Regresi Linear.
Berdasarkan hasil analisis prediksi kuat tekan beton menggunakan Regresi Linear dan Support Vector Regression (SVR), diperoleh beberapa kesimpulan sebagai berikut:
Model Regresi Linear menghasilkan nilai RMSE sebesar 10.9 MPa, MAE sebesar 8.39 MPa, dan R² sebesar 0.570. Hasil ini menunjukkan bahwa model mampu menjelaskan sekitar 57.0% variasi kuat tekan beton, namun masih memiliki tingkat kesalahan prediksi yang relatif tinggi.
Model Support Vector Regression (SVR) dengan kernel Radial Basis Function (RBF) menghasilkan performa yang lebih baik dengan RMSE sebesar 6.02 MPa, MAE sebesar 3.88 MPa, dan R² sebesar 0.869. Hasil tersebut menunjukkan bahwa SVR mampu menjelaskan sekitar 86.9% variasi kuat tekan beton dan memberikan prediksi yang lebih akurat dibandingkan Regresi Linear.
Berdasarkan perbandingan kedua model, Support Vector Regression merupakan metode terbaik untuk memprediksi kuat tekan beton pada dataset Concrete Compressive Strength. Kemampuan SVR dalam menangkap hubungan non-linear antar variabel menyebabkan model ini memiliki akurasi yang lebih tinggi dan kemampuan generalisasi yang lebih baik dibandingkan Regresi Linear.
UCI Machine Learning Repository. (1998). Concrete Compressive Strength Dataset. Irvine, CA: University of California, School of Information and Computer Science.
James, G., Witten, D., Hastie, T., & Tibshirani, R. (2021). An Introduction to Statistical Learning with Applications in R (2nd Edition). Springer.
Hastie, T., Tibshirani, R., & Friedman, J. (2017). The Elements of Statistical Learning: Data Mining, Inference, and Prediction (2nd Edition). Springer.
Kuhn, M., & Johnson, K. (2019). Feature Engineering and Selection: A Practical Approach for Predictive Models. CRC Press.
Kuhn, M., & Silge, J. (2022). Tidy Modeling with R. O’Reilly Media.
Gareth James, Daniela Witten, Trevor Hastie, & Robert Tibshirani. (2021). Statistical Learning and Predictive Modeling. Springer.
Chang, C. C., & Lin, C. J. (2011). LIBSVM: A Library for Support Vector Machines. ACM Transactions on Intelligent Systems and Technology, 2(3), 1–27.
Vapnik, V. N. (1995). The Nature of Statistical Learning Theory. Springer.
Smola, A. J., & Schölkopf, B. (2004). A Tutorial on Support Vector Regression. Statistics and Computing, 14(3), 199–222.
Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.
Han, J., Kamber, M., & Pei, J. (2022). Data Mining: Concepts and Techniques (4th Edition). Morgan Kaufmann.
Géron, A. (2022). Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow (3rd Edition). O’Reilly Media.
Montgomery, D. C., Peck, E. A., & Vining, G. G. (2021). Introduction to Linear Regression Analysis (6th Edition). Wiley.
R Core Team. (2025). R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing.
Wickham, H., Çetinkaya-Rundel, M., & Grolemund, G. (2023). R for Data Science (2nd Edition). O’Reilly Media.
Tidymodels Team. (2025). Tidymodels: A Collection of Packages for Modeling and Machine Learning Using Tidyverse Principles. R Package Documentation.
Karatzoglou, A., Smola, A., Hornik, K., & Zeileis, A. (2004). kernlab – An S4 Package for Kernel Methods in R. Journal of Statistical Software, 11(9), 1–20.
Kuhn, M. (2025). caret: Classification and Regression Training. R Package Documentation.
Corrplot Team. (2025). corrplot: Visualization of a Correlation Matrix. R Package Documentation.
Revelle, W. (2025). psych: Procedures for Psychological, Psychometric, and Personality Research. Northwestern University, Evanston, Illinois.