REINFORCEMENT LEARNING

 

Reinforcement Learning

Reinforcement Learning berbeda berbeda dengan supervised maupun unsupervised learning. Algoritma ini dimaksudkan untuk membuat komputer dapat belajar sendiri dari lingkungan (environtment) melalui sebuah agent. Jadi komputer akan melakukan pencarian sendiri (self discovery) dengan cara berinteraksi dengan environment.

Reinforcement-learning didefinisikan sebagai metode machine learning yang berkaitan dengan bagaimana agent perangkat lunak harus mengambil action di dalam environment. RL adalah bagian dari metode deep learning yang membantu Anda memaksimalkan sebagian dari reward kumulatif.

Model Pembelajaran Reinforcement Learning

Ada dua model pembelajaran penting dalam reinforcement learning yaitu:

  • Markov Decision Process

Markov Decision Process lebih dikenal dengan MDP adalah suatu pendekatan dalam RL untuk mengambil keputusan dalam environment gridworld. Lingkungan gridworld terdiri dari state dalam bentuk grid.

MDP mencoba menangkap dunia dalam bentuk grid dengan membaginya menjadi state, action, model / model transition, dan reward. Solusi untuk MDP disebut policy dan tujuannya adalah menemukan policy yang optimal untuk tugas MDP tersebut. Oleh karenanya parameter berikut digunakan untuk mendapatkan solusi yang diharapkan:

    • Set of states -S
    • Set of actions- A(s), A
    • Transition- T(s,a,s’) ~ P(s’|s,a)
    • Reward- R(s), R(s,a), R(s,a,s’)
    • Policy- n
    • Value- V

MDP jika digambarkan kurang lebih seperti ini:

Cara Kerja Reinforcement Learning
          Cara Kerja Reinforcement Learning (MDP)

    Algoritma RL akan mencoba berbagai pilihan dan kemungkinan yang berbeda, melakukan pengamatan (observation) dan evaluasi (evaluation) setiap pencapaian. Reinforcement learning dapat belajar dari pengalaman. Agent di dalam environtment diharuskan mengambil tindakan yang didasarkan pada state saat ini. Jenis pembelajaran ini berbeda dengan supervised learning dalam artian data training pada model sebelumnya memiliki output mapping yang disediakan sedemikian rupa sehingga model mampu mempelajari jawaban yang benar. Sedangkan dalam hal ini RL tidak ada kunci jawaban yang disediakan kepada agent ketika harus melakukan action tertentu. Jika tidak ada set data pelatihan, ia belajar dari pengalamannya sendiri.

Q Learning

Q-learning (disebut sebagai model free algorithm) adalah algoritma RL tanpa model untuk mempelajari policy yang memberi tahu agen tindakan apa yang harus diambil dalam keadaan apa. Q-learning tidak memerlukan model dari environtment, dan dapat menangani masalah dengan transisi stokastik dan reward, tanpa memerlukan adaptasi.

Apa ini 'Q'?
Definisi Q-learning

  • Q * (s, a) adalah nilai yang diharapkan (reward diskon kumulatif) dari melakukan a in state dan kemudian mengikuti kebijakan yang optimal.
  • Q-learning menggunakan Perbedaan Temporal (TD) untuk memperkirakan nilai Q * (s, a). Perbedaan temporal adalah agen yang belajar dari lingkungan melalui episode tanpa pengetahuan sebelumnya tentang lingkungan.
  • Agen memelihara tabel Q [S, A] , di mana S adalah himpunan status dan A adalah himpunan tindakan .
  • Q [s, a] mewakili estimasi saat ini dari Q * (s, a).
Agen dan Lingkungannya
Memperkenalkan Q-Table
Fungsi-Q
Persamaan Bellman. Sumber: link
Proses Algoritma Q-learning
Algoritma Q-learning
Langkah 1: Inisialisasi Q-Table
Langkah 2: Pilih Tindakan
Langkah 3: Lakukan Tindakan
Tindakan: Agen mengikuti 'benar'

Tabel Q yang diperbarui

Penjelasan Persamaan Bellman untuk episode

Gambar (a) Imbalan Positif, (b) & (c) Imbalan Negatif

Contoh tabel-Q akhir

Navigasi agen menuju tujuan

