# Dasar Teori

## Memahami Regresi

Dalam dunia analisis statistik dan pembelajaran mesin, regresi adalah suatu konsep yang memungkinkan kita untuk memahami hubungan antara variabel independen (faktor-faktor yang memengaruhi) dan variabel dependen (variabel yang ingin diprediksi). Dengan kata lain, regresi memungkinkan kita untuk menjelaskan atau memprediksi nilai variabel dependen berdasarkan nilai-nilai variabel independen yang kita miliki.

Misalnya, kita dapat menggunakan regresi untuk menjawab pertanyaan seperti, "Bagaimana pengeluaran iklan memengaruhi penjualan produk?" atau "Bagaimana pengalaman kerja seseorang berhubungan dengan gaji mereka?" Dalam hal ini, pengeluaran iklan atau pengalaman kerja adalah variabel independen yang kita anggap dapat memengaruhi penjualan atau gaji, yang merupakan variabel dependen.

Regresi adalah alat yang penting dalam ilmu data karena memungkinkan kita untuk menganalisis hubungan antar variabel, membuat prediksi berdasarkan data historis, dan mengidentifikasi faktor-faktor yang memiliki dampak signifikan pada variabel yang ingin diprediksi. Dalam mata kuliah ini, Anda akan memahami lebih dalam konsep dasar regresi dan berbagai teknik regresi yang digunakan dalam analisis data modern.

Macam-Macam Model Regresi:

* Terdapat berbagai jenis regresi, termasuk:
  * **Regresi Linier Sederhana**: Digunakan ketika hanya ada satu variabel independen.
  * **Regresi Linier Berganda**: Digunakan ketika ada beberapa variabel independen.
  * **Regresi Non-Linier**: Digunakan ketika hubungan antara variabel independen dan dependen tidak linier.

Penerapan Regresi dalam Berbagai Bidang:

* Regresi digunakan dalam berbagai bidang, termasuk:
  * **Ekonomi**: Untuk memahami faktor-faktor yang memengaruhi penjualan atau harga.
  * **Kesehatan**: Untuk memprediksi parameter medis berdasarkan faktor-faktor tertentu.
  * **Sains Sosial**: Untuk menganalisis perilaku manusia.
  * **Ilmu Lingkungan**: Untuk memahami dampak variabel lingkungan.

Salah satu metode yang dapat digunakan untuk melakukan prediksi/perkiraan adalah linear regression. Linear Regression merupakan model yang dapat digunakan untuk memodelkan hubungan antara dua buah variable dengan membuat persamaan linear pada data yang diamati. Variable yang digunakan pada linear regression adalah satu atau lebih variable independent/penjelas/bebas (X) dan variable dependent/respon/tidak bebas (Y). Pada Materi ini akan dibahas model regresi linear yaitu **Simple Linear Regression dan Multiple Linear Regression** serta **Regresi Non-Linier dan SVR**

### Perbedaan Regresi & Klasifikasi

Pemahaman yang baik tentang perbedaan antara regresi dan klasifikasi memiliki implikasi penting dalam pemilihan model dan pendekatan yang tepat dalam menyelesaikan masalah analisis data. Ketika kita berhadapan dengan data dan permasalahan yang berbeda, kita harus bisa memutuskan apakah kita harus menggunakan teknik regresi atau klasifikasi untuk mencapai tujuan analisis kita.

Dalam konteks pembelajaran mesin, pemahaman perbedaan antara regresi dan klasifikasi adalah fondasi penting dalam membangun keahlian dalam mengelola dan memproses data serta dalam mengembangkan model yang tepat untuk setiap tipe masalah. Sekarang, mari kita jelaskan lebih lanjut perbedaan antara keduanya.

Perbedaan utama antara regresi dan klasifikasi adalah jenis variabel dependen yang ingin diprediksi:

1. **Regresi**:
   * **Variabel Dependennya adalah Kuantitatif**: Regresi digunakan ketika variabel dependen adalah kuantitatif atau berkelanjutan. Ini berarti kita ingin memprediksi nilai yang dapat diukur secara numerik.
   * **Contoh**: Memprediksi harga rumah, gaji seseorang, suhu, atau nilai ujian adalah contoh dari masalah regresi. Dalam hal ini, hasil yang ingin kita prediksi adalah angka.
2. **Klasifikasi**:
   * **Variabel Dependennya adalah Kualitatif**: Klasifikasi digunakan ketika variabel dependen adalah kualitatif atau kategorikal. Ini berarti kita ingin mengelompokkan atau mengklasifikasikan data ke dalam kategori tertentu.
   * **Contoh**: Mengklasifikasikan email sebagai spam atau bukan spam, mengidentifikasi jenis bunga berdasarkan fitur-fiturnya, atau mengklasifikasikan gambar sebagai kucing atau anjing adalah contoh masalah klasifikasi. Dalam hal ini, hasil yang ingin kita prediksi adalah kategori atau label.

Selain perbedaan ini, ada juga perbedaan dalam algoritma dan metode yang digunakan dalam regresi dan klasifikasi. Misalnya, dalam regresi, kita menggunakan algoritma seperti Regresi Linier untuk memprediksi nilai numerik, sementara dalam klasifikasi, kita menggunakan algoritma seperti Naive Bayes, Decision Trees, atau Support Vector Machines untuk mengklasifikasikan data ke dalam kategori.

Jadi, inti perbedaan antara regresi dan klasifikasi adalah jenis output yang ingin diprediksi: **nilai kuantitatif untuk regresi** dan l**abel kualitatif atau kategori untuk klasifikasi**. Kasus Penggunaan Regresi

### Contoh Kasus Penggunaan Regresi

Regresi adalah salah satu konsep dasar dalam statistik dan pembelajaran mesin yang digunakan untuk memahami hubungan antara satu atau lebih variabel independen (faktor-faktor yang memengaruhi) dan variabel dependen (variabel yang ingin diprediksi). Dalam regresi, kita mencoba untuk menjelaskan bagaimana perubahan dalam satu atau lebih variabel independen dapat mempengaruhi perubahan dalam variabel dependen.

Mari kita ilustrasikan dengan contoh sederhana:

Bayangkan Anda adalah seorang guru yang ingin memahami bagaimana jumlah waktu belajar siswa memengaruhi nilai ujian mereka. Anda memiliki data yang mencatat berapa **jam belajar (variabel independen)** dan **nilai ujian siswa (variabel dependen)** untuk sekelompok siswa. Sekarang, pertanyaannya adalah, **apakah ada hubungan antara jumlah jam belajar dan nilai ujian?** Dengan kata lain, **apakah Anda dapat memprediksi nilai ujian siswa berdasarkan berapa banyak waktu yang mereka habiskan untuk belajar?**

Untuk menjawab pertanyaan ini, Anda dapat menggunakan konsep regresi. Anda dapat membangun model regresi sederhana yang menggambarkan hubungan antara variabel independen (jam belajar) dan variabel dependen (nilai ujian). Model ini bisa berupa garis lurus yang mencoba "mengenai" data siswa tersebut.

