2011-10-02 34 views
7

Tôi có một chuỗi 500 quan sát chuyển động của một con chim. Tôi muốn dự đoán chuyển động 501 của loài chim sẽ là gì. Tôi đã tìm kiếm trên web và tôi đoán điều này có thể được thực hiện bằng cách sử dụng HMM, tuy nhiên tôi không có bất kỳ kinh nghiệm nào về chủ đề đó. Bất cứ ai có thể giải thích các bước của một thuật toán được sử dụng để giải quyết vấn đề này?Mô hình ẩn Markov dự đoán quan sát tiếp theo

+0

tôi cho rằng một số đã có. .. chiều dài ... http://en.wiki pedia.org/wiki/Hidden_Markov_model – Gleno

Trả lời

10
x1-x2-x3-x4-x5......x500-x501 
| | | | |  | 
y1 y2 y3 y4 y5  y500 

x - actual state 
y - observations 

P(y_i|x_i) - how you think the observation depends on the actual state 
P(x_i|x_(i-1)) - how you think the actual state evolves 

for i = 1,2,3...,501: 
    write down best-guess of x_i based on y_i* and x_(i-1)** 
you have your solution, since you only care about the last state 

* missing in step 1 
** missing in step 501 

Trên đây được gọi là thuật toán forward-backward (http://en.wikipedia.org/wiki/Forward-backward_algorithm) và là một trường hợp đặc biệt của thuật toán tổng hợp sản phẩm (trên cây mạng Bayesian và cây mạng Markov) trên loại đặc biệt của cây (một đơn giản chuỗi với các nút treo tắt). Bạn có thể bỏ qua bước "lùi" vì bạn không cần nó vì bạn chỉ quan tâm đến trạng thái cuối cùng.

Nếu xác suất chuyển đổi trong HMM của bạn chưa được biết, bạn phải:

  • thực hiện một thuật toán học, chẳng hạn như EM (được gọi là Baum-Welch khi thực hiện trên HMMs)
  • hãy đoán ngây thơ dựa trên kiến ​​thức miền (ví dụ như nếu các quốc gia ẩn của bạn là ADN bạn có thể đếm tần số của các sự kiện chuyển tiếp cho các trạng thái trước đó bằng cách thủ công ghi nhãn các hiệu ứng chuyển tiếp trên dữ liệu DNA và tính toán tần số)
+0

xin lỗi tôi không thể hiểu câu trả lời của bạn. Tôi chỉ có một chuỗi gồm 500 con số từ 0 đến 8. (như 5, 4, 6, 6, ..., 0, 2) Và tôi muốn có số 501 tốt nhất có thể. – user975733

+0

đầu tiên suy nghĩ về những câu hỏi này: ** 1) ** '" Phạm vi của các trạng thái thực/ẩn của tôi là gì? (Có thể không phải 0-8, nó có thể là 0-100 hoặc thậm chí không phải là số như { 'cao', 'thấp'}) "' ** 2) ** '" Nếu tôi quan sát số 5, điều đó có nghĩa gì về trạng thái thực/ẩn? "' ** 3) ** '" Nếu thực tế trạng thái tại thời gian = t là [cái gì đó], tôi nghĩ trạng thái tại thời điểm = t + 1 sẽ là gì? (Ví dụ, nếu x500 = 'cao', thì con chim sẽ chuyển sang bay 'thấp' như thế nào ?) "' – ninjagecko

Các vấn đề liên quan