Merencanakan hasil untuk jumlah langkah (a) Episode melalui langkah, (b) Episode melalui biaya
'Q' dalam Q-learning berarti kualitas. Kualitas di sini mewakili seberapa berguna tindakan tertentu dalam mendapatkan imbalan di masa mendatang.

Di bagian ini, pembelajaran Q telah dijelaskan bersama dengan demo.

Katakanlah seorang agen harus berpindah dari titik awal ke titik akhir di sepanjang jalur yang memiliki rintangan. Agen harus mencapai target dalam jalur sesingkat mungkin tanpa mengenai rintangan dan dia harus mengikuti batas yang dicakup oleh rintangan. Demi kenyamanan kami, saya telah memperkenalkan ini dalam lingkungan grid yang disesuaikan sebagai berikut.

Q-Table adalah struktur data yang digunakan untuk menghitung imbalan masa depan maksimum yang diharapkan untuk tindakan di setiap negara bagian. Pada dasarnya, tabel ini akan memandu kita ke tindakan terbaik di setiap negara bagian. Untuk mempelajari setiap nilai dari Q-table digunakan algoritma Q-Learning.

Fungsi-Q menggunakan persamaan Bellman dan mengambil dua masukan: keadaan (s) dan aksi (a).

Pertama, Q-table harus dibangun. Ada n kolom, di mana n = jumlah tindakan. Ada m baris, di mana m = jumlah status.

Dalam contoh kita n = Ke Kiri, Ke Kanan, Ke Atas dan Ke Bawah dan m = Mulai, Diam, Jalan Yang Benar, Jalan Yang Salah dan Akhir. Pertama, mari kita inisialisasi nilai pada 0.

Kombinasi langkah 2 dan 3 dilakukan untuk waktu yang tidak ditentukan. Langkah-langkah ini berjalan hingga waktu pelatihan dihentikan, atau saat loop pelatihan berhenti seperti yang ditentukan dalam kode.

Pertama, tindakan (a) di negara bagian dipilih berdasarkan Q-Table. Perhatikan bahwa, seperti yang disebutkan sebelumnya, saat episode pertama kali dimulai, setiap nilai Q harus 0.

Kemudian, perbarui nilai Q untuk berada di awal dan ke kanan menggunakan persamaan Bellman yang disebutkan di atas.

Konsep strategi rakus Epsilon ikut bermain di sini. Pada awalnya, tingkat epsilon akan lebih tinggi. Agen akan menjelajahi lingkungan dan memilih tindakan secara acak. Ini terjadi secara logis, karena agen tidak tahu apa-apa tentang lingkungan. Saat agen menjelajahi lingkungan, laju epsilon menurun dan agen mulai mengeksploitasi lingkungan.

Selama proses eksplorasi, agen semakin percaya diri dalam memperkirakan nilai-Q.

Dalam contoh Agen kami, saat pelatihan agen dimulai, agen sama sekali tidak menyadari lingkungan. Jadi katakanlah itu mengambil tindakan acak ke arah yang 'benar'.

Sekarang kita dapat memperbarui nilai-Q untuk berada di awal dan bergerak ke kanan menggunakan persamaan Bellman.

Langkah 4: Mengukur Imbalan

Sekarang kami telah mengambil tindakan dan mengamati hasil dan penghargaan.

Langkah 5: Evaluasi

Kita perlu memperbarui fungsi Q (s, a).

Proses ini diulangi lagi dan lagi sampai pembelajaran dihentikan. Dengan cara ini Tabel-Q diperbarui dan fungsi nilai Q dimaksimalkan. Di sini Q (keadaan, tindakan) mengembalikan imbalan masa depan yang diharapkan dari tindakan itu pada keadaan itu.

Dalam contoh, saya telah memasukkan skema penghargaan sebagai berikut.

Hadiah ketika jangkauan semakin dekat ke tujuan = +1

Imbalan saat terkena rintangan = -1

Hadiah saat idle = 0

Awalnya, kami menjelajahi lingkungan agen dan memperbarui Q-Table. Ketika Q-Table siap, agen mulai mengeksploitasi lingkungan dan mulai mengambil tindakan yang lebih baik. Tabel Q akhir bisa seperti berikut (misalnya).