Misalkan setelah menganalisis data, Anda menemukan bahwa ada hubungan positif antara jumlah jam belajar dan nilai ujian, yang berarti semakin banyak waktu yang siswa habiskan untuk belajar, semakin tinggi nilai ujian mereka. Ini adalah contoh yang sederhana dari bagaimana regresi digunakan untuk menjelaskan dan memprediksi hubungan antara variabel-variabel.

Dengan model regresi yang telah Anda bangun, Anda dapat memasukkan jumlah jam belajar siswa sebagai input dan memperoleh perkiraan nilai ujian sebagai output. Dengan demikian, Anda dapat menggunakan regresi untuk membuat prediksi yang bermanfaat dan mengambil keputusan berdasarkan pemahaman tentang hubungan antara variabel tersebut.

## Simple Linier Regression

Simple Linear Regression (Regresi Linier Sederhana) adalah suatu teknik analisis statistik yang digunakan untuk memahami dan memodelkan hubungan linier antara dua variabel: variabel independen (X) dan variabel dependen (Y). Teknik ini bermanfaat ketika kita ingin memprediksi atau menjelaskan bagaimana perubahan dalam variabel independen dapat memengaruhi variabel dependen.

Simple linear regression memodelkan hubungan antara satu variable independent(X) dengan satu variable dependent(Y). Hubungan linear dalam bentuk persamaan garis lurus antara dua variable ini dapat dirumuskan sebagai berikut ini:

$$Y = β₀ + β₁X$$

* Y adalah variabel dependen yang ingin diprediksi atau dimengerti.
* X adalah variabel independen yang digunakan untuk melakukan prediksi atau menjelaskan variasi dalam Y.
* $$β₀$$ adalah intercept (konstanta), yaitu nilai Y ketika X sama dengan 0.
* $$β₁$$ adalah koefisien regresi, yang mengukur sejauh mana perubahan dalam X memengaruhi perubahan dalam Y. Ini adalah kemiringan (slope) dari garis regresi.

Dalam rumus ini, kita menyederhanakan model menjadi hubungan linier antara X dan Y yang membantu kita memahami dan memprediksi variabel dependen berdasarkan variabel independen.

### **Estimasi Parameter Model Simple Linear Regression**

Dalam Simple Linear Regression, kita perlu mengestimasi dua parameter utama: intercept $$β₀$$ dan koefisien regresi $$β₁$$. Berikut adalah bagaimana kita dapat mengestimasi parameter-parameter ini:

1. **Intercept** $$β₀$$: intercept $$β₀$$ adalah nilai dari Y ketika X sama dengan 0. Untuk mengestimasinya, kita dapat menggunakan rumus berikut:

   $$\beta\_0 = \overline{Y} - \beta\_1 \cdot \overline{X}$$

   Di mana $$\overline{Y}$$ adalah rata-rata dari variabel dependen (Y), $$\overline{X}$$ adalah rata-rata dari variabel independen (X), dan $$\beta\_1$$ adalah koefisien regresi.
2. **Koefisien Regresi** $$β₁$$: Koefisien regresi $$(\beta\_1)$$ mengukur sejauh mana perubahan dalam X memengaruhi perubahan dalam Y. Untuk mengestimasinya, kita dapat menggunakan rumus berikut:

   $$\[\beta\_1 = \frac{\sum\_{i=1}^{n} (X\_i - \overline{X})(Y\_i - \overline{Y})}{\sum\_{i=1}^{n} (X\_i - \overline{X})^2}]$$

   Di mana $$X\_i$$ dan $$Y\_i$$ adalah nilai-nilai individu dari X dan Y dalam dataset, $$\overline{X}$$ adalah rata-rata dari X, $$\overline{Y}$$ adalah rata-rata dari Y, dan $$n$$ adalah jumlah pengamatan.

### **Contoh Penerapan: Hubungan Diameter Pizza dengan Harga Pizza**

Misalkan kita ingin memahami hubungan antara diameter pizza (dalam inci) dan harga pizza (dalam dolar). Kita mengumpulkan data dari beberapa toko pizza dan memutuskan untuk menggunakan Simple Linear Regression untuk memodelkan hubungan ini. Berikut adalah data yang kita miliki:

| Diameter Pizza (X) (inci) | Harga Pizza (Y) (dolar) |
| ------------------------- | ----------------------- |
| 6                         | 7                       |
| 8                         | 9                       |
| 10                        | 13                      |
| 14                        | 17.5                    |
| 18                        | 18                      |

#### **Langkah-langkah Estimasi Parameter & Prediksi Harga:**

1. Hitung rata-rata dari Diameter Pizza $$\overline{X}$$ dan Harga Pizza $$\overline{Y}$$.

   $$\overline{X} = \frac{6 + 8 + 10 + 14 + 18}{5} = 11.2$$ inci\
   $$\overline{Y} = \frac{7 + 9 + 13 + 17.5 + 18}{5} = 12.7$$ dollar

