Permasalahan: Pada permasalahan ini, kita akan membandingkan dua model regresi — Regresi Linear dan Support Vector Regression (SVR) — dalam memprediksi popularitas konten AI berdasarkan tingkat kompleksitas konten tersebut. Dataset yang digunakan berisi informasi dari 100 konten AI, termasuk tingkat kompleksitas (skala 1-10) dan popularitas (jumlah views).

# Library yang dibutuhkan
library(e1071)
## Warning: package 'e1071' was built under R version 4.4.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
# Dataset popularitas konten ai
set.seed(42)
popularitas_data <- data.frame(
  Panjang = runif(150, 600, 900),  # Analog dengan Temp di file asli (skala disesuaikan)
  Interaksi = sample(10:200, 150, replace = TRUE)
)

# Tambahkan pola non-linear kuat
popularitas_data$Popularitas <- with(popularitas_data, 
  50 + 0.3*Panjang + 12*sin(Panjang/50) +  # Non-linearitas dominan
  0.1*Interaksi + rnorm(150, sd=2)          # Noise kecil
)

# Membersihkan data
data_clean <- na.omit(popularitas_data)

# Pembagian data training dan testing
set.seed(42)
train_index <- sample(1:nrow(data_clean), 0.7*nrow(data_clean))
train_data <- data_clean[train_index, ]
test_data <- data_clean[-train_index, ]

# Model regresi linear
lm_model <- lm(Popularitas ~ Panjang, data = train_data)
lm_pred <- predict(lm_model, test_data)

# Model SVR
svr_model <- svm(
  Popularitas ~ Panjang,
  data = train_data,
  type = "eps-regression",
  kernel = "radial",
  gamma = 0.1,    # Optimal untuk non-linearitas
  cost = 12,       # Nilai tinggi untuk fitting ketat
  epsilon = 0.01   # Margin error kecil
)
svr_pred <- predict(svr_model, test_data)

# Visualisasi hasil
ggplot() +
  geom_point(aes(x = test_data$Panjang, y = test_data$Popularitas), 
             color = "black", size = 2) +
  geom_line(aes(x = test_data$Panjang, y = lm_pred), 
            color = "blue", linetype = "dashed", linewidth = 1) +
  geom_line(aes(x = test_data$Panjang, y = svr_pred), 
            color = "red", linetype = "solid", linewidth = 1) +
  labs(
    title = "Perbandingan SVR vs Regresi Linear: Prediksi Popularitas Konten AI",
    x = "Panjang Konten (600-900)",
    y = "Popularitas"
  ) +
  theme_minimal() +
  scale_x_continuous(breaks = seq(600, 900, by = 50))

# Menghitung MSE
lm_mse <- round(mean((test_data$Popularitas - lm_pred)^2), 2)
svr_mse <- round(mean((test_data$Popularitas - svr_pred)^2), 2)

# Print hasil MSE)
print(paste("MSE Regresi Linear:", lm_mse))
## [1] "MSE Regresi Linear: 81.14"
print(paste("MSE SVR:", svr_mse))
## [1] "MSE SVR: 44.25"
View(popularitas_data)  # Tampilkan dalam tampilan tabel
head(popularitas_data)  # Tampilkan 6 baris pertama
##    Panjang Interaksi Popularitas
## 1 874.4418        51    302.7984
## 2 881.1226       106    314.9246
## 3 685.8419       194    287.0744
## 4 849.1343       166    309.8497
## 5 792.5237        34    289.7557
## 6 755.7288       124    294.6605
summary(popularitas_data)  # Statistik deskriptif
##     Panjang        Interaksi      Popularitas   
##  Min.   :600.1   Min.   : 10.0   Min.   :229.3  
##  1st Qu.:686.4   1st Qu.: 52.0   1st Qu.:278.2  
##  Median :773.0   Median :105.0   Median :293.5  
##  Mean   :761.3   Mean   :105.2   Mean   :288.0  
##  3rd Qu.:831.9   3rd Qu.:160.5   3rd Qu.:303.9  
##  Max.   :896.7   Max.   :200.0   Max.   :324.7

Interpretasi Hasil: Visualisasi: - Titik-titik hitam = data aktual. - Garis biru putus-putus = hasil regresi linear. - Garis merah solid = hasil SVR. - Kalau pola data agak “membelok”, SVR biasanya bisa mengikuti lekukannya lebih baik. MSE: - Menunjukkan rata-rata kesalahan kuadrat. Makin kecil nilainya, makin bagus prediksinya. - Berdasarkan hasil yang diperoleh, MSE Regresi Linear 81.14 > MSE SVR 44.25 sehingga dapat disimpulkan untuk data(airquality) SVR adalah metode yang lebih baik daripada regresi.