Algoritma Reinforcement Learning
Algoritma yang termasuk reinforcement learning: Q-Learning, State-Action-Reward-State-Action (SARSA), Deep Q Network (DQN), Deep Deterministic Policy Gradient (DDPG), Actor Critic, Monte Carlo Tree Search (MCTS) [1].

Untuk lebih lengkapnya tentang algoritma RL bisa dilihat pada gambar berikut ini:

Reinforcement Learning Algorithm
Reinforcement Learning Algorithm
Penerapan Reinforcement Learning
Google telah mengimplementasikan penerapan reinforcement learning pada sistem Google’s Active Query Answering (AQA) mereka. Jadi chat bot ini akan melakukan formulasi ulang atas pertanyaan yang diketikkan oleh pengguna.

Sebagai contoh, jika anda menanyakan pertanyaan “Kapan hari kemerdekaan RI” maka AQA ajab mereformulasi pertanyaan tersebut menjadi beberapa pertanyaan berbeda misalnya “Tanggal berapa hari kemerdekaan RI”, “Kapan HUT RI”, “Ulang tahun Indonesia”, dll. Proses reformulasi ini telah mengutilisasi model sequence to sequence, tetapi Google telah mengintegrasikan reinforcement learning agar pengguna dapat berinteraksi dengan sistem menjadi lebih baik.

Area penerapan reinforcement learning meliputi:

Robotika untuk otomasi industri.
Perencanaan strategi bisnis
Pembelajaran mesin dan pemrosesan data
Membuat sistem pelatihan yang menyediakan instruksi dan materi khusus sesuai dengan kebutuhan siswa.
Kontrol pesawat dan kontrol gerak robot
Pendekatan Implementasi
Ada tiga pendekatan untuk mengimplementasikan algoritma Reinforcement Learning (RL) yaitu:

1. Value Based
Dalam metode RL berbasis nilai (value based), Anda harus mencoba memaksimalkan fungsi nilai V (s). Dalam metode ini, agen mengharapkan pengembalian jangka panjang dari keadaan saat ini berdasarkan policy π.

2. Policy Based
Dalam metode RL berbasis policy, Anda mencoba menghasilkan aturan sedemikian rupa sehingga action yang dilakukan di setiap state membantu Anda mendapatkan reward maksimum di masa mendatang. Dua jenis metode berbasis policy based adalah:

Deterministik: Untuk setiap state, action yang sama dihasilkan oleh policy π.
Stochastic: Setiap action memiliki probabilitas tertentu, yang ditentukan oleh persamaan stochastic policy.
3. Model Based
Dalam metode RL ini, Anda perlu membuat model virtual untuk setiap environtment. Agent belajar untuk bekerja di environment spesifik tersebut.

Sumber : 
pertemuan 13 machine learning Institut Teknologi PLN
https://www.vpslabs.net/reinforcement-learning/
https://ichi.pro/id/panduan-pemula-untuk-q-learning-215378165392700

K-means clustering

 K-means merupakan algoritma clustering. K-means Clustering adalah salah satu “unsupervised machine learning algorithms” yang paling sederhana dan populer. K-Means Clusteringadalah suatu metode penganalisaan data atau metode Data Mining yang melakukan proses pemodelan tanpa supervisi (unsupervised) dan merupakan salah satu metode yang melakukan pengelompokan data dengan sistem partisi.

K-means clustering merupakan salah satu metode cluster analysis non hirarki yang berusaha untuk mempartisi objek yang ada kedalam satu atau lebih cluster atau kelompok objek berdasarkan karakteristiknya, sehingga objek yang mempunyai karakteristik yang sama dikelompokan dalam satu cluster yang sama dan objek yang mempunyai karakteristik yang berbeda dikelompokan kedalam cluster yang lain. Metode K-Means Clustering berusaha mengelompokkan data yang ada ke dalam beberapa kelompok, dimana data dalam satu kelompok mempunyai karakteristik yang sama satu sama lainnya dan mempunyai karakteristik yang berbeda dengan data yang ada di dalam kelompok yang lain.

