Pada pembahasan sebelumnya, kita telah mengenal probabilitas sebagai cara menghitung peluang terjadinya suatu peristiwa, serta proses stokastik sebagai cara mempelajari perubahan keadaan yang mengandung unsur acak dari waktu ke waktu.
Kita juga telah mencoba membuat simulasi cuaca menggunakan Python. Komputer menentukan apakah hari berikutnya cerah atau hujan berdasarkan peluang yang telah kita tetapkan.
Namun, muncul beberapa pertanyaan baru. Bagaimana jika kita ingin menghitung peluang keadaan dua atau tiga hari berikutnya? Bagaimana komputer mengetahui nilai peluang tersebut? Apakah peluang harus selalu ditentukan oleh programmer, atau dapat dipelajari dari data?
Pertanyaan-pertanyaan inilah yang akan membawa kita lebih jauh memahami Rantai Markov (Markov Chain), salah satu model matematika yang penting dalam kajian proses stokastik dan berbagai bidang komputasi.
1. Dari Keadaan Acak Menuju Peluang Perubahan
Bayangkan kita sedang mengamati cuaca di suatu wilayah. Untuk menyederhanakan persoalan, kita hanya menggunakan dua keadaan, yaitu cerah dan hujan.
Anggaplah berdasarkan sebuah model sederhana, kita memiliki aturan berikut:
- Jika hari ini cerah, peluang besok tetap cerah adalah 80%.
- Jika hari ini cerah, peluang besok hujan adalah 20%.
- Jika hari ini hujan, peluang besok cerah adalah 40%.
- Jika hari ini hujan, peluang besok tetap hujan adalah 60%.
Angka-angka tersebut merupakan asumsi pembelajaran, bukan hasil pengamatan meteorologi.
Perhatikan bahwa peluang besok hujan tidak selalu sama. Ketika hari ini cerah, peluang hujan besok adalah 20%. Tetapi ketika hari ini hujan, peluang hujan besok menjadi 60%.
Artinya, kita sedang mempelajari probabilitas bersyarat (conditional probability), yaitu peluang suatu kejadian dengan mempertimbangkan informasi mengenai kejadian atau keadaan lain.
Secara matematis, kita dapat menuliskannya:
P(Hujan besok | Cerah hari ini) = 0,2
Simbol garis tegak (|) dapat dibaca sebagai "dengan syarat" atau "diketahui bahwa".
Dalam konteks ini, peluang hujan besok dihitung dengan syarat bahwa keadaan hari ini adalah cerah.
2. Mengenal Matriks Transisi
Empat aturan peluang tadi sebenarnya dapat disusun menjadi sebuah tabel.
| Keadaan Hari Ini | Besok Cerah | Besok Hujan |
|---|---|---|
| Cerah | 0,8 | 0,2 |
| Hujan | 0,4 | 0,6 |
Dalam matematika, tabel angka tersebut dapat dinyatakan sebagai matriks transisi (transition matrix).
P = [
[0.8, 0.2],
[0.4, 0.6]
]
Baris pertama menunjukkan peluang perpindahan dari keadaan cerah. Baris kedua menunjukkan peluang perpindahan dari keadaan hujan.
Kolom pertama menyatakan tujuan cerah, sedangkan kolom kedua menyatakan tujuan hujan.
Setiap baris harus memiliki jumlah peluang sebesar 1, karena dalam model ini keadaan berikutnya pasti salah satu dari dua kemungkinan tersebut.
0.8 + 0.2 = 1.0 0.4 + 0.6 = 1.0
Hal ini merupakan salah satu sifat penting matriks transisi dalam Rantai Markov.
Mengapa matriks diperlukan? Karena ketika jumlah keadaan semakin banyak, hubungan antar-keadaan akan semakin sulit dikelola menggunakan percabangan if dan else.
Dengan matriks, kita dapat menyusun dan menghitung peluang perpindahan secara sistematis.
3. Menghitung Peluang Dua Hari Berikutnya
Sekarang kita coba menjawab pertanyaan yang lebih menarik.
Jika hari ini cerah, berapa peluang cuaca akan tetap cerah dua hari kemudian?
Untuk mencapai keadaan cerah dua hari kemudian, terdapat dua kemungkinan jalur:
- Hari ini cerah, besok cerah, kemudian lusa tetap cerah.
- Hari ini cerah, besok hujan, kemudian lusa kembali cerah.
Dengan asumsi sifat Markov berlaku, peluang jalur pertama adalah:
Cerah → Cerah → Cerah 0.8 × 0.8 = 0.64
Sementara peluang jalur kedua adalah:
Cerah → Hujan → Cerah 0.2 × 0.4 = 0.08
Karena kedua jalur tersebut merupakan kemungkinan yang berbeda dan saling lepas, peluang totalnya dapat dijumlahkan:
0.64 + 0.08 = 0.72
Jadi, peluang cuaca cerah dua hari kemudian adalah 72%, apabila hari ini cerah dan model transisi tadi digunakan.
Perhatikan sesuatu yang penting. Peluang tetap cerah besok adalah 80%, tetapi peluang cerah dua hari kemudian adalah 72%.
Ini tidak berarti peluang cerah akan selalu menurun setiap hari. Nilainya bergantung pada seluruh kemungkinan jalur perpindahan yang dapat terjadi.
Dengan demikian, memprediksi keadaan beberapa langkah ke depan bukan sekadar mengalikan satu angka peluang berulang-ulang. Kita harus mempertimbangkan berbagai jalur yang mungkin dilalui sistem.
4. Mengapa Matriks Dikalikan?
Perhitungan dua hari sebelumnya dapat dilakukan menggunakan perkalian matriks.
Jika P adalah matriks transisi satu hari, maka matriks peluang perpindahan selama dua hari adalah P² atau P dikalikan dengan dirinya sendiri.
P = [
[0.8, 0.2],
[0.4, 0.6]
]
P² = [
[0.72, 0.28],
[0.56, 0.44]
]
Hasil tersebut menunjukkan beberapa informasi sekaligus.
- Jika hari ini cerah, peluang cerah dua hari kemudian adalah 72%.
- Jika hari ini cerah, peluang hujan dua hari kemudian adalah 28%.
- Jika hari ini hujan, peluang cerah dua hari kemudian adalah 56%.
- Jika hari ini hujan, peluang hujan dua hari kemudian adalah 44%.
Secara umum, matriks P pangkat n menunjukkan peluang perpindahan keadaan setelah n langkah, dengan asumsi aturan transisinya tidak berubah sepanjang waktu.
Di sinilah kita mulai melihat hubungan yang erat antara probabilitas dengan aljabar linear, khususnya operasi matriks.
5. Mencoba Perhitungan dengan Python
Mari kita membuat program Python untuk menghitung peluang cuaca beberapa hari berikutnya.
Dalam contoh ini kita tidak membutuhkan pustaka tambahan. Kita cukup menggunakan list dan operasi aritmetika dasar Python.
P = [
[0.8, 0.2],
[0.4, 0.6]
]
# Hari ini dipastikan cerah
peluang = [1.0, 0.0]
for hari in range(1, 8):
cerah = (
peluang[0] * P[0][0]
+ peluang[1] * P[1][0]
)
hujan = (
peluang[0] * P[0][1]
+ peluang[1] * P[1][1]
)
peluang = [cerah, hujan]
print(
f"Hari ke-{hari}: "
f"Cerah={cerah:.4f}, "
f"Hujan={hujan:.4f}"
)
Program tersebut memulai perhitungan dengan peluang cerah sebesar 1 atau 100%, karena kita menganggap keadaan hari ini sudah diketahui secara pasti.
Setiap perulangan menghitung distribusi peluang pada hari berikutnya berdasarkan distribusi peluang sebelumnya.
Beberapa hasil awalnya adalah:
Hari ke-1: Cerah=0.8000, Hujan=0.2000 Hari ke-2: Cerah=0.7200, Hujan=0.2800 Hari ke-3: Cerah=0.6880, Hujan=0.3120 Hari ke-4: Cerah=0.6752, Hujan=0.3248
Perhatikan bahwa hasil program bukanlah urutan cuaca yang benar-benar terjadi. Program ini menghitung peluang setiap keadaan pada waktu tertentu.
Perbedaan tersebut penting. Simulasi acak menghasilkan salah satu kemungkinan perjalanan sistem, sedangkan perhitungan distribusi probabilitas menjelaskan peluang dari seluruh kemungkinan tersebut.
6. Mengapa Peluangnya Mendekati Nilai Tertentu?
Jika program sebelumnya dijalankan untuk lebih banyak hari, kita akan menemukan bahwa peluang cerah semakin mendekati sekitar 0,6667, sedangkan peluang hujan mendekati sekitar 0,3333.
Mengapa hal ini terjadi?
Dalam teori Rantai Markov, terdapat konsep yang disebut distribusi stasioner (stationary distribution).
Distribusi stasioner adalah distribusi peluang yang tidak berubah setelah dikenai aturan transisi dari sistem yang sama.
Dalam contoh kita, distribusinya adalah:
Cerah ≈ 0.6667 Hujan ≈ 0.3333
Secara matematis, distribusi stasioner biasanya dilambangkan dengan π (pi), dan memenuhi persamaan:
πP = π
Artinya, ketika distribusi peluang π dikalikan dengan matriks transisi P, hasilnya tetap π.
Untuk model dua keadaan kita, persamaan keseimbangannya dapat ditulis:
π_C = 0.8 π_C + 0.4 π_H π_H = 0.2 π_C + 0.6 π_H π_C + π_H = 1
Dari persamaan tersebut diperoleh:
π_C = 2/3 ≈ 0.6667 π_H = 1/3 ≈ 0.3333
Perlu dibedakan antara distribusi stasioner dan keadaan yang pasti terjadi.
Nilai 0,6667 tidak berarti cuaca akan mengikuti pola tetap dua hari cerah kemudian satu hari hujan. Angka itu menjelaskan distribusi peluang keseimbangan dalam model.
Perlu juga diperhatikan bahwa tidak semua Rantai Markov akan mendekati satu distribusi stasioner yang unik dari setiap keadaan awal. Untuk Rantai Markov dengan jumlah keadaan terbatas, sifat seperti irreducible dan aperiodic menjadi bagian dari kondisi yang menjamin konvergensi tersebut.
Model dua keadaan yang kita gunakan memenuhi kondisi tersebut.
7. Dari Mana Komputer Mendapatkan Angka Probabilitas?
Sejauh ini kita menggunakan angka peluang yang telah ditentukan sebelumnya, seperti 0,8 atau 0,6.
Namun, bagaimana jika kita memiliki data pengamatan yang sebenarnya?
Misalnya, setelah mengamati perpindahan keadaan cuaca pada sejumlah hari, kita memperoleh catatan berikut:
| Perpindahan | Jumlah Pengamatan |
|---|---|
| Cerah → Cerah | 80 |
| Cerah → Hujan | 20 |
| Hujan → Cerah | 40 |
| Hujan → Hujan | 60 |
Angka-angka ini adalah contoh data buatan untuk pembelajaran.
Dari data tersebut, kita dapat menghitung peluang perpindahan menggunakan frekuensi relatif.
Ketika keadaan awal cerah, terdapat 100 perpindahan yang diamati. Sebanyak 80 berakhir cerah dan 20 berakhir hujan.
P(Cerah berikutnya | Cerah) = 80 / (80 + 20) = 0.8 P(Hujan berikutnya | Cerah) = 20 / (80 + 20) = 0.2
Dengan cara yang sama, kita menghitung peluang perpindahan dari keadaan hujan:
P(Cerah berikutnya | Hujan) = 40 / (40 + 60) = 0.4 P(Hujan berikutnya | Hujan) = 60 / (40 + 60) = 0.6
Hasilnya adalah matriks transisi yang sama dengan contoh sebelumnya.
Namun, kali ini terdapat perbedaan mendasar: angka probabilitas diperoleh dari data pengamatan, bukan semata-mata ditentukan oleh programmer.
Proses memperkirakan parameter model berdasarkan data ini disebut estimasi parameter (parameter estimation).
Dalam contoh sederhana dengan keadaan yang seluruhnya dapat diamati, pembagian jumlah perpindahan terhadap jumlah pengamatan dari masing-masing keadaan merupakan estimasi maximum likelihood untuk probabilitas transisi.
8. Membuat Program yang Belajar dari Data
Sekarang kita coba membuat program Python yang dapat menghitung matriks transisi dari data urutan keadaan.
data = [
"Cerah", "Cerah", "Hujan",
"Hujan", "Cerah", "Cerah",
"Cerah", "Hujan", "Cerah",
"Hujan", "Hujan", "Cerah"
]
keadaan = ["Cerah", "Hujan"]
jumlah = {
asal: {tujuan: 0 for tujuan in keadaan}
for asal in keadaan
}
# Menghitung perpindahan berurutan
for asal, tujuan in zip(data, data[1:]):
jumlah[asal][tujuan] += 1
# Menghitung peluang transisi
for asal in keadaan:
total = sum(jumlah[asal].values())
print("Dari", asal)
if total == 0:
print(" Belum ada pengamatan")
continue
for tujuan in keadaan:
peluang = jumlah[asal][tujuan] / total
print(
f" Ke {tujuan}: "
f"{peluang:.3f}"
)
Perhatikan bagian berikut:
for asal, tujuan in zip(data, data[1:]):
Perintah tersebut mengambil dua keadaan yang berurutan, kemudian menghitung seberapa sering perpindahan dari keadaan pertama menuju keadaan kedua terjadi.
Dengan demikian, program tidak lagi membutuhkan nilai peluang yang kita tuliskan secara manual. Program memperkirakan probabilitas berdasarkan pola perpindahan dalam data.
Inilah salah satu bentuk sederhana dari pembelajaran model probabilistik.
Tentu saja, jumlah data yang sedikit dapat menghasilkan estimasi yang kurang stabil. Nilai peluang yang diperoleh juga bergantung pada apakah data pengamatan cukup mewakili sistem yang ingin dimodelkan.
Jika suatu perpindahan belum pernah muncul dalam data, estimasi frekuensi relatif akan memberikan peluang nol. Dalam penerapan nyata, kita dapat menggunakan teknik seperti smoothing agar perkiraan peluang tidak terlalu bergantung pada keterbatasan sampel.
9. Apa Hubungannya dengan Machine Learning?
Sekarang kita dapat melihat hubungan antara Rantai Markov dengan Machine Learning secara lebih konkret.
Sebuah sistem memiliki data pengamatan. Dari data tersebut, komputer menghitung pola perpindahan. Pola itu kemudian digunakan untuk memperkirakan kemungkinan keadaan berikutnya.
Prosesnya dapat diringkas sebagai berikut:
Data Pengamatan
|
v
Menghitung Frekuensi Perpindahan
|
v
Memperkirakan Probabilitas Transisi
|
v
Membangun Model Rantai Markov
|
v
Memperkirakan Keadaan Berikutnya
Contoh sederhana ini menunjukkan bagaimana data digunakan untuk memperkirakan parameter sebuah model dan membuat prediksi.
Namun, tidak semua sistem Machine Learning menggunakan Rantai Markov, dan tidak semua persoalan dapat diselesaikan hanya dengan mempertimbangkan keadaan terakhir.
Salah satu asumsi utama model Markov orde pertama adalah bahwa peluang keadaan berikutnya, setelah keadaan sekarang diketahui, tidak lagi memerlukan informasi dari keadaan-keadaan sebelumnya.
Asumsi ini dapat dituliskan:
P(X[t+1] | X[t], X[t-1], ..., X[0]) = P(X[t+1] | X[t])
Dalam banyak sistem nyata, asumsi tersebut mungkin terlalu sederhana. Misalnya, prediksi cuaca yang baik membutuhkan lebih banyak informasi, termasuk tekanan udara, suhu, kelembapan, kondisi atmosfer, dan perubahan yang telah terjadi sebelumnya.
Karena itu, pemilihan keadaan dan jenis model menjadi bagian penting dalam perancangan sistem prediksi.
10. Penerapan dalam IoT dan Robotika
Prinsip yang sama dapat kita gunakan untuk memahami keadaan perangkat elektronika maupun sistem robotika.
Bayangkan sebuah motor listrik yang memiliki tiga kategori kondisi:
- Normal
- Panas
- Gangguan
Jika kita memiliki data kondisi motor dari waktu ke waktu, kita dapat menghitung seberapa sering motor berpindah dari normal menjadi panas, dari panas kembali normal, atau dari panas menuju gangguan.
Data tersebut dapat digunakan untuk membangun model probabilistik perubahan kondisi perangkat.
Misalnya, sebuah sistem memperoleh estimasi bahwa motor yang sedang panas memiliki peluang lebih besar memasuki kondisi gangguan pada pengamatan berikutnya dibandingkan motor yang masih normal.
Informasi ini dapat menjadi salah satu masukan bagi sistem pemantauan kondisi dan pemeliharaan prediktif (predictive maintenance).
Dalam praktikum IoT, data yang diperlukan dapat berasal dari sensor suhu, arus listrik, getaran, atau parameter lain yang relevan dengan karakteristik perangkat.
Akan tetapi, pembacaan sensor tidak otomatis sama dengan keadaan sebenarnya. Pengukuran dapat mengandung noise, sedangkan kategori seperti normal atau gangguan harus ditentukan berdasarkan kriteria yang dapat dipertanggungjawabkan.
Jika keadaan sistem tidak dapat diamati secara langsung, kita akan membutuhkan pendekatan probabilistik yang lebih lanjut, misalnya Hidden Markov Model (HMM).
11. Apa yang Perlu Diuji dalam Praktikum?
Untuk memastikan bahwa kita tidak sekadar menyalin program, terdapat beberapa eksperimen yang dapat dilakukan.
- Ubah nilai peluang transisi dan amati pengaruhnya terhadap prediksi beberapa hari berikutnya.
- Jalankan simulasi acak berkali-kali, kemudian bandingkan frekuensi hasil simulasi dengan peluang teoretis.
- Tambahkan jumlah data pengamatan dan periksa apakah estimasi probabilitas berubah.
- Buat keadaan tambahan, misalnya berawan, kemudian susun matriks transisi tiga keadaan.
- Bandingkan hasil prediksi model dengan data baru yang tidak digunakan untuk menghitung probabilitas transisi.
Eksperimen terakhir sangat penting. Sebuah model tidak cukup hanya mampu menjelaskan data yang digunakan untuk membuatnya. Kita juga perlu memeriksa apakah model tersebut dapat menghasilkan prediksi yang berguna terhadap pengamatan baru.
Dengan cara tersebut, kita mulai memasuki persoalan evaluasi model dalam Machine Learning.
12. Dari Probabilitas Menuju Model yang Lebih Kompleks
Melalui pembahasan ini, kita telah bergerak dari probabilitas sederhana menuju perhitungan distribusi peluang, matriks transisi, estimasi parameter, dan prediksi keadaan berikutnya.
Ada beberapa konsep matematika yang ternyata saling terhubung: probabilitas bersyarat membantu kita memahami peluang perpindahan; matriks membantu kita menghitung perubahan beberapa langkah; statistika membantu memperkirakan parameter dari data; dan pemrograman memungkinkan seluruh proses tersebut diuji melalui eksperimen.
Rantai Markov bukanlah model yang dapat menjelaskan seluruh bentuk ketidakpastian. Namun, ia menyediakan contoh yang sangat baik untuk memahami bagaimana sebuah sistem komputasi menggunakan data dan model matematika untuk membuat prediksi probabilistik.
Pada pembahasan selanjutnya, kita dapat memperdalam persoalan yang lebih menarik: bagaimana komputer memperkirakan keadaan yang tidak dapat diamati secara langsung, hanya berdasarkan pengukuran sensor yang mengandung gangguan?
Persoalan tersebut akan membawa kita kepada Hidden Markov Model, sebuah pendekatan yang menghubungkan proses stokastik dengan inferensi probabilistik.
Referensi untuk Pendalaman
- ProbabilityCourse.com. Discrete-Time Markov Chains: Stationary and Limiting Distributions. Baca referensi.
- Cornell University. Markov Chains, Stationary Distributions and Convergence. Baca materi PDF.
- Mathematical Methods in Data Science. Limit Behavior: Stationary Distributions. Baca referensi.