Pernahkah kita bertanya mengapa prakiraan cuaca tidak selalu benar? Mengapa hasil pengukuran sebuah sensor dapat sedikit berubah meskipun kondisi yang diukur relatif sama? Atau bagaimana sebuah aplikasi dapat memperkirakan apa yang mungkin kita ketik berikutnya?
Pertanyaan-pertanyaan tersebut membawa kita kepada salah satu persoalan penting dalam matematika dan komputasi, yakni bagaimana memahami sesuatu yang hasilnya tidak selalu dapat dipastikan.
Dalam kehidupan sehari-hari, kita terbiasa menghadapi ketidakpastian. Kita tidak mengetahui secara pasti apakah besok akan hujan, berapa kendaraan yang akan melintas di suatu jalan dalam satu jam, atau apakah sebuah perangkat elektronik akan mengalami kerusakan dalam waktu dekat.
Meskipun demikian, ketidakpastian bukan berarti tidak dapat dipelajari. Kita dapat mengumpulkan data, mengamati pola, dan menghitung seberapa besar kemungkinan suatu peristiwa terjadi.
Dua konsep matematika yang membantu kita memahami persoalan tersebut adalah Probabilitas (Probability) dan Proses Stokastik (Stochastic Process).
1. Apa Itu Probabilitas?
Probabilitas adalah cabang matematika yang mempelajari peluang terjadinya suatu peristiwa.
Untuk memahaminya, bayangkan kita sedang melempar sebuah koin yang memiliki dua sisi, yakni angka dan gambar.
Sebelum koin tersebut dilemparkan, kita tidak mengetahui sisi mana yang akan muncul. Namun, apabila koinnya seimbang, kita mengetahui bahwa kedua sisi memiliki peluang yang sama.
Peluang munculnya angka adalah 1 dari 2 kemungkinan, atau dapat dituliskan:
P(Angka) = 1/2 = 0,5 = 50%
Huruf P berasal dari kata Probability, sedangkan angka 0,5 menunjukkan bahwa peluang munculnya angka adalah 50 persen.
Perlu dipahami bahwa peluang 50 persen tidak berarti setiap dua kali lemparan pasti menghasilkan satu angka dan satu gambar. Kita mungkin memperoleh angka tiga kali berturut-turut, atau bahkan sepuluh kali berturut-turut.
Probabilitas tidak menjamin hasil suatu percobaan tunggal. Probabilitas menjelaskan bagaimana kemungkinan hasil tersebut didistribusikan.
2. Mencoba Probabilitas dengan Python
Kita dapat menggunakan Python untuk mensimulasikan pelemparan koin tanpa membutuhkan koin sungguhan.
Python memiliki modul bernama random yang dapat digunakan untuk menghasilkan pilihan atau angka secara acak.
import random
hasil = random.choice(["Angka", "Gambar"])
print("Hasil lemparan:", hasil)
Program tersebut meminta komputer memilih salah satu dari dua kemungkinan, yaitu angka atau gambar.
Jika dijalankan beberapa kali, hasilnya mungkin berbeda. Inilah simulasi sederhana dari sebuah percobaan acak.
Sekarang kita tingkatkan percobaannya menjadi 1.000 kali pelemparan.
import random
jumlah_angka = 0
for i in range(1000):
hasil = random.choice(["Angka", "Gambar"])
if hasil == "Angka":
jumlah_angka += 1
persentase = jumlah_angka / 1000 * 100
print("Jumlah angka:", jumlah_angka)
print("Persentase:", persentase, "%")
Ketika program dijalankan, kita mungkin memperoleh 493 kali angka, 506 kali angka, atau hasil lainnya.
Meskipun tidak selalu tepat 500 kali, persentasenya biasanya akan mendekati 50 persen.
Apabila jumlah percobaan diperbesar menjadi 10.000 atau 100.000 kali, persentase hasil biasanya semakin mendekati peluang teoretisnya.
Fenomena ini berkaitan dengan prinsip matematika yang disebut Law of Large Numbers (Hukum Bilangan Besar).
Secara sederhana, hukum tersebut menjelaskan bahwa rata-rata hasil dari banyak percobaan acak yang memenuhi syarat tertentu cenderung mendekati nilai harapannya ketika jumlah percobaan semakin besar.
3. Apa Itu Proses Stokastik?
Sekarang bayangkan kita tidak hanya ingin mengetahui peluang munculnya angka pada sebuah koin, tetapi ingin mengamati urutan hasil pelemparannya dari waktu ke waktu.
Atau kita ingin mengamati bagaimana suhu ruangan berubah setiap detik, bagaimana jumlah kendaraan berubah setiap menit, maupun bagaimana kondisi cuaca berkembang dari hari ke hari.
Di sinilah kita mulai memasuki konsep Proses Stokastik (Stochastic Process).
Secara sederhana, proses stokastik adalah sekumpulan variabel acak yang diamati berdasarkan urutan tertentu, biasanya waktu.
Jika probabilitas membantu kita menghitung peluang suatu kejadian, proses stokastik membantu kita mempelajari bagaimana keadaan yang mengandung unsur acak berkembang sepanjang waktu.
Perhatikan contoh berikut:
| Probabilitas | Proses Stokastik |
|---|---|
| Berapa peluang besok hujan? | Bagaimana cuaca berubah selama 30 hari? |
| Berapa peluang koin menghasilkan angka? | Bagaimana urutan hasil dari 100 kali pelemparan koin? |
| Berapa peluang sebuah mesin rusak? | Bagaimana kondisi mesin berubah selama satu tahun? |
| Berapa peluang sensor menghasilkan pembacaan tertentu? | Bagaimana pembacaan sensor berubah setiap detik? |
Perbedaan pentingnya bukan sekadar jumlah kejadian yang diamati, melainkan bahwa dalam proses stokastik kita mempelajari sebuah kumpulan nilai acak yang memiliki indeks waktu atau urutan.
4. Membuat Simulasi Proses Stokastik dengan Python
Mari kita membuat program sederhana untuk mensimulasikan cuaca selama tujuh hari.
Kita anggap hanya terdapat dua kemungkinan kondisi cuaca, yaitu cerah dan hujan.
import random
for hari in range(1, 8):
cuaca = random.choice(["Cerah", "Hujan"])
print("Hari", hari, ":", cuaca)
Salah satu kemungkinan keluarannya adalah:
Hari 1 : Cerah Hari 2 : Cerah Hari 3 : Hujan Hari 4 : Cerah Hari 5 : Hujan Hari 6 : Hujan Hari 7 : Cerah
Setiap kali program dijalankan, urutan cuacanya dapat berbeda.
Program ini merupakan contoh proses stokastik yang sangat sederhana. Kita memiliki keadaan acak yang diamati pada tujuh waktu berbeda.
Namun, simulasi tersebut belum mempertimbangkan satu kenyataan penting: dalam kehidupan sehari-hari, keadaan cuaca besok sering berkaitan dengan keadaan cuaca hari ini.
Jika hari ini sedang hujan karena suatu sistem cuaca yang bertahan lama, misalnya, kemungkinan besok masih hujan dapat berbeda dibandingkan ketika hari ini cerah.
Bagaimana cara memasukkan hubungan tersebut ke dalam program?
5. Mengenal Markov Chain
Markov Chain (Rantai Markov) adalah salah satu jenis proses stokastik yang memiliki sifat menarik: peluang keadaan berikutnya ditentukan oleh keadaan sekarang, tanpa harus mengetahui seluruh riwayat keadaan sebelumnya.
Sebagai contoh pembelajaran, kita menetapkan aturan sederhana berikut:
- Jika hari ini cerah, peluang besok tetap cerah adalah 80 persen.
- Jika hari ini cerah, peluang besok hujan adalah 20 persen.
- Jika hari ini hujan, peluang besok tetap hujan adalah 60 persen.
- Jika hari ini hujan, peluang besok cerah adalah 40 persen.
Angka-angka tersebut hanyalah asumsi untuk memudahkan pembelajaran, bukan hasil pengamatan meteorologi yang sebenarnya.
Sekarang kita dapat membuat program yang mempertimbangkan keadaan cuaca sebelumnya.
import random
cuaca = "Cerah"
for hari in range(1, 8):
print("Hari", hari, ":", cuaca)
angka = random.random()
if cuaca == "Cerah":
if angka < 0.8:
cuaca = "Cerah"
else:
cuaca = "Hujan"
else:
if angka < 0.6:
cuaca = "Hujan"
else:
cuaca = "Cerah"
Perhatikan perintah random.random(). Perintah ini menghasilkan angka acak mulai dari 0 hingga kurang dari 1.
Jika cuaca hari ini cerah dan angka acak kurang dari 0,8, program mempertahankan kondisi cerah. Jika tidak, program mengubahnya menjadi hujan.
Dengan cara tersebut, peluang keadaan besok bergantung pada keadaan hari ini.
Model ini memang sangat sederhana, tetapi sudah memperlihatkan salah satu gagasan penting dalam pemodelan stokastik, yakni perubahan suatu keadaan dapat dimodelkan menggunakan peluang perpindahan antarkeadaan.
6. Mengenal Random Walk: Perubahan yang Memiliki Unsur Acak
Selain Markov Chain, terdapat konsep lain yang sangat menarik untuk dipelajari, yakni Random Walk, atau langkah acak.
Bayangkan seseorang berdiri di atas sebuah garis bilangan. Setiap kali melangkah, ia memilih secara acak apakah akan bergerak satu langkah ke kiri atau satu langkah ke kanan.
Jika awalnya ia berada di posisi nol, urutan perjalanannya mungkin seperti berikut:
Langkah 1 : Posisi 1 Langkah 2 : Posisi 2 Langkah 3 : Posisi 1 Langkah 4 : Posisi 0 Langkah 5 : Posisi -1
Kita tidak mengetahui posisi akhirnya secara pasti karena setiap langkah memiliki unsur acak.
Namun, kita dapat memodelkan pergerakannya menggunakan Python.
import random
posisi = 0
for langkah in range(1, 11):
perubahan = random.choice([-1, 1])
posisi = posisi + perubahan
print("Langkah", langkah, ":", posisi)
Program tersebut sangat sederhana. Setiap langkah menghasilkan perubahan sebesar -1 atau +1, kemudian perubahan tersebut ditambahkan ke posisi sebelumnya.
Random Walk memiliki banyak penerapan dalam matematika, fisika, ekonomi, komputasi, dan berbagai bentuk simulasi.
Konsep ini juga membantu kita memahami bagaimana sebuah sistem dapat berkembang dengan mengikuti perubahan acak dari satu keadaan ke keadaan berikutnya.
7. Apa Hubungannya dengan Elektronika, IoT, dan Robotika?
Bagi kita yang mempelajari elektronika, Internet of Things (IoT), dan robotika, probabilitas dan proses stokastik bukanlah sekadar materi matematika yang terpisah dari praktikum.
Bayangkan kita memasang sebuah sensor suhu pada ESP32, kemudian membaca hasil pengukurannya setiap detik.
Walaupun suhu ruangan relatif stabil, hasil pembacaannya mungkin terlihat seperti berikut:
Detik 1 : 28.1 °C Detik 2 : 28.2 °C Detik 3 : 28.1 °C Detik 4 : 28.3 °C Detik 5 : 28.2 °C
Mengapa hasil pembacaannya tidak selalu sama?
Ada beberapa kemungkinan penyebab, antara lain perubahan suhu yang sebenarnya, keterbatasan ketelitian sensor, gangguan listrik, serta noise atau gangguan pengukuran.
Untuk mempelajari persoalan tersebut, kita dapat membuat simulasi sederhana dengan menambahkan gangguan acak terhadap suatu nilai suhu yang diasumsikan tetap.
import random
suhu_sebenarnya = 28.0
for detik in range(1, 11):
noise = random.uniform(-0.2, 0.2)
suhu_terbaca = suhu_sebenarnya + noise
print(
"Detik", detik, ":",
round(suhu_terbaca, 2), "°C"
)
Dalam contoh tersebut, nilai suhu sebenarnya dianggap tetap pada 28°C, sementara hasil pembacaan memperoleh tambahan gangguan acak antara -0,2°C hingga +0,2°C.
Ini merupakan simulasi pengukuran yang mengandung noise acak, bukan model lengkap karakteristik sensor suhu nyata.
Dari simulasi sederhana ini, kita dapat mulai mempelajari mengapa pembacaan sensor perlu dianalisis secara statistik dan mengapa dalam beberapa keadaan diperlukan teknik penyaringan data seperti moving average atau Kalman filter.
Dalam robotika, persoalan serupa muncul ketika robot memperkirakan posisi berdasarkan pembacaan sensor yang tidak sempurna. Dalam IoT, kita juga dapat memanfaatkan model probabilistik untuk memperkirakan kemungkinan suatu perangkat mengalami gangguan berdasarkan data pengamatan sebelumnya.
8. Mengapa Probabilitas dan Proses Stokastik Dipelajari dalam Machine Learning?
Sekarang kita sampai kepada pertanyaan penting: mengapa materi probabilitas dan proses stokastik sering diperkenalkan sebagai bagian dari fondasi pembelajaran Machine Learning?
Jawabannya berkaitan dengan sifat data yang digunakan oleh Machine Learning.
Dalam pemrograman konvensional, kita sering menuliskan aturan secara langsung. Misalnya, apabila suhu lebih dari 30°C, program menampilkan keterangan panas.
suhu = 35
if suhu > 30:
print("Panas")
else:
print("Tidak Panas")
Program tersebut menghasilkan keputusan berdasarkan aturan yang sudah ditentukan oleh programmer.
Namun, bagaimana apabila kita ingin komputer mempelajari sendiri hubungan antara suhu, kelembapan, waktu, dan tingkat kenyamanan manusia?
Kita mungkin memiliki ribuan data pengamatan. Dalam data tersebut, suhu 30°C dapat dianggap panas oleh sebagian orang, tetapi masih dianggap nyaman oleh orang lainnya.
Artinya, hubungan antara data masukan dan hasil yang ingin diprediksi tidak selalu berupa aturan mutlak.
Machine Learning memungkinkan komputer mempelajari pola dari contoh-contoh tersebut untuk menghasilkan prediksi atau keputusan terhadap data baru.
Probabilitas menyediakan perangkat matematika untuk memahami ketidakpastian dalam data, menyusun model probabilistik, serta menafsirkan peluang suatu hasil.
Sebagai contoh, sebuah model klasifikasi dapat menghasilkan perkiraan bahwa suatu kondisi memiliki peluang 80 persen untuk termasuk kategori tertentu. Nilai tersebut perlu ditafsirkan sesuai jenis model dan kualitas kalibrasi probabilitasnya, bukan dianggap otomatis sebagai kepastian kebenaran.
Adapun proses stokastik menjadi sangat penting ketika data memiliki urutan waktu, seperti data sensor, pergerakan robot, perubahan kondisi mesin, dan berbagai bentuk data sekuensial lainnya.
9. Keacakan Juga Digunakan Saat Komputer Belajar
Ada satu hal menarik yang mungkin belum banyak diketahui pemula: unsur acak tidak hanya muncul dalam data, tetapi juga dapat digunakan dalam proses pelatihan model Machine Learning.
Salah satu contohnya adalah Stochastic Gradient Descent (SGD).
Ketika melatih sebuah model, komputer berusaha menyesuaikan parameter agar kesalahan prediksinya semakin kecil.
Daripada selalu menggunakan seluruh data pelatihan untuk menghitung setiap pembaruan parameter, SGD dapat menggunakan satu contoh data yang dipilih secara acak pada setiap langkah pembaruan. Variannya yang menggunakan kelompok kecil data dikenal sebagai mini-batch SGD.
Akibatnya, pembaruan parameter dapat berfluktuasi. Namun, dengan pengaturan yang sesuai, proses tersebut dapat membantu model menemukan parameter yang menghasilkan prediksi lebih baik.
Dengan demikian, keacakan dalam Machine Learning tidak selalu menjadi sesuatu yang harus dihilangkan. Dalam berbagai algoritma, keacakan justru menjadi bagian dari metode komputasi yang digunakan.
10. Apakah Semua Machine Learning Memerlukan Proses Stokastik?
Penting untuk membedakan antara probabilitas sebagai fondasi matematika yang sangat luas penggunaannya dan proses stokastik sebagai bidang yang lebih khusus.
Tidak semua algoritma Machine Learning harus menggunakan model proses stokastik secara eksplisit. Sebagian algoritma dapat dipelajari melalui aljabar linear, kalkulus, statistika, dan optimisasi tanpa terlebih dahulu membahas proses stokastik secara mendalam.
Namun, memahami probabilitas memberikan dasar yang kuat untuk mempelajari ketidakpastian, distribusi data, pengambilan sampel, estimasi, serta evaluasi model.
Sementara itu, proses stokastik memperluas pemahaman kita ketika berhadapan dengan sistem yang mengalami perubahan acak menurut waktu atau urutan tertentu.
11. Apa yang Sebaiknya Dipahami oleh Pemula?
Sebelum mempelajari rumus yang lebih rumit, ada beberapa gagasan mendasar yang sebaiknya benar-benar dipahami.
Pertama, tidak semua kejadian dapat diprediksi secara pasti. Meskipun demikian, kita masih dapat mempelajari peluang terjadinya suatu hasil.
Kedua, keacakan tidak berarti tidak memiliki pola. Hasil satu percobaan mungkin sulit dipastikan, tetapi kumpulan hasil dari banyak percobaan dapat menunjukkan keteraturan statistik.
Ketiga, suatu keadaan dapat berubah mengikuti aturan peluang. Dalam beberapa sistem, keadaan sekarang memengaruhi kemungkinan keadaan berikutnya.
Keempat, model matematika adalah penyederhanaan dari kenyataan. Simulasi cuaca, pelemparan koin, maupun pembacaan sensor yang kita buat dalam Python belum tentu mewakili seluruh kerumitan sistem sebenarnya.
Kelima, hasil prediksi harus diuji. Model yang dapat menghasilkan prediksi belum tentu memiliki tingkat ketepatan yang baik, terutama ketika digunakan pada data yang berbeda dari data pelatihannya.
Penutup
Probabilitas dan proses stokastik mengajarkan kita bahwa ketidakpastian bukanlah penghalang untuk melakukan pengamatan, pengukuran, dan pemodelan secara ilmiah.
Melalui probabilitas, kita belajar menghitung kemungkinan terjadinya suatu peristiwa. Melalui proses stokastik, kita mempelajari bagaimana kumpulan keadaan acak berkembang sepanjang waktu atau urutan tertentu.
Keduanya menjadi bagian penting dari fondasi matematika modern yang digunakan dalam statistika, Machine Learning, kecerdasan buatan, pemrosesan sinyal, elektronika, IoT, robotika, dan berbagai bidang komputasi lainnya.
Bagi pemula, memahami konsep tersebut tidak harus dimulai dengan persamaan matematika yang rumit. Kita dapat memulainya dari pelemparan koin, simulasi cuaca, langkah acak, hingga pembacaan sensor menggunakan Python.
Dari percobaan yang tampak sederhana itulah kita mulai memahami bagaimana matematika dan komputasi membantu manusia mempelajari dunia yang tidak selalu dapat diprediksi secara pasti.