Home » python » SciPy Optimizers: Contoh Code dan Cara Membuatnya

SciPy Optimizers: Contoh Code dan Cara Membuatnya

by Catur Kurnia Sari
by Catur Kurnia Sari

Optimizers di SciPy

Optimizers adalah sekumpulan prosedur yang ditentukan dalam SciPy yang berfungsi untuk menemukan nilai minimum suatu fungsi, atau akar persamaan.

Fungsi Optimizers

Pada dasarnya, semua algoritma dalam Pembelajaran Mesin tidak lebih dari persamaan kompleks yang perlu diminimalkan dengan bantuan data yang diberikan.

Akar Persamaan

NumPy mampu menemukan akar untuk persamaan polinomial dan linier, tetapi tidak dapat menemukan akar untuk persamaan non linier, seperti ini:

x + cos (x)

Untuk itu kita bisa menggunakan fungsi optimze.root SciPy.

Fungsi ini membutuhkan dua argumen yang diperlukan:

fun – fungsi yang merepresentasikan persamaan.

x0 – tebakan awal untuk root.

Fungsi mengembalikan objek dengan informasi mengenai solusi.

Solusi sebenarnya diberikan di bawah atribut x dari objek yang dikembalikan.

Contoh:
Temukan akar persamaan x + cos (x)

from scipy.optimize import root
from math import cos

def eqn(x):
  return x + cos(x)

myroot = root(eqn, 0)

print(myroot.x)

Catatan: Objek yang dikembalikan memiliki lebih banyak informasi tentang solusi.

Contoh:
Cetak semua informasi tentang solusi (bukan hanya x yang merupakan root)

from scipy.optimize import root
from math import cos

def eqn(x):
  return x + cos(x)

myroot = root(eqn, 0)

print(myroot)

Meminimalkan Fungsi

Suatu fungsi, dalam konteks ini, mewakili suatu kurva, kurva memiliki titik tinggi dan titik rendah.

Poin tinggi disebut maxima.

Titik rendah disebut minimum.

Titik tertinggi dalam keseluruhan kurva disebut maxima global, sedangkan sisanya disebut maxima lokal.

Titik terendah dalam keseluruhan kurva disebut minimum global, sedangkan sisanya disebut minimum lokal.

Menemukan Minima

Kita bisa menggunakan fungsi scipy.optimize.minimize() untuk meminimalkan fungsi tersebut.

Fungsi minimize() mengambil argumen berikut:

fun – fungsi yang merepresentasikan persamaan.

x0 – tebakan awal untuk root.

method – nama metode yang akan digunakan. Nilai-nilai hukum:

‘CG’
‘BFGS’
‘Newton-CG’
‘L-BFGS-B’
‘TNC’
‘COBYLA’
‘SLSQP’

callback – fungsi yang dipanggil setelah setiap iterasi pengoptimalan.

options – kamus yang mendefinisikan parameter ekstra:

{
     “disp”: boolean – print detailed description
     “gtol”: number – the tolerance of the error
  }

Contoh:
Minimalkan fungsi x ^ 2 + x + 2 dengan BFGS

from scipy.optimize import minimize

def eqn(x):
  return x**2 + x + 2

mymin = minimize(eqn, 0, method='BFGS')

print(mymin)

You may also like