Dengan kata lain, metode K-Means Clustering bertujuan untuk meminimalisasikan objective function yang diset dalam proses clustering dengan cara meminimalkan variasi antar data yang ada di dalam suatu cluster dan memaksimalkan variasi dengan data yang ada di cluster lainnya juga bertujuan untuk menemukan grup dalam data, dengan jumlah grup yang diwakili oleh variabel K. Variabel K sendiri adalah jumlah cluster yang diinginkan. Membagi data menjadi beberapa kelompok. Algoritma ini menerima masukan berupa data tanpa label kelas. Hal ini berbeda dengan supervised learning yang menerima masukan berupa vektor (­x­1 , y1) , (­x­2 , y2) , …, (­x­i , yi), di mana xi merupakan data dari suatu data pelatihan dan yimerupakan label kelas untuk xi .

Pada algoritma pembelajaran ini, komputer mengelompokkan sendiri data-data yang menjadi masukannya tanpa mengetahui terlebih dulu target kelasnya. Pembelajaran ini termasuk dalam unsupervised learning. Masukan yang diterima adalah data atau objek dan k buah kelompok (cluster) yang diinginkan. Algoritma ini akan mengelompokkan data atau objek ke dalam k buah kelompok tersebut. Pada setiap cluster terdapat titik pusat (centroid) yang merepresentasikan cluster tersebut.

K-means ditemukan oleh beberapa orang yaitu Lloyd (1957, 1982), Forgey (1965) , Friedman and Rubin (1967), and McQueen (1967). Ide dari clustering pertama kali ditemukan oleh Lloyd pada tahun 1957, namun hal tersebut baru dipublikasi pada tahun 1982. Pada tahun 1965, Forgey juga mempublikasi teknik yang sama sehingga terkadang dikenal sebagai Lloyd-Forgy pada beberapa sumber.

Terdapat dua jenis data clustering yang sering dipergunakan dalam proses pengelompokan data yaitu Hierarchical dan Non-Hierarchical, dan K-Means merupakan salah satu metode data clustering non-hierarchical atau Partitional Clustering.

Data clustering menggunakan metode K-Means Clustering ini secara umum dilakukan dengan algoritma dasar sebagai berikut:

Tentukan jumlah cluster
Alokasikan data ke dalam cluster secara random
Hitung centroid/rata-rata dari data yang ada di masing-masing cluster
Alokasikan masing-masing data ke centroid/rata-rata terdekat
Kembali ke Step 3, apabila masih ada data yang berpindah cluster atau apabila perubahan nilai centroid, ada yang di atas nilai threshold yang ditentukan atau apabila perubahan nilai pada objective function yang digunakan di atas nilai threshold yang ditentukan
Beberapa Permasalahan yang Terkait Dengan K-Means Clustering

Beberapa permasalahan yang sering muncul pada saat menggunakan metode K-Means untuk melakukan pengelompokan data adalah:

Ditemukannya beberapa model clustering yang berbeda
Pemilihan jumlah cluster yang paling tepat
Kegagalan untuk converge
Outliers
Bentuk cluster

SUPERVISED LEARNING : CARA KERJA PERCEPTRON

ALGORITMA PERCEPTRON

Perceptron adalah salah satu metode Jaringan Syaraf Tiruan (JST) sederhana yang menggunakan algoritma training untuk melakukan klasifikasi secara linier. Perceptron digunakan untuk melakukan klasifikasi sederhana dan membagi data untuk menentukan data mana yang masuk dalam klasifikasi dan data mana yang missclasifikasi (diluar klasifikasi). Perceptron dapat kita gunakan untuk memisahkan data yang dapat kita bagi menjadi 2 kelas, misalnya kelas C1 dan kelas C2.

Perceptron dalam Jaringan Syaraf Tiruan memiliki bobot yang bisa diatur dalam suatu ambang batas (threshold). Melalui proses pembelajaran (learning), Algotirma Perceptron akan mengatur parameter-parameter bebasnya.  Agar tidak bingung, dibawah ini adalah gambaran dari pengklasifikasian kelas C1 dan C2 :
klasifikasi perceptron
klasifikasi perceptron

Tanda x (biru) dan tanda o (merah) pada gambar diatas dicontohkan adalah dua buah data yang akan diklasifikasi. Dimana kedua data tersebut akan dipisahkan dengan suatu garis hyperplane yang membagi data menjadi dua klasifikasi. 

Dimana ( g(x) ) merupakan vektor hyperplane yang memisahkan kelas C1 (data x) dan C2 (data o). Apabila nilai g(x) < 0 (g(x) lebih kecil dari nol) maka data tersebut termasuk dalam kelas C2, sedangkan apabila g(x) > 0 (g(x) lebih besar dari nol) maka data tersebut termasuk kedalam kelas C1.