2. Hitung koefisien regresi $$\beta\_1$$ menggunakan rumus di atas dengan menggunakan nilai-nilai dari X dan Y dalam dataset, Rumus untuk menghitung $$\beta\_1$$ adalah:\\

   $$\beta\_1 = \frac{\sum\_{i=1}^{n} (X\_i - \overline{X})(Y\_i - \overline{Y})}{\sum\_{i=1}^{n} (X\_i - \overline{X})^2}$$\\

   Kita memiliki data sebagai berikut:

   * X (Diameter Pizza) dalam inci: \[6, 8, 10, 14, 18]
   * Y (Harga Pizza) dalam dolar: \[7, 9, 13, 17.5, 18]

   Rata-rata $$\overline{X} = 11.2$$ inci Rata-rata $$\overline{Y} = 12.7$$ dolar

   Mari kita hitung $$\beta\_1$$: &#x20;

   $$\begin{align\*} \beta\_1 & = \frac{(6 - 11.2)(7 - 12.7) + (8 - 11.2)(9 - 12.7) + (10 - 11.2)(13 - 12.7) + (14 - 11.2)(17.5 - 12.7) + (18 - 11.2)(18 - 12.7)}{(6 - 11.2)^2 + (8 - 11.2)^2 + (10 - 11.2)^2 + (14 - 11.2)^2 + (18 - 11.2)^2} \ & = \frac{(-5.2)(-5.7) + (-3.2)(-3.7) + (-1.2)(0.3) + (2.8)(4.8) + (6.8)(5.3)}{(-5.2)^2 + (-3.2)^2 + (-1.2)^2 + (2.8)^2 + (6.8)^2} \ & = \frac{29.64 + 11.84 + 0.36 + 13.44 + 36.04}{27.04 + 10.24 + 1.44 + 7.84 + 46.24} \ & = \frac{91.32}{93.8} \ & \approx 0.974 \end{align\*} \`$$$$Jadi, \beta\_1 \approx 0.974$$\\

3. Setelah mendapatkan nilai $$\beta\_1$$, kita dapat mengestimasi intercept $$\beta\_0$$ menggunakan rumus berikut\
   $$\beta\_0 = \overline{Y} - \beta\_1 \cdot \overline{X}$$&#x20;

   Kita sudah memiliki $$\beta\_1 \approx 0.974, \overline{X} = 11.2$$, dan $$\overline{Y} = 12.7$$.

   Mari kita hitung $$\beta\_0$$: \\

   $$\begin{align\*} \beta\_0 & = 12.7 - 0.974 \cdot 11.2 \ & \approx 12.7 - 10.88 \ & \approx 1.82 \text{ dolar} \end{align\*} $$\\

   Jadi, hasil estimasi parameter untuk model Simple Linear Regression antara diameter pizza (X) dan harga pizza (Y) adalah:

   * $$\beta\_0 \approx 1.82$$ (intercept)&#x20;
   * $$\beta\_1 \approx 0.974$$ (koefisien regresi)

   Setelah estimasi ini selesai, kita memiliki model Simple Linear Regression yang memungkinkan kita untuk memprediksi harga pizza berdasarkan diameter pizza. Misalnya, jika diameter pizza adalah 12 inci, kita dapat menggunakan model ini untuk memprediksi harga pizza yang sesuai berdasarkan estimasi $$\beta\_0$$ dan $$\beta\_1$$

4. Dengan nilai estimasi parameter $$\beta\_0 \approx 1.82$$ (intercept) dan $$\beta\_1 \approx 0.974$$ (koefisien regresi), kita dapat membentuk model Simple Linear Regression antara diameter pizza (X) dan harga pizza (Y) sebagai berikut:

   $$HargaPizza = 1.82 + 0.974 \times DiameterPizza$$

   Dalam model ini:

   * (HargaPizza) adalah harga pizza yang ingin diprediksi.
   * (DiameterPizza) adalah diameter pizza dalam inci yang digunakan sebagai variabel independen.

   Dengan model ini, kita dapat memasukkan nilai (**DiameterPizza**) untuk memprediksi (**HargaPizza**). Ini memungkinkan kita untuk memahami bagaimana perubahan dalam diameter pizza memengaruhi harga pizza secara linier.\\

   Sebagai contoh, jika kita memiliki pizza dengan diameter 12 inci, kita dapat menggunakan model ini untuk memprediksi harganya:

   $$HargaPizza = 1.82 + 0.974 \times 12$$

   $$HargaPizza \approx 14.58 \text{ dolar}$$\\

   Jadi, menurut model ini, pizza dengan diameter 12 inci kemungkinan memiliki harga sekitar **14.58 dolar**. Model ini dapat digunakan untuk memprediksi harga pizza berdasarkan diameter yang berbeda.

jika di visualisasikan ke dalam grafik menggunakan code python berikut maka didapatkan hasil grafik Simple Linier Regression sebagaimana pada gambar 3.1

```python
import numpy as np
import matplotlib.pyplot as plt

# Data
diameter_pizza = np.array([6, 8, 10, 14, 18])
harga_pizza = np.array([7, 9, 13, 17.5, 18])

# Estimasi parameter
beta_0 = 1.82
beta_1 = 0.974

# Model regresi
harga_prediksi = beta_0 + beta_1 * diameter_pizza

# Membuat plot
plt.scatter(diameter_pizza, harga_pizza, label='Data Asli')
plt.plot(diameter_pizza, harga_prediksi, color='red', label='Model Regresi')
plt.xlabel('Diameter Pizza (inci)')
plt.ylabel('Harga Pizza (dolar)')
plt.title('Simple Linear Regression: Hubungan Diameter Pizza dengan Harga Pizza')
plt.legend()
plt.grid(True)
plt.show()

```

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2Fvu9j86EE8dETP30AU3iw%2FGb1%20JS-03.png?alt=media&#x26;token=b7459312-0334-470a-bb2a-258dd013400e" alt=""><figcaption><p>Gambar 3.1 Korelasi Diameter Pizza dengan Harga Pizza</p></figcaption></figure>

Berdasarkan gambar dapat dilihat bahwa ada hubungan antara diameter pizza dan harganya, Ketika diameter pizza bertambah maka harga dari pizza juga akan naik.

Pada simple linear regression mengasumsikan bahwa ada hubungan linier antara independent / explanatory variabel dengan dependent variabel melalui garis linier yang disebut sebagai hyperplane. Pada gambar 3.1 hyperplane divisualisasikan dengan warna merah.

### Evaluasi Model dengan Cost Function

Garis regresi yang dihasilkan oleh beberapa nilai parameter (α dan β) yang berbeda diplot pada gambar 3.2. Berbeda nilai α dan β maka akan menghasilkan garis regresi yang berbeda. Bagaimana menentukan parameter yang tepat yang menghasilkan garis regresi yang paling sesuai?

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2FqaeUjNh1HXM0w6rAJ3OY%2Fgb2%203.2.png?alt=media&#x26;token=570654c3-8315-4251-b90b-1c4bf1ec521e" alt=""><figcaption><p>Gambar 3.2</p></figcaption></figure>

Untuk meminimalkan kesalahan prediksi dapat dihitung terlebih dahulu **cost function** dihasilkan oleh model yang telah dibuat. Cost function digunakan untuk mendefinisikan dan mengukur kesalahan model, atau ukuran seberapa salah model dalam hal kemampuannya untuk memperkirakan hubungan antara X dan y. Perbedaan antara harga yang diprediksi oleh model dan harga pizza yang sebenarnya (actual data) dalam data training disebut sebagai **residual**. Sedangkan Perbedaan antara nilai yang diprediksi dan harga pizza yang sebenarnya (actual data) dalam data testing disebut sebagai kesalahan prediksi **(prediction errors)**. Perhatikan gambar 3.3 dibawah ini, garis hijau adalah garis regresi yang dihasilkan dari data training. Titik-titik hitam adalah data actual sehingga garis merah vertical merupakan residual perbedaan antara nilai yang diprediksi dan harga pizza yang sebenarnya (actual data) pada data training.

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2FZ58UH5ASnOPn74XhFKGH%2Fgb3%203.3.png?alt=media&#x26;token=6dbaffba-c6fd-490b-ac0f-fe8f154139f5" alt=""><figcaption><p>Gamabr 3.3</p></figcaption></figure>

Model terbaik dapat dihasilkan dengan meminimalkan sum of the residual dalam artian bahwa model yang dibuat tepat jika nilai yang diprediksi mendekati nilai actual untuk keseluruhan data training. Ukuran mengukur ketepatan model yang dibuat dapat menggunakan cost function yaitu Residual sum of squares (RSS). RRS merupakan salah satu cost function yang dapat digunkan untuk mengukur kesesuaian model yang telah dibuat dengan cara menjumlahkan kuadrat residual untuk semua data training. RSS dihitung dengan rumus dalam persamaan berikut, di mana yi adalah nilai yang diamati dan f (xi) adalah nilai prediksi:

RSS (Residual Sum of Squares) adalah salah satu metrik evaluasi yang digunakan dalam Simple Linear Regression untuk mengukur seberapa baik model regresi sesuai dengan data observasi yang sebenarnya. RSS mengukur jumlah kuadrat dari selisih antara nilai sebenarnya (Y) dan nilai yang diprediksi oleh model (Y prediksi). Berikut adalah rumus RSS:

$$RSS = \sum\_{i=1}^{n} (Y\_i - \hat{Y}\_i)^2$$

Di mana:

* $$n$$ adalah jumlah pengamatan.
* $$Y\_i$$ adalah nilai sebenarnya dari variabel dependen (harga pizza) untuk pengamatan ke-$$i$$.
* $$\hat{Y}\_i$$ adalah nilai yang diprediksi oleh model regresi (harga pizza yang diprediksi) untuk pengamatan ke-$$i$$.

RSS mengukur seberapa besar kesalahan prediksi model terhadap data sebenarnya. Semakin kecil nilai RSS, semakin baik model kita dalam menjelaskan variasi dalam data.

Berikut adalah contoh cara menghitung RSS menggunakan Python beserta output hasilnya:

```python
import numpy as np

