Kursus
Setiap model machine learning yang Anda latih sedang menyelesaikan masalah optimasi – dan hal yang sebenarnya Anda coba selesaikan disebut fungsi objektif.
Secara sederhana, ini adalah fungsi matematis yang mengukur seberapa "baik" suatu solusi. Fungsi ini menerima sekumpulan masukan dan menghasilkan satu skor. Tujuannya selalu menemukan nilai yang memaksimalkan atau meminimalkan skor tersebut. Anda akan menemukan fungsi objektif di inti segala hal, dari linear programming hingga deep learning. Ini salah satu konsep yang akan Anda lihat di mana-mana setelah memahami cara kerjanya.
Dalam artikel ini, saya akan menjelaskan apa itu fungsi objektif, bagaimana perbedaannya dengan loss dan cost function, serta bagaimana fungsinya digunakan dalam machine learning dan optimasi.
Mencari pembahasan mendalam tentang deep learning yang tetap relevan di tahun 2026? Daftar di Deep Learning in Python untuk membangun portofolio PyTorch.
Apa Itu Fungsi Objektif?
Fungsi objektif adalah fungsi matematis yang mengevaluasi seberapa baik suatu solusi.
Anda memberikannya sekumpulan masukan – parameter model, variabel keputusan – dan fungsi ini mengembalikan sebuah angka. Angka itu memberi tahu seberapa baik solusi Anda saat ini bekerja. Semakin tinggi (atau semakin rendah) angka tersebut, semakin baik (atau semakin buruk) solusi Anda.
Sekalian membahas topik ini, mari bicarakan optimasi secara umum.
Optimasi adalah proses menemukan masukan yang mendorong angka tersebut ke arah yang benar. Jika Anda meminimalkan, Anda menginginkan nilai sekecil mungkin. Jika memaksimalkan, Anda menginginkan yang terbesar. Apa pun itu, fungsi objektif adalah tolok ukur yang digunakan.
Secara sederhana, anggaplah ini sebagai sistem penilaian. Setiap kandidat solusi mendapatkan skor, dan tugas Anda adalah menemukan yang skornya terbaik.
Fungsi Objektif vs Loss Function vs Cost Function
Tiga istilah ini sering digunakan secara bergantian – tetapi artinya tidak persis sama.
Istilah fungsi objektif adalah yang paling luas. Ini adalah fungsi apa pun yang Anda coba maksimalkan atau minimalkan. Tidak harus melibatkan galat atau prediksi sama sekali – fungsi ini hanya mendefinisikan apa arti "lebih baik" untuk masalah Anda.
Sebuah loss function mengukur galat untuk satu contoh pelatihan – seberapa jauh prediksi model Anda dari nilai sebenarnya. Mean squared error untuk satu titik data, misalnya, adalah loss function.
Sebuah cost function mengagregasikan loss di seluruh dataset Anda, biasanya dengan merata-ratakannya. Jadi cost function inilah yang sebenarnya Anda minimalkan selama pelatihan – merangkum kinerja model di semua contoh, bukan hanya satu.
Dalam praktiknya, sebagian besar framework dan makalah ML menggunakan istilah-istilah ini secara longgar. Anda akan melihat "loss" digunakan ketika "cost" akan lebih tepat, dan "objective" digunakan untuk merujuk ketiganya.
Pembedaan ini penting saat Anda membaca makalah riset. Konteks akan memberi tahu mana yang sebenarnya dimaksud penulis.
Untuk perbandingan yang lebih konkret, lihat tabel di bawah:

Tabel perbandingan fungsi Objective/Loss/Cost
Fungsi Objektif dalam Optimasi
Setiap masalah optimasi memiliki tujuan dan seperangkat batasan.
Fungsi objektif mendefinisikan tujuan – apa yang Anda coba maksimalkan atau minimalkan. Constraints mendefinisikan batas – pagar yang harus dipatuhi solusi Anda. Keduanya membingkai masalahnya.
Ambil contoh alokasi sumber daya yang sederhana.
Misalkan Anda menjalankan pabrik yang memproduksi dua produk, dan Anda ingin memaksimalkan laba. Fungsi objektif Anda menangkap total laba sebagai fungsi dari berapa unit tiap produk yang Anda buat. Constraints Anda menangkap batasan – ketersediaan bahan baku, jam mesin, kapasitas tenaga kerja. Fungsi objektif memberi tahu apa yang harus dioptimalkan dan constraints memberi tahu sumber daya yang Anda miliki.
Linear programming adalah salah satu konteks paling umum untuk ini. Ini adalah metode untuk mengoptimalkan fungsi objektif linear dengan constraints linear. Digunakan di mana-mana, dari logistik, penjadwalan, rantai pasok, hingga keuangan. Matematikanya matang, dan solver dapat menangani masalah dengan ribuan variabel.
Penting untuk dicatat bahwa fungsi objektif tidak mengubah constraints yang ada – fungsi ini hanya memberi tahu solver apa yang harus dikejar. Jika Anda mengubah fungsi objektif, Anda akan mendapatkan solusi yang sama sekali berbeda, meski constraints-nya sama.
Fungsi Objektif dalam Machine Learning
Dalam machine learning, fungsi objektif mendefinisikan apa yang sebenarnya dipelajari model Anda untuk dilakukan.
Setiap kali Anda melatih model, Anda menjalankan algoritma optimasi (pikirkan gradient descent, Adam, RMSProp) yang menyesuaikan parameter model untuk meminimalkan atau memaksimalkan fungsi objektif. Model tidak tahu apa pun tentang masalah Anda. Ia hanya tahu skor yang diberikan fungsi objektif, dan berupaya meningkatkan skor itu setiap kali pembaruan.
Artinya, pilihan fungsi objektif Anda membentuk hasilnya. Ada baiknya mencoba beberapa untuk melihat mana yang paling cocok bagi kasus Anda.
Mean squared error (regresi)
Mean Squared Error (MSE) adalah fungsi objektif bawaan untuk masalah regresi. Fungsi ini mengukur rata-rata selisih kuadrat antara prediksi model Anda dan nilai target sebenarnya.

Rumus MSE
Mengkuadratkan selisih membuat semua galat bernilai positif dan memberi penalti lebih besar pada galat besar dibanding yang kecil. Prediksi yang meleset 10 menyumbang 100 ke jumlah total – bukan hanya 10. Ini membuat MSE sensitif terhadap pencilan, sesuatu yang perlu diwaspadai pada data dunia nyata yang berantakan.
import numpy as np
y_true = np.array([3.0, 5.0, 2.5, 7.0])
y_pred = np.array([2.8, 5.2, 2.0, 6.5])
mse = np.mean((y_true - y_pred) ** 2)
print(f"MSE: {mse:.4f}")

Keluaran MSE
Cross-entropy loss (klasifikasi)
Cross-Entropy Loss adalah fungsi objektif standar untuk masalah klasifikasi. Fungsi ini mengukur seberapa jauh distribusi probabilitas prediksi model Anda dari distribusi kelas sebenarnya.

Fungsi loss Cross-Entropy
Jika model Anda memberikan probabilitas tinggi pada kelas yang benar, loss rendah. Jika yakin namun salah, loss tinggi, dan itu diberi hukuman. Inilah yang mendorong model untuk memprediksi kelas yang benar dan yakin terhadap prediksinya.
import numpy as np
# True labels (one-hot encoded)
y_true = np.array([1, 0, 0])
# Model's predicted probabilities
y_pred = np.array([0.7, 0.2, 0.1])
cross_entropy = -np.sum(y_true * np.log(y_pred))
print(f"Cross-Entropy Loss: {cross_entropy:.4f}")

Keluaran Cross-Entropy
Log-likelihood
Log-likelihood lazim pada model probabilistik dan statistik. Fungsinya memaksimalkan probabilitas bahwa parameter model Anda menghasilkan data yang Anda amati.