Nah, bagaimana dengan algoritmanya ?

Untuk algoritma pembelajaran perceptron adalah seperti berikut :
  • 1. Inisialisasi semua inputan, matriks vector, target, dan learning rate.
  • 2. Kita lakukan pengecekan untuk semua vector yang misclassification dengan menggunakan rumus berikut :
rumus vektor missclasifikasi
rumus vektor missclasifikasi perceptron
  • 3. Misclassification dapat juga dicari dengan rumus aktivasi, seperti berikut :
rumus aktivasi perceptron
rumus aktivasi perceptron

  • Jaringan terdiri dari beberapa unit masukan ( ditambah sebuah bias ), dan memiliki sebuah unit keluaran. Hanya saja fungsi aktivasi merupakan fungsi biner ( atau bipolar ), tetapi memiliki kemungkinan nilai -1, 0 atau 1.
  • Dengan ketentuan untuk suatu harga threshold θ yang ditentukan sebagai berikut :
ketentuan treshold perceptron
ketentuan treshold perceptron

  • 4. Jika hasilnya bernilai negatif, maka terjadi miss classification dan kalikan hasilnya dengan negatif learning rate. Kemudiah hasilnya disimpan dalam bentuk matriks untuk seluruh inputan yang miss clasification.
  • 5. Kemudian lakukan perubahan bobot yang baru dengan menggunakan rumus :
rumus menemukan bobot baru
rumus menemukan bobot baru

  • 6. Kemudian ulangi langkah 2 hingga tidak terdapat lagi vector misclassification.
Beberapa hal yang perlu diperhatikan dalam algoritma Perceptron :
  1. Iterasi dilakukan terus menerus sehingga semua pola memiliki keluaran jaringan yang sama dengan targetnya (jaringan sudah memahami pola).
  2. Pola perubahan bobot hanya dilakukan pada pola yang mengandung kesalahan (output/keluaran jaringan != target). Perubahan yang dilakukan adalah hasil kali unit masukan dengan target. Perubahan bobot hanya terjadi jika masukan != 0).
  3. Kecepatan iterasi ditentukan oleh laju pemahaman (learning rate -alpha)( 0 <= alpha (a) <= 1 ) yang digunakan. Semakin besar nilai a (alpha) maka semakin sedikit iterasi yang diperlukan untuk pembelajaran. Namun sebaliknya jika nilai a (alpha) terlalu besar maka akan merusak pola yang sudah benar sehingga pembelajaran menjadi lambat.
Sumber : 
pertemuan 10 machine learning Institut Teknologi PLN
https://medium.com/kelompok1/mengenal-jenis-pembelajaran-mesin-supervised-learning-dan-unsupervised-learning-c588881e8ef5
https://www.ketutrare.com/2013/03/algoritma-perceptron.html

SUPERVISED LEARNING : CARA KERJA SVM (SUPPORT VECTOR MACHINE)

 

A. Pengertian 

    SVM memecahkan masalah klasifikasi biner dengan merumuskannya sebagai masalah optimasi cembung (Vapnik 1998). Masalah optimasi memerlukan pencarian margin maksimum yang memisahkan hyperplane, sambil mengklasifikasikan sebanyak mungkin titik pelatihan dengan benar. SVM mewakili hyperplane optimal ini dengan vektor dukungan. Solusi yang jarang dan generalisasi yang baik dari SVM memungkinkan adaptasi terhadap masalah regresi. SVM generalisasi ke SVR dicapai dengan memperkenalkan Îµ wilayah -insensitive sekitar fungsi, yang disebut Îµ-tabung. Tabung ini merumuskan ulang masalah optimasi untuk menemukan tabung yang paling mendekati fungsi bernilai kontinu, sambil menyeimbangkan kompleksitas model dan kesalahan prediksi. Lebih khusus, SVR dirumuskan sebagai masalah optimasi dengan terlebih dahulu mendefinisikan cembung Îµ-fungsi kerugian tidak sensitif untuk diminimalkan dan menemukan tabung paling datar yang berisi sebagian besar contoh pelatihan. 

    Oleh karena itu, fungsi multiobjektif dibangun dari fungsi kerugian dan sifat geometris tabung. Kemudian, optimasi cembung, yang memiliki solusi unik, diselesaikan, menggunakan algoritma optimasi numerik yang sesuai. Hyperplane direpresentasikan dalam bentuk vektor pendukung, yang merupakan sampel pelatihan yang terletak di luar batas tabung. Seperti dalam SVM, vektor pendukung dalam SVR adalah contoh paling berpengaruh yang mempengaruhi bentuk tabung, dan data pelatihan dan pengujian diasumsikan independen dan terdistribusi secara identik (iid), diambil dari fungsi distribusi probabilitas yang tetap tetapi tidak diketahui yang sama. dalam konteks pembelajaran terawasi.

