Lihat Ini Untuk Memahami Support Vector Machine

Artificial Intelligence For Learning The Basics

Plot by Kirill Eremenko & Hadelin de Ponteves on Udemy

Apa Itu Support Vector Machine?

Support Vector Machine merupakan teknik dalam Machine Learning yang digunakan untuk memisahkan data kategorikal menjadi beberapa kelas dengan cara membuat dan menentukan dimana letak hyperplane yang maksimal.

Support Vector Machine merupakan salah satu model Machine Learning yang kuat karena kemampuan model Support Vector Machine yang bisa membedakan data observasi yang sangat mirip dengan data observasi lain yang akan di kategorikan atau dipisah menjadi kelas yang berbeda.

Hal ini bisa dilakukan oleh Support Vector Machine karena model Support Vector Machine membuat hyperplane yang maksimal dari jarak antara dua vector atau data observasi yang sangat berdekatan, jarak antara dua vector yang berdekatan ini dimakan sebagai margin.

Margin yang maksimal dari kedua vector yang jika disatukan akan menciptakan dan menentukan dimana letak hyperplane yang optimal dalam memisahkan data pada model Support Vector Machine.

Rumus Support Vector Machine

  1. Rumus Persamaan Hyperplane

w.x + b = 0

Keterangan:
w = vector yang berbobot
x = feature (independen variabel)
b = bias

Note:
Rumus diatas adalah rumus untuk membuat hyperplane berdasarkan vector w, independen variabel dan bias yang merupakan konstanta skalar dan membantu menentukan posisi dari hyperplane tersebut.

  1. Dot Product

A.B = |A|cosθ * |B|

Keterangan:
|A|cosθ = projeksi vector A terhadap vector B
|B| = jarak vector B

Note:
Dot product berguna untuk mendapatkan nilai skalar dari proyeksi antara 2 vektor. Anda bisa menentukan apakah nilai skalar dari suatu data observasi adalah positif (sebelah kanan) atau negatif (sebelah kiri) dengan cara menentukan jarak dari titik awal vektor B ke hyperplane yang telah dibuat.

Jarak dari titik awal vektor B ke hyperplane yang telah dibuat bisa kita umpamakan sebagai simbol ‘s’ untuk mempermudah perhitungan dan perbandingan nilai.

  1. Aturan Klasifikasi
  • apabila data observasi positif (+1) = w.x + b ≥ 1
  • apabila data observasi negatif (-1) = w.x + b ≤ -1

Note:
Ketika nilai skalar yang didapat dari dot product lebih besar dari ‘s’, maka bisa kita katakan bahwa data observasi tersebut berada di sisi kanan hyperplane yang dimana data tersebut masuk kedalam data positif.

Sebaliknya, ketika nilai skalar yang didapat dari dot product lebih kecil dari ‘s’, maka bisa kita katakan bahwa data observasi tersebut berada di sisi kiri hyperplane yang dimana data tersebut masuk kedalam data negatif.

  1. Persamaan Soft Margin

Formula generated by ChatGPT

Keterangan:
||w|| = Panjang vector w
ξ = Variabel Slack
C = Hyperparameter C yang mengontrol besarnya margin dan besarnya pelanggaran margin

Note:
rumus soft margin ini berguna untuk mencari posisi atau titik optimal dari hyperplane dengan cara mengizinkan data observasi untuk melanggar margin atau berada di posisi yang salah. Misalnya data observasi positif berada di area data negatif atau data observasi negatif berada di area data positif.

Anda juga bisa mengatur besar kecilnya hyperparameter C yang bisa menentukan besar atau kecilnya margin dari hyperplane sesuai dengan kebutuhan data yang didapat.

Nilai dari hyperparameter C yang tinggi membuat margin dari hyperplane semakin kecil atau minimal, hal ini dilakukan untuk meminimalkan pelanggaran margin tetapi kekurangannya adalah model bisa menjadi overfit.

Sebaliknya dari hyperparameter C yang rendah membuat margin dari hyperplane semakin besar atau maksimal, hal ini dilakukan untuk melakukan generalisasi terhadap data observasi supaya model bisa memprediksi data baru dengan lebih baik tetapi kekurangannya adalah pelanggaran margin menjadi semakin banyak.

Kode Python Untuk Membuat Model Support Vector Machine

  • Impor Librari

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

  • Impor dataset

dataset = pd.read_csv(‘Social_Network_Ads.csv’)
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values

  • Membagi dataset menjadi training set dan test set

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)

  • Feature Scaling

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

  • Melatih model Support Vector Regression kedalam training set

from sklearn.svm import SVC
classifier = SVC(kernel = ‘linear’, random_state = 0)
classifier.fit(X_train, y_train)

  • Memprediksi hasil test set

y_pred = classifier.predict(X_test)
print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))

  • Memprediksi data observasi baru

print(classifier.predict(sc.transform([[30,87000]])))

  • Membuat Confusion Matrix

from sklearn.metrics import confusion_matrix, accuracy_score
cm = confusion_matrix(y_test, y_pred)
print(cm)
accuracy_score(y_test, y_pred)

  • Visualisasi hasil training set

from matplotlib.colors import ListedColormap
X_set, y_set = sc.inverse_transform(X_train), y_train
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() – 10, stop = X_set[:, 0].max() + 10, step = 0.25),
np.arange(start = X_set[:, 1].min() – 1000, stop = X_set[:, 1].max() + 1000, step = 0.25))
plt.contourf(X1, X2, classifier.predict(sc.transform(np.array([X1.ravel(), X2.ravel()]).T)).reshape(X1.shape),
alpha = 0.75, cmap = ListedColormap((‘red’, ‘green’)))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], c = ListedColormap((‘red’, ‘green’))(i), label = j)
plt.title(‘SVM (Training set)’)
plt.xlabel(‘Age’)
plt.ylabel(‘Estimated Salary’)
plt.legend()
plt.show()