Rumus log-likelihood
Anda bekerja dengan log dari likelihood, bukan likelihood itu sendiri, karena mengubah perkalian probabilitas menjadi penjumlahan, yang jauh lebih mudah dihitung dan dioptimalkan.
Dalam praktiknya, sebagian besar framework meminimalkan negative log-likelihood (NLL) alih-alih memaksimalkan log-likelihood. Hasilnya sama – hanya dibalik agar gradient descent bisa digunakan.
import numpy as np
from scipy.stats import norm
# Observed data
data = np.array([1.2, 2.3, 1.8, 2.1, 1.9])
# Assumed model parameters
mu, sigma = 2.0, 0.5
# Compute negative log-likelihood
nll = -np.sum(norm.logpdf(data, loc=mu, scale=sigma))
print(f"Negative Log-Likelihood: {nll:.4f}")

Keluaran log-likelihood
Pelatihan pada intinya hanyalah optimasi. Setiap forward pass menghitung nilai fungsi objektif. Setiap backward pass menghitung gradien. Dan setiap pembaruan parameter menggerakkan model ke arah yang meningkatkan skor.
Fungsi Objektif Cembung vs. Tak Cembung
Tidak semua fungsi objektif diciptakan sama. Bentuknya menentukan seberapa sulit dioptimalkan dan apakah Anda dapat mempercayai solusi yang ditemukan.
Fungsi objektif linear
Fungsi objektif linear memberi hubungan garis lurus antara masukan dan keluaran. Ketika Anda mengubah suatu masukan dengan jumlah tetap, keluaran berubah dengan jumlah tetap.
Fungsi linear digunakan dalam linear programming, di mana baik fungsi objektif maupun constraints bersifat linear. Ini membuatnya menjadi kelas fungsi objektif termudah untuk dioptimalkan, karena solver dapat secara andal menemukan optimum global, bahkan untuk masalah besar.
Fungsi objektif nonlinier
Fungsi objektif nonlinier memiliki hubungan yang lebih kompleks antara masukan dan keluaran. Sebagian besar masalah dunia nyata – dan hampir semua model machine learning – termasuk dalam kategori ini.
MSE bersifat nonlinier. Cross-entropy nonlinier. Permukaan loss jaringan saraf nonlinier. Kompleksitas tambahan memungkinkan fungsi-fungsi ini menangkap hubungan kompleks dalam data, tetapi juga membuat optimasi lebih sulit.
Fungsi cembung versus tak cembung
Di sinilah menjadi menarik.
Fungsi cembung berbentuk seperti mangkuk. Segmen garis apa pun yang ditarik antara dua titik pada kurva berada di atas atau pada kurva. Ini menjamin bahwa minimum lokal mana pun juga merupakan minimum global – artinya jika optimizer Anda menemukan dasar, itulah dasar yang sesungguhnya.
Fungsi tak cembung memiliki bentuk yang lebih tidak beraturan – banyak lembah, dataran, dan titik pelana. Optimizer dapat terjebak pada minimum lokal, lembah yang tampak seperti dasar tetapi bukan. Jaringan saraf dalam memiliki permukaan loss yang sangat tak cembung, itulah mengapa pelatihannya memerlukan penyetelan cermat terhadap learning rate, optimizer, dan inisialisasi.
Masalah cembung diselesaikan secara eksak, dan masalah tak cembung diselesaikan secara aproksimasi. Kualitas solusi Anda bergantung pada strategi optimasi.
Untuk yang visual, berikut perbandingan antara fungsi objektif linear, nonlinier, cembung, dan tak cembung:

Perbandingan tipe fungsi objektif
Cara Mengoptimalkan Fungsi Objektif
Setelah Anda memiliki fungsi objektif, Anda memerlukan cara untuk meminimalkan atau memaksimalkannya. Di sinilah algoritma optimasi berperan.
Pendekatan yang paling umum adalah gradient descent. Idenya adalah menghitung gradien fungsi objektif terhadap parameter model Anda, lalu mengambil langkah kecil ke arah yang mengurangi nilainya. Dari sana, ulangi hingga nilainya berhenti membaik.
Gradien hanyalah turunan dari fungsi objektif.
Gradien memberi tahu kemiringan di posisi Anda saat ini dan arah mana yang "menanjak." Untuk meminimalkan fungsi, Anda bergerak ke arah yang berlawanan. Untuk memaksimalkannya, Anda bergerak searah.
Proses ini bersifat iteratif, artinya untuk mencapai solusi, Anda melakukan serangkaian pembaruan kecil, masing-masing menggerakkan parameter lebih dekat ke optimum. Ukuran setiap langkah dikendalikan oleh learning rate. Nilai yang terlalu besar bisa membuat Anda melewati optimum, dan terlalu kecil membuat pelatihan lebih lama.
Dalam praktiknya, sebagian besar framework ML menggunakan varian gradient descent yang lebih cepat dan lebih stabil daripada versi dasar:
- Stochastic Gradient Descent (SGD) menghitung gradien pada satu contoh acak per langkah alih-alih seluruh dataset
- Mini-batch gradient descent menggunakan batch kecil contoh per langkah – jalan tengah antara SGD dan full-batch
- Adam menyesuaikan learning rate untuk setiap parameter, sehingga lebih mudah ditata-tuning
Fungsi objektif harus terdiferensialkan, atau setidaknya sebagian besar terdiferensialkan, agar metode berbasis gradien dapat bekerja. Tanpa turunan berarti tanpa gradien, yang berarti optimizer tidak punya arah untuk diikuti. Itu satu hal kunci yang perlu diingat.
Contoh Fungsi Objektif
Mari buat ini konkret dengan masalah regresi linear sederhana.
Misalkan Anda memprediksi harga rumah berdasarkan luas bangunan. Anda memiliki dataset rumah dengan harga yang diketahui, dan Anda ingin memasang garis melalui data yang meminimalkan galat prediksi. Fungsi objektif Anda adalah Mean Squared Error (MSE) yang rumusnya sudah Anda ketahui.
Masukannya adalah parameter model Anda – kemiringan (slope) dan intercept garis. Keluaran adalah satu angka – rata-rata galat kuadrat di seluruh prediksi. Dalam kasus ini, lebih rendah berarti lebih baik.
Berikut contoh implementasi Python yang mungkin:
import numpy as np
np.random.seed(42)
# Generate some fake housing data
square_footage = np.random.uniform(500, 3000, 100)
true_price = 150 * square_footage + 50000 + np.random.normal(0, 15000, 100)
def predict(x, slope, intercept):
return slope * x + intercept
def mse(y_true, y_pred):
return np.mean((y_true - y_pred) ** 2)
# Try two different parameter sets
slope_a, intercept_a = 150, 50000 # good fit
slope_b, intercept_b = 80, 100000 # bad fit
pred_a = predict(square_footage, slope_a, intercept_a)
pred_b = predict(square_footage, slope_b, intercept_b)
print(f"MSE (good fit): {mse(true_price, pred_a):,.2f}")
print(f"MSE (poor fit): {mse(true_price, pred_b):,.2f}")

MSE: kecocokan bagus versus buruk
Set parameter pertama menghasilkan MSE yang jauh lebih rendah, yang berarti lebih cocok terhadap data. Itulah yang digunakan optimizer untuk memutuskan arah pergerakan.
Untuk yang visual, perhatikan gambar berikut:

Contoh MSE
Anda dapat melihat kedua kecocokan terhadap data, serta permukaan MSE di berbagai nilai slope untuk melihat fungsi objektif itu sendiri.
Plot sebelah kiri menunjukkan bagaimana dua set parameter cocok terhadap data. Plot sebelah kanan menunjukkan permukaan MSE di berbagai nilai slope – fungsi objektif sebagai kurva, dengan minimum yang jelas yang coba ditemukan oleh optimizer. Setiap langkah gradient descent bergerak sepanjang kurva ini menuju minimum tersebut.
Constraints dan Fungsi Objektif
Fungsi objektif memberi tahu apa yang harus dioptimalkan. Constraints memberi tahu apa yang boleh Anda lakukan.
Dalam kebanyakan masalah nyata, Anda tidak bisa sembarang memaksimalkan atau meminimalkan. Anda bekerja dalam batasan, seperti anggaran, jendela waktu, atau kapasitas fisik. Batasan-batasan ini disebut constraints, dan mendefinisikan kumpulan solusi valid yang dapat dipilih optimizer Anda.
Ambil contoh manufaktur.
Misalkan Anda ingin memaksimalkan laba di dua lini produk. Tanpa constraints, jawabannya adalah memproduksi sebanyak mungkin. Namun Anda hanya memiliki 500 jam waktu mesin dan 1.000 unit bahan baku. Itulah constraints Anda. Fungsi objektif tetap sama (memaksimalkan laba), tetapi optimizer hanya bisa mencari dalam wilayah yang diizinkan constraints tersebut.
Saat Anda mengubah constraints, solusi optimal juga berubah, meski fungsi objektifnya tidak.
Struktur fungsi objektif dengan seperangkat constraints adalah fondasi dari optimasi terbatasi (constrained optimization). Begitulah cara linear programming bekerja, cara optimasi portofolio bekerja, dan cara banyak masalah perencanaan dunia nyata dirumuskan.
Kesimpulan
Setiap masalah optimasi – apakah Anda melatih jaringan saraf, mengalokasikan sumber daya, atau memasang model regresi – bermuara pada satu hal: sebuah fungsi yang Anda coba minimalkan atau maksimalkan.
Fungsi objektif adalah fungsi tersebut. Ia mendefinisikan apa arti "lebih baik", membimbing setiap pembaruan parameter, dan menentukan apa yang sebenarnya dipelajari model Anda. Jika Anda memilihnya dengan benar, model akan mampu menyelesaikan masalah yang Anda miliki. Namun jika salah, model akan menyelesaikan masalah yang sama sekali berbeda – sering kali tanpa ada kesalahan jelas yang memperingatkan Anda.
Memilih fungsi objektif yang tepat adalah keputusan desain dalam data science, karena hal itu membentuk segala sesuatu setelahnya. Sebagai praktisi, silakan bereksperimen – ada banyak fungsi objektif yang bisa dipilih.
Tidak yakin harus mulai dari mana? Kursus Model Validation in Python dan Hyperparameter Tuning in Python kami sama-sama tepat untuk ilmuwan data tingkat pemula hingga menengah.
FAQs
Apa itu fungsi objektif?
Fungsi objektif adalah fungsi matematis yang mengukur seberapa baik suatu solusi. Anda memberikannya sekumpulan masukan, seperti parameter model dan variabel keputusan, dan fungsi ini mengembalikan satu angka. Tujuannya selalu menemukan masukan yang membuat angka tersebut setinggi atau serendah mungkin.
Apa perbedaan antara fungsi objektif dan loss function?
Loss function adalah jenis khusus dari fungsi objektif yang digunakan dalam machine learning untuk mengukur galat prediksi pada satu contoh pelatihan. Fungsi objektif adalah istilah yang lebih luas – dapat merujuk pada fungsi apa pun yang Anda minimalkan atau maksimalkan, bukan hanya galat prediksi. Dalam praktiknya, kedua istilah sering digunakan secara bergantian, tetapi pembedaan ini penting saat membaca makalah riset.
Di mana fungsi objektif digunakan?
Fungsi objektif muncul pada masalah apa pun yang melibatkan optimasi – machine learning, linear programming, alokasi sumber daya, keuangan, logistik, dan banyak lagi. Dalam machine learning, fungsi objektif mendefinisikan apa yang dipelajari model selama pelatihan. Di luar ML, fungsi ini mendefinisikan tujuan dalam masalah optimasi, baik yang terbatasi maupun tidak.
Mengapa pemilihan fungsi objektif penting dalam machine learning?
Fungsi objektif menentukan apa yang sebenarnya dioptimalkan model Anda selama pelatihan. Jika Anda memilih yang salah, model akan meminimalkan hal yang salah – dan melakukannya dengan baik, sehingga masalahnya lebih sulit dikenali. Misalnya, menggunakan MSE untuk masalah klasifikasi tidak hanya memberikan hasil yang buruk, tetapi juga hasil yang buruk dengan keyakinan tinggi, yang lebih buruk.
Apakah fungsi objektif bisa memiliki banyak minimum?
Ya – dan ini salah satu tantangan inti dalam melatih model deep learning. Fungsi objektif tak cembung memiliki banyak minimum lokal, artinya optimizer dapat terjebak di lembah yang bukan yang terbaik secara global. Inilah sebabnya inisialisasi bobot, penjadwalan learning rate, dan pemilihan optimizer penting – semuanya memengaruhi apakah optimizer Anda pada akhirnya menemukan solusi yang baik.