B. Cara Kerja SVR


Ilustrasi SVM

Melalui gambar di atas kita dapat melihat ada 3 garis sejajar diagonal dari kiri bawah menuju kanan atas. Saya akan membaginya menjadi 3 garis:

Garis paling atas (garis putus-putus) adalah garis batas +, artinya garis ini merupakan garis yang melewati/melalui poin (satu data poin) yang menjadi bagian dari kluster +. Titik-titik (data points) ini sering disebut juga dengan istilah support vectors. Titik yang dilewati garis ini adalah titik terluar dari kluster + sekaligus menjadi batas bagi kluster +. Jarak antara garis ini dengan garis tengah haruslah tegak lurus (perpendicular). 
Garis tengah adalah garis pembatas antara kedua zona (+ dan -), yang dalam SVM disebut dengan istilah hyperplane atau separating plane/line. Garis ini memisahkan dua kluster, yaitu klaster + dan -. Atau bisa saja kita sebut dengan kluster A dan B, 1 dan 2, dan seterusnya (penamaan bebas, namun konvensi umum menggunakan + dan -).
Garis paling bawah (garis putus-putus) adalah garis batas -, artinya garis ini merupakan garis yang memiliki melewati satu data poin yang menjadi bagian dari kluster -. Penjelasannya sama dengan garis batas +.


Perlu diingat bahwa jarak antara garis paling atas dengan garis tengah, adalah sama dengan jarak antara garis paling bawah dengan garis tengah. Jarak ini kita sebut dengan epsilon dengan simbol Îµ. Inti dari gambar di atas (kita bahas konsep SVM dulu secara umum agar mudah memahami SVR nantinya), adalah bagaimana agar bisa membagi dua zona (dua kluster) dengan sebisa mungkin memaksimalkan jarak epsilon (ε) nya, sehingga didapat sebuah pembagian yang paling optimal. Pembagian optimal itu seperti apa? Adalah didapat dua zona yang semua data poin masuk ke dalam salah satu dari dua zona ini, dengan tingkat kepastian yang presisi (jarak epsilon paling besar).


    Jadi bisa dipahami ya apa itu SVM : Sebagai ringkasan, SVM adalah sebuah cara membagi sebuah dataset ke dalam 2 jenis dataset dengan menggunakan sebuah hyperplane. Lalu apa bedanya dengan SVR? Jika SVM itu tujuannya membagi dataset (klasifikasi) ke dalam 2 zona, maka SVR sebaliknya, yaitu bagaimana caranya agar semua dataset masuk ke dalam satu zona, dengan tetap meminimasi nilai epsilon (ε).


SVM membagi menjadi dua, SVR memasukkan semuanya menjadi satu. M

Ilustrasi SVR :  Gambar di atas menunjukkan sebuah hyperplane (garis diagonal di tengah) yang diapit oleh dua garis batas + dan garis batas – (dijelaskan di atas). Kita juga melihat ada Îµ sebagai jarak antara hyperplane dengan 2 garis batas tadi. Bisa dilihat ada beberapa datapoin yang dilingkari yang menjadi potential support vectors. Artinya titik-titik (data points) ini merupakan data poin yang bisa menjadi calon pembatas, sehingga semua data poin bisa masuk ke dalam satu kluster, dengan tetap sebisa mungkin meminimasi nilai Îµ nya. Sehingga jika divisualisasikan, garis hyperplane nya sebisa mungkin melewati semua titik-titik data (data points) tadi. Gambarnya akan tampak seperti grafik regresi pada umunya