Plot by Kirill Eremenko & Hadelin de Ponteves on Udemy

  • Visualisasi hasil test set

from matplotlib.colors import ListedColormap
X_set, y_set = sc.inverse_transform(X_test), y_test
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() – 10, stop = X_set[:, 0].max() + 10, step = 0.25),
np.arange(start = X_set[:, 1].min() – 1000, stop = X_set[:, 1].max() + 1000, step = 0.25))
plt.contourf(X1, X2, classifier.predict(sc.transform(np.array([X1.ravel(), X2.ravel()]).T)).reshape(X1.shape),
alpha = 0.75, cmap = ListedColormap((‘red’, ‘green’)))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], c = ListedColormap((‘red’, ‘green’))(i), label = j)
plt.title(‘SVM (Test set)’)
plt.xlabel(‘Age’)
plt.ylabel(‘Estimated Salary’)
plt.legend()
plt.show()

Plot by Kirill Eremenko & Hadelin de Ponteves on Udemy

Setelah membaca materi yang telah disampaikan diatas, Anda bisa mengetahui apa itu Support Vector Machine, bagaimana cara kerjanya, apa rumus yang harus diperhatikan dalam model Support Vector Regression dan bagaimana cara membuat modelnya dengan kode pyhton sehingga Anda bisa memprediksi suatu data linear maupun non-linear.

Bagi anda yang ingin memberikan komentar pada website ini, silahkan tulis komentar Anda dengan mengisi nama dan alamat email Anda. Anda dapat membaca blog kami sebelumnya mengenai K-Nearest Neighbor dan blog kami selanjutnya mengenai kernel Support Vector Machine.

0 0 votes
Article Rating
0 0 votes
Article Rating
guest
18 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

[…] Bagi anda yang ingin memberikan komentar pada website ini, silahkan tulis komentar Anda dengan mengisi nama dan alamat email Anda. Anda dapat membaca blog kami sebelumnya mengenai Logistic Regression dan blog kami selanjutnya mengenai Support Vector Machine. […]

[…] Anda dengan mengisi nama dan alamat email Anda. Anda dapat membaca blog kami sebelumnya mengenai Support Vector Machine. Nantikan konten blog kami selanjutnya yang ga kalah […]

Breana Lueilwitz

Just wish to say your article is as surprising The clearness in your post is just cool and i could assume youre an expert on this subject Fine with your permission allow me to grab your RSS feed to keep updated with forthcoming post Thanks a million and please keep up the enjoyable work

Devan Goldner

Thank you for the auspicious writeup It in fact was a amusement account it Look advanced to far added agreeable from you However how can we communicate

webdesign freelancer münchen

Great article! I really appreciate the way you explained everything so clearly – it feels like you put a lot of effort into making it useful for readers. I’ve been exploring different tools and resources myself, and recently started using https://webdesignfreelancermunchen.de/ by Abdul, professional webdesigner in bamberg. It’s been a game changer for me, and reading your post actually gave me even more ideas on how to apply it. Thanks for sharing such valuable insights!

ffwin3

ffwin3, you say? Had a quick peek. Not bad, not bad at all. Worth a look if you’re hunting for something new. Check out ffwin3 and tell me what you think.

goal11casino

Goal11casino caught my eye with their promotions. Gave it a spin, and the platform is smoother than I expected. Worth a shot if you’re looking for something new to play. Check it out here: goal11casino

jjwinbet

Been having some fun with jjwinbet lately. It seems like a really trust worthy site, I can’t complain! jjwinbet

w88is

W88is… hmmm, sounds familiar. I think I saw some ads for them. Is it just me, or does anyone else find their website kinda confusing? Anyway, take a peek yourself! w88is.

f888daga

Yo fam, f888daga is lit The site is smooth, the games are diverse, and the bonuses keep coming I’m having a blast there Seriously, give it a whirl f888daga

gamewin55club

Hey everyone, gamewin55club is seriously impressive Great selection of games, smooth interface, and overall a solid experience If you’re looking for a new place to game, this is it gamewin55club

bj388dev

What’s up gamers bj388dev has got some serious heat The graphics are awesome, the gameplay is smooth, and the chances to win are real Check it out, you wont be disappointed bj388dev

gperya
webdesign freelancer

your article is amazing, i enjoy reading it, i want you to add me as your followers, how often do you post ? my blog is the top growing directory platform in germany, lokando24.de you can check it out. Thank you

webdesign freelancer hamburg

wow your article is simply a masterpiece, i like that, keep it up and will be checking for new update. do you post often? you can check the biggest webdesign freelancer in platform in germany called https://webdesignfreelancerfrankfurt.de/ Thank you for your wonderful post

222wincasino

222wincasino, eh? They got a good selection of games. I played some roulette and actually won some! Pretty cool site. 222wincasino

vbetbr

Galera da vbetbr, uma dúvida! Qual o jogo que tá pagando mais por lá ultimamente? Tô precisando de uma grana extra urgente! vbetbr

f12betlogin

Had a little trouble with the f12betlogin at first, but once I got in, it was smooth sailing. Just make sure you remember your password, haha! Check it: f12betlogin

Scroll to Top
18
0
Would love your thoughts, please comment.x
()
x