Saya sedang mengerjakan Think Bayes (gratis di sini: http://www.greenteapress.com/thinkbayes/ ) dan saya sedang berolahraga 3.1. Berikut ringkasan masalahnya:
"Sebuah kereta api memberi nomor lokomotifnya dalam urutan 1..N. Suatu hari kamu melihat lokomotif dengan nomor 60. Perkirakan berapa banyak lokomotif yang dimiliki kereta api."
Solusi ini ditemukan dengan fungsi kemungkinan dan eksponensial sebelumnya seperti:
class Train(Suite):
def __init__(self, hypos, alpha=1.0):
# Create an exponential prior
Pmf.__init__(self)
for hypo in hypos:
self.Set(hypo, hypo**(-alpha))
self.Normalize()
def Likelihood(self, data, hypo):
if hypo < data:
return 0
else:
return (1.0/hypo)
Secara konseptual ini dikatakan, jika kita melihat jumlah kereta yang lebih besar dari salah satu hipotesis kami (1 ... 1000) maka setiap hipotesis yang lebih kecil memiliki peluang nol untuk menjadi benar. Sisa hipotesis memiliki peluang 1 / number_of_trains untuk menunjukkan kepada kami kereta dengan nomor ini.
Dalam latihan saya bekerja pada penulis kemudian menambahkan sedikit tambahan. Ini mengasumsikan hanya ada satu perusahaan. Namun dalam kehidupan nyata Anda akan memiliki campuran perusahaan besar dan kecil dan perusahaan besar (keduanya sama-sama kemungkinan). Namun, ini berarti Anda lebih mungkin melihat kereta dari perusahaan yang lebih besar karena mereka akan memiliki lebih banyak kereta.
Sekarang pertanyaannya adalah bagaimana mencerminkan hal ini dalam fungsi kemungkinan?
Ini bukan Stack Overflow jadi saya tidak benar-benar meminta bantuan pengkodean, tetapi mungkin hanya membantu tentang bagaimana saya berpikir tentang masalah ini dalam hal fungsi kemungkinan.