Portofolio mengubah materi yang telah dipelajari menjadi bukti kemampuan yang dapat diperiksa orang lain. Topik ini membahas tahap perencanaannya, yaitu kriteria pemilihan masalah, pemetaan setiap bidang jalur matematika ke satu masalah terapan, uji kelayakan kecil menggunakan kode, dan penyusunan batas keberhasilan tiap proyek. Setelah perencanaan selesai, setiap proyek memiliki sasaran angka dan verifikasi yang sudah ditetapkan sebelum baris kode pertama ditulis.
Kriteria masalah yang layak dikerjakan#
Masalah portofolio yang baik dapat diverifikasi secara komputasi, yaitu angka akhirnya dapat dicek ulang dengan metode kedua yang independen. Kriteria ini menempati urutan pertama karena kebiasaan verifikasi adalah benang merah jalur ini, sehingga masalah yang jawabannya tidak dapat dibandingkan dengan apa pun akan melumpuhkan kebiasaan itu sejak awal. Masalah yang layak juga memiliki cakupan kecil, kira-kira satu sampai tiga berkas kode, agar tenaga terpakai pada matematikanya dan bukan pada perangkat lunak penunjangnya.
Kriteria berikutnya menyangkut isi. Satu masalah sebaiknya menyatukan beberapa konsep sekaligus, misalnya matriks perancang, sistem linear, dan residual pada satu proyek regresi kuadrat terkecil (least squares), yaitu pencarian garis atau bidang dengan jumlah kuadrat selisih prediksi terkecil. Dengan begitu, satu proyek mewakili bidang yang luas dan bukan satu rumus tunggal. Contoh datanya wajib netral dan non-komersial, seperti catatan sensor suhu, hasil undian dadu, atau peta lab, sebab portofolio menunjukkan kemampuan teknis dan bukan promosi produk. Terakhir, data sebaiknya dapat dibuat atau dibenihkan di dalam kode, sehingga hasil proyek dapat direproduksi oleh siapa pun dengan perintah yang sama.
Pemetaan bidang materi ke masalah terapan#
Setiap bidang yang telah dipelajari diwakili satu masalah terapan, sehingga portofolio mencakup seluruh jalur dan tidak menumpuk pada satu topik favorit. Tabel berikut memetakan empat bidang materi ke konsep yang harus ditunjukkan kodenya serta contoh masalah yang memenuhi kriteria pada bagian sebelumnya.
| Bidang materi | Konsep yang ditunjukkan | Masalah terapan |
|---|---|---|
| Bilangan dan aljabar | presisi float, persamaan linear, logaritma | pengonversi satuan dengan pemeriksaan presisi |
| Vektor dan matriks | matriks perancang, sistem linear, regresi kuadrat terkecil | pencatat konsumsi list rumah dengan garis tren |
| Turunan dan gradien | turunan parsial, gradien, gradient descent | pembanding solusi eksak dan lintasan gradient descent |
| Probabilitas dan diskrit | simulasi berbenih, kombinatorika, penelusuran graf | analisis dadu berbenih dan pencari rute lab dengan BFS |
Kolom tengah berfungsi sebagai daftar periksa saat pengerjaan, yaitu proyek belum lengkap selama salah satu konsepnya belum muncul dan terverifikasi. Kolom kanan menyatakan keluaran akhirnya dalam satu frasa, dan frasa itulah yang kemudian ditulis ulang menjadi batas keberhasilan. Gambar berikut merangkum alur dari empat bidang materi menuju portofolio yang terdokumentasi.
Proyek pencatat konsumsi list pada baris kedua tabel digunakan sebagai contoh pengerjaan dan penulisan pada topik lain dalam modul ini, sedangkan tiga proyek sisanya dikerjakan dengan pola yang persis sama. Pola itu selalu berupa pemilihan masalah, uji kelayakan kecil, pengerjaan, verifikasi, lalu dokumentasi. Karena setiap proyek mewakili satu bidang, keempatnya dikerjakan berurutan dan tidak ada yang dilewati.
Uji kelayakan dengan kode kecil#
Sebelum sebuah masalah masuk daftar final, kelayakannya diuji dengan spike, yaitu skrip uji coba pendek yang menjawab satu pertanyaan teknis lalu selesai setelah keputusan diambil. Pertanyaannya dinyatakan terlebih dahulu, misalnya apakah hubungan jam pemakaian AC dan konsumsi list pada pencatatan pendek cukup linear untuk dimodelkan dengan sebuah garis. Data ujinya dibuat sintetis menggunakan np.random.default_rng(42) dengan benih tetap, sehingga eksperimen yang sama dapat diulang kapan pun dengan hasil yang persis sama.
import numpy as np
# uji coba kecil: apakah pencatatan pendek dapat dijelaskan oleh sebuah garis
rng = np.random.default_rng(42)
jam = np.array([0.0, 1.5, 3.0, 4.5, 6.0, 7.5, 9.0, 10.5])
kwh = 3.1 + 0.8 * jam + rng.normal(0.0, 0.3, size=jam.size)
# metode 1: rumus kemiringan dari rata-rata dan kovarians sampel
slope = np.sum((jam - jam.mean()) * (kwh - kwh.mean())) / np.sum((jam - jam.mean())**2)
intersep = kwh.mean() - slope * jam.mean()
# metode 2: fungsi bawaan NumPy pada jalur perhitungan yang berbeda
slope_fit, intersep_fit = np.polyfit(jam, kwh, 1)
print("rumus kovarians :", round(intersep, 4), round(slope, 4))
print("np.polyfit :", round(intersep_fit, 4), round(slope_fit, 4))
print("dua metode cocok:", np.allclose([intersep, slope], [intersep_fit, slope_fit]))rumus kovarians : 3.1012 0.782
np.polyfit : 3.1012 0.782
dua metode cocok: TrueSkrip di atas menghitung kemiringan dan intersep melalui dua jalur yang independen, yaitu rumus kovarians sampel yang ditulis secara manual dan fungsi np.polyfit bawaan NumPy. Kedua jalur menghasilkan pasangan angka yang sama dan np.allclose mengembalikan True, sehingga pendekatan garis layak dipertanggungjawabkan. Angkanya pun masuk akal, yaitu kemiringan 0.782 dekat dengan 0.8 yang digunakan saat menyusun data uji, dan intersep 3.1012 dekat dengan 3.1. Apabila kedua metode memberi angka yang berjauhan, masalahnya perlu ditinjau ulang sebelum masuk daftar, misalnya dengan mengganti bentuk modelnya atau mencatat data yang lebih panjang.
Batas keberhasilan tiap proyek#
Batas keberhasilan adalah daftar pernyataan yang dapat diperiksa benar atau salahnya, dan daftar ini ditulis sebelum pengerjaan dimulai. Fungsinya mencegah proyek melebar karena pekerjaan dinyatakan selesai hanya ketika seluruh butirnya terpenuhi. Untuk proyek pencatat konsumsi list, batas keberhasilannya dapat dituliskan sebagai berikut.
- Data pencatatan tiga puluh hari tersimpan dalam satu berkas CSV dengan tiga kolom.
- Koefisien garis dihitung dari persamaan normal menggunakan
np.linalg.solve. - Verifikasi dengan
np.linalg.lstsqdannp.polyfitsama-sama mengembalikanTrue. - Prediksi untuk satu nilai jam pemakaian yang belum dicatat disertai rincian bagiannya.
- Dokumen portofolio memuat bagian masalah, model, verifikasi, cara menjalankan, dan keterbatasan.
Setiap butir menggunakan kata kerja yang dapat diamati, seperti tersimpan, dihitung, dan mengembalikan, sehingga pemeriksaannya tidak bergantung pada selera. Butir yang gagal dicatat sebagai pekerjaan tersisa, sedangkan butir yang lolos menjadi materi bagian verifikasi pada dokumen akhir. Pola yang sama diterapkan pada tiga proyek lainnya dengan menyesuaikan besaran yang dihitung, misalnya probabilitas empiris untuk analisis dadu atau panjang rute untuk pencari rute lab.
Ringkasan#
- Masalah portofolio dipilih dengan kriteria verifikasi metode ganda, cakupan kecil, gabungan beberapa konsep, dan data yang dapat direproduksi.
- Empat bidang materi dipetakan ke empat masalah terapan sehingga seluruh jalur terwakili secara seimbang.
- Uji kelayakan berupa skrip kecil berbenih menguji layak tidaknya sebuah masalah sebelum pengerjaan penuh dimulai.
- Batas keberhasilan ditulis sebelum pengerjaan dan menjadi definisi selesai yang terukur.
Referensi#
- Mathematics for Machine Learning — Cambridge University Press — Perumusan masalah dari data menuju model yang dapat diuji, termasuk regresi linear sebagai studi kasusnya.
- NumPy 2.1 documentation — NumPy
— Fungsi
np.polyfitdan generator acak berbenihdefault_rngyang digunakan pada uji kelayakan.