# Data
harga_pizza_asli = np.array([7, 9, 13, 17.5, 18])
harga_pizza_prediksi = np.array([1.82 + 0.974 * 6, 1.82 + 0.974 * 8, 1.82 + 0.974 * 10, 1.82 + 0.974 * 14, 1.82 + 0.974 * 18])

# Menghitung RSS
RSS = np.sum((harga_pizza_asli - harga_pizza_prediksi) ** 2)
print("RSS:", RSS)
```

```
RSS: 8.89488
```

Dalam contoh ini, kita memiliki data harga pizza yang sebenarnya `harga_pizza_asli` dan harga pizza yang diprediksi oleh model `harga_pizza_prediksi`. Semakin kecil nilai RSS, semakin baik model regresi dalam memprediksi data sebenarnya. RSS adalah salah satu metrik evaluasi yang digunakan untuk mengevaluasi kualitas model regresi.

### Evaluasi Model Dengan R-squared (R2)

Evaluasi model dengan menggunakan R-squared $$R^2$$ adalah salah satu cara yang lebih umum digunakan untuk mengukur seberapa baik model regresi cocok dengan data.  $$R^2$$ mengukur sejauh mana variasi dalam variabel dependen (Y) yang dapat dijelaskan oleh variabel independen (X) dalam model. Semakin tinggi  $$R^2$$, semakin baik model dalam menjelaskan variasi dalam data.

&#x20;$$R^2$$ memiliki nilai antara 0 hingga 1, dengan nilai 1 menunjukkan bahwa model cocok sempurna dengan data, dan nilai 0 menunjukkan bahwa model tidak menjelaskan variasi sama sekali. Secara matematis,  $$R^2$$ dapat dihitung dengan rumus berikut:

$$R^2 = 1 - \frac{RSS}{TSS}$$

Di mana:

* (`RSS`) adalah Residual Sum of Squares, yang telah dijelaskan sebelumnya.
* (`TSS`) adalah Total Sum of Squares, yang merupakan jumlah kuadrat deviasi nilai sebenarnya dari rata-rata variabel dependen.

Berikut adalah contoh penggunaan Python untuk menghitung $$R^2$$ dari model regresi yang telah kita estimasi sebelumnya dan melakukan prediksi dapat menggunakan metod predict. Nilai **R-squared** $$R^2$$ mendekati 1 maka dianggap model dapat memprediksi dengan baik. Selain menggunakan **R-squared** $$R^2$$ maka juga dapat digunakan matrix `MAE` dan `MSE`.

```python
import numpy as np
from sklearn.metrics import mean_absolute_error, mean_squared_error

# Data
harga_pizza_asli = np.array([7, 9, 13, 17.5, 18])
diameter_pizza = np.array([6, 8, 10, 14, 18])

# Estimasi parameter
beta_0 = 1.82
beta_1 = 0.974

# Prediksi harga pizza
harga_pizza_prediksi = beta_0 + beta_1 * diameter_pizza

# Menghitung RSS (Residual Sum of Squares)
RSS = np.sum((harga_pizza_asli - harga_pizza_prediksi) ** 2)

# Menghitung TSS (Total Sum of Squares)
TSS = np.sum((harga_pizza_asli - np.mean(harga_pizza_asli)) ** 2)

# Menghitung R-squared (R2)
R2 = 1 - (RSS / TSS)

# Menampilkan predicted price in dollar
print("Predicted Price in Dollar:", harga_pizza_prediksi)

# Menghitung MAE (Mean Absolute Error)
mae = mean_absolute_error(harga_pizza_asli, harga_pizza_prediksi)

# Menghitung MSE (Mean Squared Error)
mse = mean_squared_error(harga_pizza_asli, harga_pizza_prediksi)

print("Residual Sum of Squares (RSS)", RSS)
print("Total Sum of Squares (TSS)", TSS)
print("R-squared (R2):", R2)
print("MAE (Mean Absolute Error):", mae)
print("MSE (Mean Squared Error):", mse)
```

Output

```
Predicted Price in Dollar: [ 7.664  9.612 11.56  15.456 19.352]
Residual Sum of Squares (RSS) 8.89488
Total Sum of Squares (TSS) 97.19999999999999
R-squared (R2): 0.9084888888888889
MAE (Mean Absolute Error): 1.2224
MSE (Mean Squared Error): 1.7789760000000001
```

## Multiple Linear Regression

Multiple linear Regression merupakan turunan dari simple linear regression, multiple linear juga menghasilkan prediksi dalam bentuk angka continyu, perbedaan antara simple dan multiple adalah pada data variable independent/penjelas/bebas (X) dimana dalam multiple linear terdapat beberapa fitur / variable independent. Hubungan linear antara variable independent dan variable dependent pada multiple regression ini dapat dirumuskan sebagai berikut ini&#x20;

$$y=α+β\_1 x\_1+β\_2 x\_2+⋯+β\_n x\_n$$\
$$Y=βX$$\\

Pada persamaan diatas dapat dilihat bahwa pada multiple linear regression terdapat lebih dari variable independent sehingga parameter beta jumlahnya akan menyesuaikan dengan jumlah variable independent, dimana :&#x20;

* 𝑦 adalah vektor kolom nilai variabel respon/dependent.
* 𝛼 adalah nilai intercept
* 𝛽 adalah vektor kemiringan (slope)
* *x* adalah matriks berdimensi 𝒎 kali 𝒏 dari nilai variabel independent pada data training
* 𝑚 adalah jumlah data training.
* 𝑛 adalah jumlah fitur.

Sama halnya dengan simple linear regression, tantangan pada multiple linear regression adalah penetuan parameter (α dan β). Penentuan parameter α dan β dengan menggunakan metode least square dengan menggunakan dua variable independent. Tabel berikut adalah Contoh data training dan data testing untuk multiple linear regression dengan menggunakan dua buah fitur.

**Data Training**

| DiameterPizza (inci) | JumlahTopping | HargaPizza (dolar) |
| -------------------- | ------------- | ------------------ |
| 6                    | 2             | 7                  |
| 8                    | 1             | 9                  |
| 10                   | 0             | 13                 |
| 14                   | 2             | 17.5               |
| 18                   | 3             | 18                 |

**Data Testing**

| DiameterPizza (inci) | JumlahTopping | HargaPizza (dolar) |
| -------------------- | ------------- | ------------------ |
| 8                    | 2             | 11                 |
| 9                    | 0             | 8.5                |
| 11                   | 2             | 15                 |
| 16                   | 2             | 18                 |
| 12                   | 0             | 11                 |

Selanjutnya kita buat kode program untuk melakukan prediksi mengguakan data training dan data testing diatas sebagai berikut:

```python
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score