Sekarang mari kita bahas langkah-langkah menggunakan SVR:

  1. Menyiapkan training set 
    \tau=\left \{ \underset{X}\rightarrow+\underset{Y}\rightarrow \right \}
  2. Memilih kernel dan parameternya serta regularisasinya (regularization)
  3. Membuat korelasi matriks 
    \underset{K}\rightarrow
  4. Melatih modelnya untuk mendapatkan koefisien 
    \underset{\alpha}\rightarrow =\left \{ \alpha_{i} \right \}
  5. Gunakan koefisien di atas, kemudian buat estimatornya 
    f (\underset{X}\rightarrow, \underset{\alpha}\rightarrow, x^{*} ) = y^{*}

    Barangkali ada sebagian yang melihat langkah-langkah di atas terlalu rumit, karena ada proses kalkulasi yang melibatkan vektor. Selain itu ada juga istilah kernel, yang merupakan sebuah istilah yang menjelaskan tentang  cara merubah data dari dua dimensi menjadi multi dimensi. Ada beberapa kernel yang populer dipakai di ML yaitu kernel linear, polinomial, radial basis function atau gaussian, dan sigmoid. Tenang saja, tidak perlu mengerti semuanya saat ini. Semua ini akan menjadi sangat mudah ketika mencobanya memecahkan sebuah contoh nyata.


C. Contoh Kasus 

Kali ini kita akan melakukan sebuah prediksi regresi menggunakan SVR. Kasusnya sama persis dengan kasus gaji di pembahasan regresi polinomial. Secara ringkas, perusahaan ingin mencari tahu apakah calon pegawai jujur atau tidak tentang gaji yang ia sampaikan di perusahaan sebelumnya tempat ia bekerja.

Bahasa Python

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Mengimpor library
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
 
# Mengimpor dataset
dataset = pd.read_csv('Posisi_gaji.csv')
= dataset.iloc[:, 1:2].values
= dataset.iloc[:, 2:3].values
 
# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
sc_y = StandardScaler()
= sc_X.fit_transform(X)
= sc_y.fit_transform(y)
 
# Fitting SVR ke dataset
from sklearn.svm import SVR
regressor = SVR(kernel = 'rbf')
regressor.fit(X, y)
 
# Visualisasi hasil SVR
plt.scatter(X, y, color = 'red')
plt.plot(X, regressor.predict(X), color = 'blue')
plt.title('Jujur atau tidak (SVR)')
plt.xlabel('Tingkat posisi')
plt.ylabel('Gaji')
plt.show()
 
# Memprediksi hasil
# y_pred = regressor.predict(6.5)
# y_pred = regressor.predict(sc_X.transform(6.5))
# y_pred = regressor.predict(sc_X.transform(np.array([[6.5]])))
y_pred = sc_y.inverse_transform(regressor.predict(sc_X.transform(np.array([[6.5]]))))
 
