मैं छिपे हुए मार्कोव मॉडल और विकी पेज पर सीखना शुरू कर रहा हूं, साथ ही गिथब पर भी बहुत सारे उदाहरण हैं लेकिन अधिकांश संभावनाएं पहले से ही हैं (बारिश का 70% परिवर्तन, राज्य बदलने का 30% मौका इत्यादि। ।)। वर्तनी जांच या वाक्यों के उदाहरण, किताबों का अध्ययन करने लगते हैं और फिर शब्दों की संभावनाओं को रैंक करते हैं।छुपे हुए मार्कोव मॉडल में संभावनाओं का निर्णय लेने के तरीके क्या हैं?
तो क्या मार्कोव मॉडल में संभावनाओं को समझने का एक तरीका शामिल है या क्या हम किसी अन्य मॉडल को पूर्व-गणना करने के लिए मानते हैं?
क्षमा करें अगर यह प्रश्न बंद है। मुझे लगता है कि यह सीधा तरीका है कि छिपी मार्कोव मॉडल संभावित अनुक्रमों का चयन कैसे करता है लेकिन संभावना भाग मेरे लिए थोड़ा भूरा है (क्योंकि इसे अक्सर प्रदान किया जाता है)। उदाहरण या कोई जानकारी बहुत अच्छी होगी।
मार्कोव मॉडल से परिचित नहीं उन लोगों के लिए, यहाँ (विकिपीडिया से) http://en.wikipedia.org/wiki/Viterbi_algorithm एक उदाहरण है और http://en.wikipedia.org/wiki/Hidden_Markov_model
#!/usr/bin/env python
states = ('Rainy', 'Sunny')
observations = ('walk', 'shop', 'clean')
start_probability = {'Rainy': 0.6, 'Sunny': 0.4}
transition_probability = {
'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3},
'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6},
}
emission_probability = {
'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5},
'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1},
}
#application code
# Helps visualize the steps of Viterbi.
def print_dptable(V):
print " ",
for i in range(len(V)): print "%7s" % ("%d" % i),
print
for y in V[0].keys():
print "%.5s: " % y,
for t in range(len(V)):
print "%.7s" % ("%f" % V[t][y]),
print
def viterbi(obs, states, start_p, trans_p, emit_p):
V = [{}]
path = {}
# Initialize base cases (t == 0)
for y in states:
V[0][y] = start_p[y] * emit_p[y][obs[0]]
path[y] = [y]
# Run Viterbi for t > 0
for t in range(1,len(obs)):
V.append({})
newpath = {}
for y in states:
(prob, state) = max([(V[t-1][y0] * trans_p[y0][y] * emit_p[y][obs[t]], y0) for y0 in states])
V[t][y] = prob
newpath[y] = path[state] + [y]
# Don't need to remember the old paths
path = newpath
print_dptable(V)
(prob, state) = max([(V[len(obs) - 1][y], y) for y in states])
return (prob, path[state])
#start trigger
def example():
return viterbi(observations,
states,
start_probability,
transition_probability,
emission_probability)
print example()
का बहुत अच्छा अवलोकन है। स्लाइड से पहले मैंने जो लिंक पढ़े हैं वे वास्तव में अच्छे थे। उन्होंने मेरे बहुत सारे प्रश्न स्पष्ट किए लेकिन मुझे अभी भी अनिश्चितता है कि संभावना को कैसे पता चला है। उदाहरण के लिए स्लाइड पर, 41 में प्रत्येक नोड (1/3,1/2, आदि ..) की संभावनाएं हैं। मैं यह समझने की कोशिश कर रहा हूं कि उन्हें कैसे प्राप्त किया जाए, और उन्हें अपडेट करना जारी रखें। यह शायद स्लाइड में है और मैं इसे याद कर रहा हूं, मैं इसके लिए नया हूं इसलिए मैं इसे सप्ताहांत में अधिक सावधानीपूर्वक अध्ययन करने जा रहा हूं। स्लाइड और उत्तर के लिए धन्यवाद। – Lostsoul
@ लोस्टसौल - दाएं, स्लाइड 41 और वह क्षेत्र सिर्फ यह बता रहा है कि एचएमएम सामान्य रूप से कैसे काम करते हैं। स्लाइड 68 के आसपास, यह अवलोकनों के एक सेट से पैरामीटर (सामूहिक रूप से λ के रूप में संदर्भित) का अनुमान लगाने के बारे में बात करना शुरू कर देता है। और एल्गोरिदम जो बाउम-वेल्च करता है। – Dusty
धन्यवाद फिर से मैं आपको धन्यवाद नहीं दे सकता। मेरा गणित बेकार है इसलिए यह समझने के लिए कि क्या हो रहा है, मुझे स्लाइड के कई रीडिंग (और गूगलिंग के बहुत सारे) ले गए। मैं गणित को पूरी तरह समझ नहीं पा रहा हूं लेकिन मुझे अब तर्क मिल गया है। बहुत बहुत धन्यवाद, धूलदार। – Lostsoul