# Data training
X_train = np.array([
    [6, 2],
    [8, 1],
    [10, 0],
    [14, 2],
    [18, 3]
])
y_train = np.array([7, 9, 13, 17.5, 18])

# Data testing
X_test = np.array([
    [8, 2],
    [9, 0],
    [11, 2],
    [16, 2],
    [12, 0]
])
y_test = np.array([11, 8.5, 15, 18, 11])

# Inisialisasi model Linear Regression
model = LinearRegression()

# Melatih model dengan data training
model.fit(X_train, y_train)

# Melakukan prediksi dengan data testing
y_pred = model.predict(X_test)

# Menghitung R-squared (R2) dari model terlatih
r2 = r2_score(y_test, y_pred)

# Menampilkan hasil prediksi dan nilai target
print("Hasil Prediksi Harga Pizza:")
for i in range(len(y_pred)):
    print(f"Data Test {i + 1}: Prediksi ${y_pred[i]:.2f}, Target ${y_test[i]:.2f}")

# Menampilkan nilai R-squared
print(f"\nR-squared (R2): {r2:.2f}")

```

dan didapatkan hasil sebagi berikut

```
Hasil Prediksi Harga Pizza:
Data Test 1: Prediksi $9.00, Target $11.00
Data Test 2: Prediksi $11.97, Target $8.50
Data Test 3: Prediksi $12.31, Target $15.00
Data Test 4: Prediksi $17.81, Target $18.00
Data Test 5: Prediksi $15.27, Target $11.00

R-squared (R2): 0.27
```

dari hasil tersebut maka didapatkan beberapa point, yaitu:

1. **Hasil Prediksi Harga Pizza**: Bagian ini menampilkan hasil prediksi harga pizza untuk setiap data testing. Terdapat lima data testing (Data Test 1 hingga Data Test 5). Di samping setiap data testing, terdapat dua angka: prediksi harga pizza (Prediksi) dan harga pizza yang sebenarnya (Target). Misalnya, pada Data Test 1, model memprediksi harga pizza sebesar $9.00, sementara harga pizza yang sebenarnya adalah $11.00.
2. **R-squared** $$R^2$$: Nilai $$R^2$$**(R-squared)** adalah metrik evaluasi untuk mengukur sejauh mana model Linear Regression yang telah dilatih cocok dengan data. Nilai $$R^2$$ berkisar antara 0 hingga 1. Dalam kasus ini, nilai $$R^2$$ sebesar 0.27 menunjukkan bahwa model yang telah dilatih mampu menjelaskan sekitar 27% dari variasi dalam data testing. Nilai yang lebih tinggi dari $$R^2$$ akan menunjukkan bahwa model memiliki kemampuan yang lebih baik dalam menjelaskan variasi data.

Poin utama dari hasil ini adalah bahwa model Linear Regression yang telah dilatih memiliki $$R^2$$ sebesar 0.27, yang berarti model ini cukup baik dalam menjelaskan variasi dalam data, meskipun masih ada variasi yang tidak dapat dijelaskan oleh model. Semakin tinggi nilai $$R^2$$, menunjukan bahawa semakin baik model.

## Regresi Polynomial

**Regresi Polynomial** adalah bentuk yang lebih kompleks dari regresi linear yang digunakan untuk memodelkan hubungan antara variabel independen (prediktor) dan variabel dependen (yang ingin diprediksi) dengan menggunakan polinomial sebagai fungsi pendugaan. Regresi polinomial memungkinkan kita untuk menangkap hubungan yang lebih kompleks antara variabel-variabel ini daripada regresi linear sederhana yang hanya menggunakan garis lurus.

Fungsi regresi polinomial memiliki bentuk berikut:

$$Y = \beta\_0 + \beta\_1X + \beta\_2X^2 + \beta\_3X^3 + \ldots + \beta\_nX^n$$

Di sini:

* Y adalah variabel dependen yang ingin diprediksi.
* X adalah variabel independen (prediktor).
* $$\beta\_0, \beta\_1, \beta\_2, \ldots, \beta\_n$$ adalah koefisien regresi yang harus diestimasi dari data.
* $$n$$ adalah derajat tertinggi dari polinomial yang digunakan (biasanya bilangan bulat positif).

Beberapa hal yang perlu diperhatikan tentang regresi polinomial:

1. **Derajat Polinomial**: Derajat polinomial $$n$$ adalah parameter yang perlu ditentukan. Nilai $$n$$ mengontrol sejauh mana model dapat menyesuaikan data. Nilai $$n$$ yang lebih tinggi dapat menghasilkan model yang lebih fleksibel, tetapi juga berisiko overfitting.
2. **Overfitting**: Regresi polinomial dengan derajat yang tinggi dapat rentan terhadap overfitting, yaitu ketika model terlalu baik dalam menyesuaikan data pelatihan tetapi kurang baik dalam membuat prediksi pada data baru.
3. **Validasi Model**: Penting untuk melakukan validasi model untuk memilih derajat polinomial yang sesuai. Teknik seperti validasi silang (cross-validation) dapat digunakan untuk mengevaluasi kinerja model pada data yang tidak digunakan selama pelatihan.
4. **Plotting Data**: Visualisasi data dengan plot dapat membantu dalam memahami apakah hubungan antara variabel independen dan dependen memiliki bentuk polinomial.
5. **Interpretasi Koefisien**: Interpretasi koefisien dalam regresi polinomial menjadi lebih rumit dengan meningkatnya derajat polinomial. Ini membuatnya kurang intuitif dibandingkan dengan regresi linear sederhana.

Regresi polinomial berguna ketika hubungan antara variabel tidak linear dan tidak dapat dijelaskan dengan baik oleh model linear sederhana. Dengan memilih derajat polinomial yang tepat dan melakukan validasi model yang baik, regresi polinomial dapat menjadi alat yang kuat dalam pemodelan data yang kompleks.

Selanjutnya kita buat kedalam code python berdasar dari data test dan data training yang sebelumnya telah dibuat seperti berikut

```
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score

# Data training
X_train = np.array([
    [6, 2],
    [8, 1],
    [10, 0],
    [14, 2],
    [18, 3]
])
y_train = np.array([7, 9, 13, 17.5, 18])

# Data testing
X_test = np.array([
    [8, 2],
    [9, 0],
    [11, 2],
    [16, 2],
    [12, 0]
])
y_test = np.array([11, 8.5, 15, 18, 11])

# Inisialisasi model Linear Regression
model = LinearRegression()

# Membentuk polinomial fitur
poly = PolynomialFeatures(degree=2)  # Ganti degree sesuai dengan derajat polinomial yang diinginkan
X_train_poly = poly.fit_transform(X_train)
X_test_poly = poly.transform(X_test)