# Visualisasi hasi SVR (resolusi tinggi dan kurva yang lebih halus)
X_grid = np.arange(min(X), max(X), 0.01# Pilih 0.01 dan bukan 0.1, karena datanya sudah melalui feature scaling
X_grid = X_grid.reshape((len(X_grid), 1))
plt.scatter(X, y, color = 'red')
plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')
plt.title('Jujur atau tidak (SVR)')
plt.xlabel('Tingkat posisi')
plt.ylabel('Gaji')
plt.show()

Penjelasan:

    • Line 2 sampai 4 mengimpor library apa saja yang diperlukan
    • Line 7 sampai 9 mengimpor datasetnya
    • Line 12 mengimpor library untuk feature scaling. Mengapa kita melakukan feature scaling? Karena perbedaan antara gaji (satuannya jutaan) dengan level bekerja sangatlah jauh, sehingga jika dibuat grafiknya nantinya hanya akan terlihat garis lurus saja. Oleh karena itu feature scaling (FS) menyamakan satuannya sehingga mudah untuk divisualisasikan dan diinterpretasikan.
    • Perlu juga diingat alasan mengapa kita membutuhkan FS. Library ML lainya seperti regresi linear dan regresi polinomial sudah memiliki fitur FS di dalamnya, sehingga tidka perlu melakukan FS lagi. Namun library SVM tidak memiliki fitur FS, sehingga kali ini kita perlu melakukan FS.
  • Line 13 adalah mempersiapkan feature scaling untuk variabel X
  • Line 14 adalah mempersiapkan feature scaling untuk variabel y
  • Line 15 adalah proses melakukan FS kepada variabel X
  • Line 16 adalah proses melakukan FS kepada variabel y
  • Line 19 mengimpor sub library SVR dari library SVM
  • Line 20 mempersiapkan model SVR  dengan menggunakan kernel gaussian alias RBF (radial basis function). Mengapa memilih kernel ini? Pertama, kernel ini adalah kernel default dan paling umum dipakai. Kedua, kernel ini juga cocok untuk data non linear.
  • Line 21 membuat model SVR kita dari dataset kita (training set)
  • Line 24 sampai 29 adalah untuk melihat visualisasi dari model SVR kita.
  • Grafiknya tampak sebagai berikut

Sekilas grafik di atas tampak seperti grafik regresi polinomial, namun sebenarnya itu merupakan hasil dari model SVR. Garis biru yang tampak merupakan hyperplane dari model kita, yang sbeisa mungkin memasukkan semua datapoints ke dalam zona euclideannya. Perlu dicermati bahwa sumbu x dan y-nya bukanlah nilai awal, karena sudah melalui hasil feature scaling sebelumnya. Oleh karena itu, bisa dilihat bahwa FS sangat membantu visualisasi hasil pemodelan SVR. Karena jika tidak maka sumbu y dan sumbu x tidak akan tampak hubungan yang jelas yang disebabkan satuan x dan y terpaut jauh. Selain itu, di gambar tersebut dapat dilihat titik merah paling kanan (posisi CEO) tidak terhubung dengan hyperplane. Hal ini disebabkan karena hyperplane dari SVR menganggap titik tersebut sebagai outlier karena jaraknya terhadap titik-titik (datapoints) yang lain terlalu jauh. Sehingga tidak menjadi bagian dari kluster SVR.
Line 32 sampai 34 adalah alur berpikir menentukan prediksi y nya
Line 32 adalah perintah umum untuk melakukan prediksi regresi. Namun karena nilai 6.5 (level ke 6.5) yang ingin kita prediksi perlu dilakukan FS (feature scaling), maka perintah FS dilakukan di line 33.
Line 33 adalah perintah melakukan FS untuk nilai 6.5 dengan cara menuliskan sc_X.transform. Artinya kita menggunakan sc_X yang merupakan variabel yang sudah disiapkan untuk melakukan FS terhadap nilai variabel X. Kemudian kita cukup melakukan transform saja dan tidak perlu fit, karena kita hanya ingin melakukan FS saja untuk kemudian memprediksi nilai y-nya, dan bukan membuat model SVR (lagi). Kalau ingin membuat model SVR lagi, maka diperlukan transform dan fit dengan penulisan transform_fit seperti pada line 15.
Line 34 adalah merubah 6.5 menjadi sebuah array dengan perintah np.array[[6.5]]. Mengapa perlu menjadi array? Karena jika di inspeksi (CTRL+i) perintah transform ia memerlukan sebuah nilai array di dalamnya. Dan agar merubah angka 6.5 ke dalam sebuah array melalui library numpy maka perlu menuliskannya dengan ditutup dengan 2 brackets (kurung kotak).
Line 35 adalah perintah yang kita pakai. Perlu diingat, jika kita mengeksekusi line 34, maka yang didapat adalah nilai prediksi y dengan satuan yang sudah melalui proses FS. Bukan itu yang kita inginkan. Kita menginginkan nilai prediksi y dalam satuan juta dolar. Oleh karena itu prosesnya perlu dibalik, dengan cara melakukan inverse. Jika dieksekusi maka akan menghasilkan nilai prediksi y adalah 170K dolar per tahun. Nilai yang tidak jauh dari regresi polinomial. Walau demikian modelnya masih cukup baik dan berhasil memprediksi nilai gaji berdasarkan level pekerjanya.
Referensi :
pertemuan 8 machine learning Institut Teknologi PLN
https://www.megabagus.id/machine-learning-support-vector-regression/
https://link.springer.com/chapter/10.1007/978-1-4302-5990-9_4
https://link.springer.com/content/pdf/10.1007%2F978-1-4302-5990-9.pdf