Làm cách nào để tôi đào tạo HMM để phân loại?


12

Vì vậy, tôi hiểu rằng khi bạn đào tạo HMM để phân loại, phương pháp tiêu chuẩn là:

  1. Tách các tập dữ liệu của bạn thành các tập dữ liệu cho mỗi lớp
  2. Đào tạo một HMM mỗi lớp
  3. Trên bộ kiểm tra so sánh khả năng của từng mô hình để phân loại từng cửa sổ

Nhưng làm thế nào để tôi đào tạo HMM trên mỗi lớp? Tôi có chỉ ghép các dữ liệu liên quan đến một lớp với nhau không? Nhưng không phải dữ liệu chuỗi thời gian có nghĩa là tuần tự - và nếu tôi làm điều đó thì tôi đang nói rằng một số điểm dữ liệu là liên tiếp khi chúng không?

Để cụ thể hơn, tôi có một số dữ liệu điện não đồ là ma trận 96xT trong đó tôi có 96 vectơ đặc trưng là mật độ phổ công suất của các tần số khác nhau từ các kênh khác nhau và T là độ dài thời gian của tín hiệu (ở một số tốc độ lấy mẫu)

Điều này có thể được chia thành các cửa sổ mà tôi biết từ giao thức thử nghiệm (dữ liệu được dán nhãn) và vì vậy tôi có thể tập hợp các bộ ma trận 96 * t cho mỗi lớp. Trong đó t nhỏ hơn T và biểu thị kích thước của mỗi cửa sổ.

Làm thế nào để tôi sau đó đào tạo HMM về dữ liệu này? Nếu nó giúp tôi cố gắng sử dụng bộ công cụ pmtk3, nhưng tôi sẵn sàng sử dụng bất cứ thứ gì thực sự - nó chỉ có thể xử lý các quan sát có giá trị thực vì mật độ phổ công suất liên tục không rời rạc (hộp công cụ MATLAB mặc định chỉ có thể xử lý với những quan sát rời rạc).

Mục đích là để có thể phân loại các cửa sổ dữ liệu EEG theo trạng thái tinh thần nhất định đã được đào tạo dựa trên dữ liệu được dán nhãn. Đây là một vấn đề giao diện máy tính não sử dụng dữ liệu Cuộc thi BCI Berlin .


1
Liệu trang này phù hợp với những gì bạn cần?
fxm

Có vẻ như - tôi sẽ thử để đảm bảo. Nó chắc chắn cho phép các mô hình Gaussian và Mixture của Gaussian chứ không chỉ là đa thức. Và có vẻ như bạn có thể đào tạo một mô hình trên toàn cầu trên nhiều quan sát . Tôi đã có ý định học Python đúng cách vì nó có cách sử dụng rộng rãi hơn nhiều. Cảm ơn :)
Alex

Câu trả lời:


9

Cách tiếp cận bạn mô tả để sử dụng HMM để phân loại thực sự chỉ áp dụng cho các cài đặt nơi bạn có các chuỗi độc lập mà bạn muốn phân loại. Ví dụ: nếu tôi phân loại tình cảm của câu là tích cực hay tiêu cực, tôi có thể tạo HMM cho mỗi câu như bạn đã mô tả. Xem câu trả lời liên quan tôi đã đưa ra ở đây . Lưu ý cách điều này dựa trên giả định Tôi có thể chia các chuỗi thành các phần có ý nghĩa để được phân loại trước khi tôi so sánh các hậu thế. Điều này dường như không phải là vấn đề đối với bạn vì bạn thực sự có một chuỗi thời gian dài . Đây là những gì tôi sẽ thử.T

Bạn đã đề cập tại reddit rằng bạn đã do dự khi chỉ định một trạng thái duy nhất cho mỗi lớp. Bạn đã thử điều này? Nó có thể không hoạt động kém như bạn nghĩ. Vấn đề ước tính cũng dễ dàng hơn đáng kể trong trường hợp này. Ước tính xác suất chuyển tiếp là dễ dàng, bạn chỉ cần tính cơ bản. Hơn nữa, bạn chỉ có thể phù hợp với xác suất phát xạ cho từng trạng thái dựa trên dữ liệu bạn quan sát và lớp tương ứng, bỏ qua các khía cạnh tạm thời.

Nếu bạn tin rằng đây là một ý tưởng tồi, hoặc thấy nó hoạt động kém nhưng vẫn muốn gắn bó với các mô hình thế hệ, bạn có thể sử dụng một cái gì đó như HMM phân cấp. Ví dụ, bạn có thể để các trạng thái ở cấp cao nhất đại diện cho các lớp và sau đó cho phép các HMM cấp thấp hơn mô hình hóa sự thay đổi theo thời gian trong các lớp. Bạn cũng có thể sử dụng một HMM lớn để đạt được điều tương tự. Nếu bạn có lớp học, phân bổ bang cho mỗi lớp học (do đó khẳng định hoàn toàn) có dạng , , . Trong quá trình đào tạo, bạn sẽ cần buộc HMM chỉ xác định xác suất dương để chuyển sang trạng thái tại thời điểm trong đóKNN×Kskik=1,,Ki=1,Ntk khớp với nhãn tại thời điểm . Tôi có thể đã nói điều này một chút vụng về vì vậy tôi hy vọng nó rõ ràng những gì tôi có ý nghĩa. Rõ ràng bạn có thể khái quát điều này để có số lượng trạng thái khác nhau cho mỗi lớp. Có thể có nhiều loại Mạng Dynamic Bayes khác mà bạn có thể sử dụng. Luận án Kevin Murphy là một tài liệu tham khảo tuyệt vời. Ông cũng thảo luận về việc chuyển đổi HHMM thành HMM.t

Cuối cùng, bạn có thể chuyển sang mô hình phân biệt đối xử như Trường ngẫu nhiên có điều kiện. Một mô hình phân biệt sẽ cho phép bạn dễ dàng kết hợp các tính năng phức tạp hơn và trực tiếp giải quyết vấn đề hơn (ước tính mật độ có điều kiện). Đây có lẽ là những gì tôi sẽ thử đầu tiên.


Các giá trị quan sát là liên tục vì vậy tôi sẽ phù hợp với một gaussian hoặc GMM. Như đã thảo luận tại reddit, điều này giới hạn khả năng của mô hình. Tôi đang sử dụng mô hình này để xem khía cạnh thời gian ảnh hưởng đến độ chính xác phân loại so với mô hình tĩnh. Tôi biết rằng các mô hình phân biệt đối xử có thể tốt hơn để phân loại và đã đọc các phần của luận án Murphy. Điều này có vẻ thú vị nhưng HMM đã được giáo sư của tôi giới thiệu cho tôi (đó là một dự án kết thúc mở) vì vậy tôi sẽ thử nó. Tôi muốn làm việc nhiều hơn với các tín hiệu EEG / MEG trong tương lai vì vậy tôi sẽ thử các phương pháp khác tại một số điểm. :)
Alex

1
Cuối cùng, tôi đã sử dụng sklearn và hỗ trợ cho nhiều quan sát. Nó dường như hoạt động chính xác. Tôi nên đào sâu vào mã và xem nó thực sự xử lý nó như thế nào.
Alex

1
Alex, bạn có thể cung cấp một liên kết hoặc ví dụ cho những gì bạn gọi là "sklearn và hỗ trợ cho nhiều quan sát" không? Tôi đã xử lý vấn đề này (và vấn đề liên quan về cách "nói" với HMM rằng nhiều quan sát thuộc về một nhãn lớp duy nhất) trong nhiều năm nay và rất muốn biết cách bạn giải quyết chúng.
Rubenulis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.