# Melatih model dengan data training
model.fit(X_train_poly, y_train)

# Melakukan prediksi dengan data testing
y_pred = model.predict(X_test_poly)

# Menghitung R-squared (R2) dari model terlatih
r2 = r2_score(y_test, y_pred)

# Plot hasil regresi
plt.scatter(X_test[:, 0], y_test, color='blue', label='Data Testing')
plt.scatter(X_test[:, 0], y_pred, color='red', label='Prediksi')
plt.title('Grafik Polynomial Regression')
plt.xlabel('Diameter Pizza (inci)')
plt.ylabel('Harga Pizza (dolar)')
plt.legend()
plt.show()

# Menampilkan nilai R-squared
print(f"R-squared (R2): {r2:.2f}")

```

Hasil/ Output adalah sebagi berikut

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2FoQe0mJyU99R3dFKqQSqB%2Fgb4%203.4.png?alt=media&#x26;token=4d272dba-cb2b-478b-9089-8b1185f2fc5c" alt=""><figcaption><p>Gambar 3.4</p></figcaption></figure>

```
R-squared (R2): 0.34
```

Grafik gambar 3.4 adalah grafik Polynomial Regression yang menggambarkan hubungan antara diameter pizza (inci) dan harga pizza (dolar) berdasarkan model Polynomial Regression yang telah dilatih dengan data training.

Penjelasan grafik:

* **Data Testing (biru)**: Titik-titik biru dalam grafik mewakili data testing yang digunakan untuk menguji model. Setiap titik biru memiliki dua koordinat, yaitu diameter pizza (sumbu x) dan harga pizza yang sebenarnya (sumbu y).
* **Prediksi (merah)**: Titik-titik merah dalam grafik mewakili hasil prediksi harga pizza oleh model Polynomial Regression. Setiap titik merah memiliki koordinat yang sama dengan diameter pizza (sumbu x), tetapi nilai y adalah prediksi harga pizza yang dihasilkan oleh model.
* **Hubungan Non-linear**: Perhatikan bahwa bentuk hubungan antara diameter pizza dan harga pizza dalam grafik adalah non-linear. Ini adalah karakteristik utama dari regresi polinomial, yang memungkinkan model untuk menyesuaikan pola yang lebih kompleks daripada regresi linear sederhana.
* **Derajat Polinomial**: Bentuk hubungan ini ditentukan oleh derajat polinomial yang digunakan dalam model. Dalam contoh ini, derajat polinomial adalah 2, sehingga model Polynomial Regression menggunakan polinomial kuadrat untuk menyesuaikan data.
* **Evaluasi Model**: Nilai $$R^2$$ (R-squared) digunakan untuk mengukur sejauh mana model Polynomial Regression cocok dengan data testing. Semakin dekat titik-titik merah ke titik-titik biru (data testing), semakin baik model dalam menjelaskan data. Nilai $$R^2$$ yang tinggi menunjukkan bahwa model memiliki kemampuan yang baik dalam menjelaskan variasi dalam data.

Grafik ini membantu dalam memvisualisasikan bagaimana model Polynomial Regression memprediksi harga pizza berdasarkan diameter pizza dan menunjukkan sejauh mana model sesuai dengan data testing yang sebenarnya.

## Memahami Support Vector

Dalam statistik dan analisis data, "Support Vector" merujuk kepada konsep yang umumnya digunakan dalam berbagai konteks, termasuk regresi, pemisahan data, dan pemodelan statistik. **Support Vector** adalah titik-titik data yang memiliki peran penting dalam analisis atau pemodelan statistik. Mereka adalah titik-titik yang secara signifikan memengaruhi pemahaman kita tentang distribusi data, tren, atau pemisahan kelas.

**Vector** itu sendiri adalah sebuah titik data yang paling dekat dengan hyperplane dan yang mempengaruhi posisi hyperplane. Karena vektor-vektor ini mendukung hyperplane, maka disebut **support vector** sebagaiman ter-visualkan pada gambar 3.5 berikut.

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2F7ffpyeDl8yiSQKys5HMz%2Fsupport-vector-machine-algorithm.png?alt=media&#x26;token=90b825b2-7418-4cfa-a2ad-9699fa4f3cf1" alt=""><figcaption><p>Gambar 3.5 Ilustrasi Support vector (Image by javatpoint.com)</p></figcaption></figure>

### Max Margin

Margin adalah jarak antara support vector dari masing-masing kelas di sekitar hyperplane. Pada gambar dibawah, margin diilustrasikan dengan jarak antara 2 garis putus. Margin terbesar (max margin) dapat ditemukan dengan memaksimalkan nilai jarak antara hyperplane dan titik terdekatnya.&#x20;

Dapat dilihat pada gambar 3.6 bagian kanan memiliki margin lebih besar daripada gambar bagian kiri. Secara intuitif, margin yang lebih besar akan menghasilkan performa klasifikasi yang lebih baik.&#x20;

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2FQxnrvkyDpsEWAEb22iTe%2Fgb6%203.6.jpg?alt=media&#x26;token=e7f784ce-ba25-4c6e-8997-73750a524e06" alt=""><figcaption><p>Gambar 3.6 Ilustrasi Max margi (Image by medium.com)</p></figcaption></figure>

Dalam berbagai konteks analisis data, Support Vectors menjadi sangat penting karena mereka membantu mengungkap informasi penting tentang data, membentuk dasar untuk model, dan dapat digunakan untuk pemahaman yang lebih dalam tentang distribusi data. Meskipun istilah ini sering dikaitkan dengan SVM, konsep Support Vector itu sendiri memiliki signifikansi yang lebih luas dalam analisis data. agar lebih mudah difahami mari kita gunakan analogi.

Analogi yang sering digunakan untuk memahami Support Vector adalah "garis pembatas pada lapangan sepak bola." Bayangkan Anda memiliki lapangan sepak bola yang digunakan untuk pertandingan antara dua tim, Tim A dan Tim B. Di tengah lapangan terdapat garis yang memisahkan lapangan menjadi dua bagian, sisi Tim A dan sisi Tim B.

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2FO0gpXEoYFUHrFActDWs7%2Fgb7%203.7.jpg?alt=media&#x26;token=56e319f4-fece-4c6d-bb85-b99642fb03b3" alt=""><figcaption><p>Gambar 3.7 Ilustrasi Lapangan Sepakbola (Image by tirto.id)</p></figcaption></figure>

Analogi ini dapat membantu dalam pemahaman Support Vector dengan penjelasan sebagai berikut:

1. **Tim A dan Tim B**: Anggap saja bahwa Tim A dan Tim B adalah dua kelas data yang ingin dipisahkan, seperti dalam masalah klasifikasi. Tim A mewakili satu kelas (misalnya, kelas positif), sementara Tim B mewakili kelas lain (misalnya, kelas negatif).
2. **Garis Pembatas**: Garis yang ada di tengah lapangan sepak bola adalah analogi untuk hyperplane dalam konteks Support Vector Machines. Hyperplane adalah batas keputusan yang memisahkan dua kelas. Jadi, garis ini mewakili hyperplane yang akan kita temukan dalam analisis data.
3. **Support Vector**: Sekarang, bayangkan bahwa beberapa pemain dari Tim A dan Tim B berdiri sangat dekat dengan garis pembatas ini. Mereka adalah pemain yang memiliki peran kunci dalam menentukan di mana garis pembatas seharusnya berada. Pemain-pemain ini adalah analogi untuk Support Vectors. Mereka adalah titik-titik data yang paling dekat dengan hyperplane dan memiliki pengaruh besar terhadap penentuan posisi hyperplane.
4. **Margin**: Margin yaitu jarak antara garis pembatas (hyperplane) dan Support Vectors, dapat dianggap sebagai lebar lapangan di sekitar garis pembatas. Margin yang lebih lebar menunjukkan tingkat kepercayaan yang lebih tinggi dalam pemisahan kelas, sedangkan margin yang lebih sempit menunjukkan tingkat ketidakpastian yang lebih besar.

Analogi ini menggambarkan bagaimana Support Vector digunakan dalam pemisahan data dan bagaimana mereka adalah titik-titik data yang memiliki peran penting dalam menentukan batas keputusan. Seperti halnya garis pembatas pada lapangan sepak bola, Support Vectors memainkan peran sentral dalam menentukan di mana hyperplane seharusnya ditempatkan untuk memisahkan dua kelas data dengan cara yang optimal.

## Support Vector Regression (SVR)

**Support Vector Regression (SVR)** adalah salah satu teknik dalam pembelajaran mesin yang digunakan untuk melakukan regresi, yaitu memprediksi nilai numerik atau kontinu berdasarkan data pelatihan. **SVR adalah varian dari Support Vector Machines (SVM)** yang awalnya dikembangkan untuk klasifikasi, tetapi kemudian diperluas ke masalah regresi. Untuk lebih mudahnya mari kita **awali dari penjelasan SVM** melalui ilustrasi SVM dengan melihat gambar 3.7 di bawah ini:

#### **Support Vector Machines (SVM)**

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2F4NTUdbj9ZforT1T0YaLa%2FSVM-278x300.png?alt=media&#x26;token=7c2eb81f-4921-48a2-ab12-a2d1101814bc" alt=""><figcaption><p>Gambar 3.8 Ilustrasi SVM (image by medium.com)</p></figcaption></figure>

Melalui gambar 3.8 di atas, kita dapat mengidentifikasi adanya 3 garis sejajar diagonal yang mengarah dari kiri bawah ke kanan atas. Mari kita bagi gambar ini menjadi 3 garis yang berperan penting dalam konsep ini:

1. **Garis Paling Atas (Garis Putus-Putus)**: Garis ini adalah garis batas positif (+), yang berarti garis ini melewati atau melalui titik-titik data yang termasuk dalam kluster positif. Titik-titik data ini sering disebut sebagai "support vectors" dan menjadi titik-titik terluar dari kluster positif. Garis ini juga bertindak sebagai batas eksternal bagi kluster positif. Penting untuk dicatat bahwa jarak antara garis ini dan garis tengah harus tegak lurus atau bersifat "perpendicular."
2. **Garis Tengah**: Garis ini disebut sebagai "hyperplane" atau "separating plane/line." Garis ini bertindak sebagai pemisah antara dua zona (kluster positif dan negatif). Dalam konteks SVM, hyperplane ini berfungsi memisahkan dua kelompok data atau kluster, yang sering dinamakan sebagai kluster A dan B, 1 dan 2, dan sebagainya. Nama klasifikasi ini dapat disesuaikan, tetapi konvensi umum menggunakan tanda positif (+) dan negatif (-).
3. **Garis Paling Bawah (Garis Putus-Putus)**: Garis ini adalah garis batas negatif (-), yang artinya garis ini melewati satu titik data yang termasuk dalam kluster negatif. Konsepnya serupa dengan garis batas positif.

Penting untuk diingat bahwa jarak antara garis paling atas dan garis tengah sama dengan jarak antara garis paling bawah dan garis tengah, dan jarak ini disebut sebagai epsilon (ε).

Inti dari gambar ini adalah bagaimana mencapai pembagian yang optimal dari dua zona (kluster) dengan memaksimalkan jarak epsilon (ε), sehingga tercapai pembagian yang paling optimal. Dalam pembagian yang optimal, semua titik data akan masuk ke salah satu dari dua zona ini dengan tingkat kepastian yang tinggi, dan jarak epsilon (ε) mencapai maksimum.

Jadi, SVM adalah tentang pembagian dataset menjadi dua zona dengan pembagian yang optimal, sementara SVR, sebaliknya, berfokus pada cara memasukkan semua dataset ke dalam satu zona dengan meminimalkan nilai epsilon (ε).

Untuk merangkum, dapat disimpulkan bahwa SVM bertujuan memisahkan dataset menjadi dua zona, sementara SVR bertujuan memasukkan semua dataset ke dalam satu zona sambil meminimalkan nilai epsilon (ε), dengan kata lain **SVM membagi menjadi dua zona** sedangkan **SVR memasukkan semuanya menjadi satu zona**.&#x20;

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2FpIAQFi1TjBkcBQ2VLUXX%2FSVR%203.9.gif?alt=media&#x26;token=61d08fae-a0c9-44cc-9ef5-ad10ea4c72b4" alt=""><figcaption><p>Gambar 3.9 Ilustrasi SVR (Image by medium.com)</p></figcaption></figure>

Gambar 3.9 menggambarkan adanya sebuah hyperplane (garis diagonal di tengah) yang dikelilingi oleh dua garis batas, yaitu garis batas positif (+) dan garis batas negatif (-) yang telah dijelaskan sebelumnya. Pada gambar tersebut, juga terdapat (ε) yang mengukur jarak antara hyperplane dengan kedua garis batas tersebut. Poin-poin data yang dilingkari menunjukkan potensi support vectors, yaitu titik-titik data yang memiliki potensi untuk menjadi titik pembatas, sehingga semua data dapat dimasukkan ke dalam satu kluster dengan upaya meminimalkan nilai (ε). Oleh karena itu, gambar tersebut mencoba memvisualisasikan bahwa hyperplane seharusnya melewati sebanyak mungkin dari titik-titik data ini. Hasil visualisasi ini sering mirip dengan grafik regresi pada umumnya.

Berikut adalah langkah-langkah dalam menggunakan Support Vector Regression (SVR):

1. **Menyiapkan Training Set**:
   * Kita memulai dengan menyiapkan training set yang terdiri dari pasangan data input-output.
   * Training set ini direpresentasikan sebagai $$\tau = \left { \underset{X}\rightarrow + \underset{Y}\rightarrow \right }$$, di mana $$\underset{X}\rightarrow$$ adalah input (fitur) dan $$\underset{Y}\rightarrow$$ adalah output (nilai yang ingin diprediksi).
2. **Memilih Kernel dan Parameter serta Regularisasi**:
   * Langkah selanjutnya adalah memilih jenis kernel yang sesuai (seperti linear, polinomial, atau radial basis function) dan mengatur parameter-parameter kernel tersebut.
   * Juga, kita perlu mempertimbangkan proses regularisasi untuk menghindari overfitting. Hal ini dapat dilakukan dengan mengatur parameter C.
3. **Membuat Korelasi Matriks**:
   * Dalam SVR, kita membuat matriks korelasi $$\underset{K}\rightarrow$$ yang mengukur hubungan antara data-input dengan data-input lainnya.
   * Matriks korelasi ini memungkinkan kita untuk mengukur sejauh mana data-input berhubungan satu sama lain dalam ruang fitur yang diperluas.
4. **Melatih Model untuk Mendapatkan Koefisien**:
   * Selanjutnya, kita melatih model SVR menggunakan training set dan matriks korelasi yang telah dibuat.
   * Hasil dari pelatihan ini adalah koefisien $$\underset{\alpha}\rightarrow =\left { \alpha\_{i} \right }$$, yang digunakan untuk menghasilkan model regresi.
5. **Menggunakan Koefisien untuk Membuat Estimator**:
   * Terakhir, kita menggunakan koefisien yang telah diperoleh untuk membuat estimator $$(f (\underset{X}\rightarrow, \underset{\alpha}\rightarrow, x^{} ) = y^{})$$.
   * Estimator ini dapat digunakan untuk memprediksi nilai $$(\hat{y}) atau (y^{})$$ *berdasarkan data-input baru* $$(x^{})$$.

Langkah-langkah ini mengilustrasikan proses umum dalam penggunaan SVR untuk pemodelan regresi. Setelah melalui langkah-langkah ini, kita dapat menggunakan model yang telah dilatih untuk memprediksi nilai numerik berdasarkan data-input yang diberikan.

Mungkin ada yang merasa bahwa langkah-langkah di atas terlalu rumit, terutama karena melibatkan kalkulasi vektor dan istilah kernel yang mungkin belum familiar. Namun, penting untuk diingat bahwa langkah-langkah ini akan lebih mudah dipahami saat diaplikasikan dalam kasus nyata. Selain itu, tidak semua istilah dan konsep ini harus dipahami dalam satu waktu. Semua ini akan lebih terasa konkret ketika diterapkan dalam pemecahan masalah praktis.

Berikut adalah beberapa poin penting sebagai kesimpulan tentang SVR:

1. **Tujuan Regresi**: Tujuan utama SVR adalah memprediksi nilai numerik atau kontinu, berbeda dengan SVM yang digunakan untuk klasifikasi (memisahkan data menjadi kelas-kelas).
2. **Support Vector**: Seperti pada SVM, dalam SVR juga terdapat Support Vector. Ini adalah titik-titik data yang paling dekat dengan garis (atau hyperplane) regresi. Mereka adalah titik-titik yang penting dalam menentukan posisi garis regresi.
3. **Margin**: SVR juga mempertimbangkan margin, tetapi konsep margin dalam SVR adalah "corridor" atau "pipa" (tube) yang mengelilingi garis regresi. Margin ini adalah rentang di mana model SVR berusaha untuk memasukkan sebagian besar titik data pelatihan. Semakin lebar margin, semakin besar toleransi terhadap kesalahan dalam prediksi.
4. **Fungsi Kernel**: Seperti dalam SVM, SVR dapat menggunakan fungsi kernel untuk memetakan data ke dalam ruang berdimensi tinggi, yang memungkinkan pemodelan hubungan yang lebih kompleks antara variabel independen dan variabel dependen.
5. **Parameter C dan Epsilon**: Dalam SVR, ada dua parameter penting yang harus diatur: C dan epsilon (ε). Parameter C mengontrol trade-off antara margin yang lebih lebar dan kesalahan pada data pelatihan. Parameter epsilon (ε) mengontrol lebar pipa (tube) dan memengaruhi toleransi terhadap kesalahan dalam prediksi.
6. **Regresi Linier dan Non-Linier**: SVR dapat digunakan baik untuk regresi linier maupun non-linier. Regresi linier adalah ketika garis regresi adalah garis lurus, sedangkan regresi non-linier memungkinkan model untuk menyesuaikan pola yang lebih kompleks.
7. **Evaluasi**: Evaluasi kinerja SVR biasanya menggunakan metrik seperti Mean Absolute Error (MAE), Mean Squared Error (MSE), atau Coefficient of Determination ((R^2)) untuk mengukur sejauh mana model cocok dengan data testing.

> SVR sangat berguna dalam situasi di mana hubungan antara variabel independen dan variabel dependen tidak linier atau kompleks. Dengan memilih fungsi kernel yang sesuai dan menyesuaikan parameter C dan epsilon, SVR dapat digunakan untuk memodelkan berbagai jenis data regresi dengan tingkat akurasi yang tinggi.

### **Evaluasi Model SVR:**

Setelah Anda melatih model SVR, sangat penting untuk mengevaluasi seberapa baik model tersebut berperforma. Berikut adalah beberapa metrik evaluasi umum yang digunakan untuk model SVR:

1. **Mean Absolute Error (MAE)**: MAE mengukur rata-rata dari selisih absolut antara nilai aktual dan nilai prediksi. Semakin rendah nilai MAE, semakin baik model SVR Anda. Rumusnya adalah:

   $$MAE = \frac{1}{n} \sum\_{i=1}^{n} |y\_i - \hat{y}\_i|$$

   Di sini, $$y\_i$$ adalah nilai aktual, $$\hat{y}\_i$$ adalah nilai prediksi, dan $$n$$ adalah jumlah data poin.
2. **Mean Squared Error (MSE)**: MSE mengukur rata-rata dari kuadrat selisih antara nilai aktual dan nilai prediksi. MSE memberikan "penalty" yang lebih besar pada error yang besar. Rumusnya adalah:

   $$MSE = \frac{1}{n} \sum\_{i=1}^{n} (y\_i - \hat{y}\_i)^2$$

   Seperti pada MAE, $$y\_i$$ adalah nilai aktual, $$\hat{y}\_i$$ adalah nilai prediksi, dan $$n$$ adalah jumlah data poin.
3. **Root Mean Squared Error (RMSE)**: RMSE adalah akar kuadrat dari MSE dan memberikan hasil dalam satuan yang sama dengan variabel target. Semakin kecil RMSE, semakin baik model Anda.

   $$\[RMSE = \sqrt{MSE}]$$
4. **R-squared** $$R^2$$ **Score**: R-squared mengukur seberapa baik variabilitas dalam data target dapat dijelaskan oleh model. Rentang skor R-squared antara 0 hingga 1, dan semakin mendekati 1, semakin baik model Anda dalam menjelaskan variasi data.

   $$R^2 = 1 - \frac{MSE}{\text{Variance dari data target}}$$

   Nilai $$R^2$$ yang mendekati 1 menunjukkan bahwa model Anda sangat baik dalam menjelaskan variasi data.

Dengan mengukur berbagai metrik evaluasi ini, Anda dapat memahami sejauh mana model SVR Anda cocok dengan data target dan seberapa baik performanya dalam melakukan prediksi.

\\
