ฉันจะฝึกอบรม HMM เพื่อการจัดหมวดหมู่ได้อย่างไร


12

ดังนั้นฉันเข้าใจว่าเมื่อคุณฝึกฝน HMM สำหรับการจัดประเภทแนวทางมาตรฐานคือ:

  1. แยกชุดข้อมูลของคุณออกเป็นชุดข้อมูลสำหรับแต่ละชั้นเรียน
  2. ฝึกหนึ่ง HMM ต่อคลาส
  3. ในชุดทดสอบเปรียบเทียบความเป็นไปได้ของแต่ละรุ่นเพื่อจำแนกแต่ละหน้าต่าง

แต่ฉันจะฝึก HMM ในแต่ละชั้นได้อย่างไร ฉันเพิ่งต่อข้อมูลที่เกี่ยวข้องกับหนึ่งคลาสเข้าด้วยกันหรือไม่ แต่ไม่ใช่ข้อมูลอนุกรมเวลาหมายถึงการเรียงลำดับ - และถ้าฉันทำอย่างนั้นฉันกำลังบอกว่าจุดข้อมูลบางอย่างต่อเนื่องกันเมื่อพวกเขาไม่ได้?

เพื่อให้เป็นรูปธรรมมากขึ้นฉันมีข้อมูล EEG ซึ่งเป็นเมทริกซ์ 96xT ที่ฉันมีเวกเตอร์ฟีเจอร์ 96 เวกเตอร์ซึ่งเป็นความหนาแน่นสเปกตรัมพลังงานของความถี่ที่แตกต่างกันจากช่องสัญญาณที่แตกต่างกันและ T คือระยะเวลาของสัญญาณ

สิ่งนี้สามารถแบ่งออกเป็นหน้าต่างที่ฉันรู้จากโปรโตคอลทดลอง (ข้อมูลมีป้ายกำกับ) ดังนั้นฉันจึงสามารถรวบรวมเมทริกซ์ 96 * t สำหรับแต่ละชั้นเรียนได้ โดยที่ t น้อยกว่า T และระบุขนาดของแต่ละหน้าต่าง

จากนั้นฉันจะฝึก HMM กับข้อมูลนี้ได้อย่างไร ถ้ามันช่วยให้ฉันพยายามใช้ชุดเครื่องมือ pmtk3 แต่ฉันเปิดให้ใช้อะไรก็ได้จริง ๆ - มันแค่ต้องสามารถจัดการกับการสังเกตที่มีคุณค่าจริง ๆ เพราะความหนาแน่นสเปกตรัมพลังงานนั้นไม่ต่อเนื่องกัน (กล่องเครื่องมือ MATLAB เริ่มต้นเท่านั้นที่สามารถจัดการได้ ด้วยการสังเกตแบบไม่ต่อเนื่อง)

จุดประสงค์คือเพื่อให้สามารถจำแนกหน้าต่างข้อมูล EEG ให้กับสภาพจิตใจที่กำหนดโดยผ่านการฝึกอบรมกับข้อมูลที่มีป้ายกำกับ มันเป็นปัญหาที่อินเตอร์เฟซที่สมองของคอมพิวเตอร์โดยใช้ข้อมูลการแข่งขันเบอร์ลิน BCI


1
ไม่หน้านี้ชุดสิ่งที่คุณต้องการ?
merours

ดูเหมือนว่า - ฉันจะลองให้แน่ใจ มันช่วยให้แน่นอนสำหรับแบบ Gaussian และ Mixture ของ Gaussian ไม่ใช่แค่ multinomials และดูเหมือนว่าคุณสามารถฝึกนางแบบทั่วโลกจากการสังเกตหลาย ๆ แบบได้ ดังนั้นมันจึงดูดี ฉันตั้งใจจะเรียนรู้ Python อย่างถูกต้องเพราะมันมีการใช้งานที่กว้างกว่ามาก ขอบคุณ :)
Alex McMurray

คำตอบ:


9

วิธีที่คุณอธิบายการใช้ HMM สำหรับการจัดหมวดหมู่นั้นใช้ได้กับการตั้งค่าที่คุณมีลำดับอิสระที่คุณต้องการจัดประเภทเท่านั้น ตัวอย่างเช่นหากฉันจำแนกความรู้สึกของประโยคว่าเป็นบวกหรือลบฉันสามารถสร้าง HMM สำหรับแต่ละคนตามที่คุณอธิบาย ดูคำตอบที่เกี่ยวข้องกับผมให้ที่นี่ ขอให้สังเกตว่าสิ่งนี้อยู่บนสมมติฐานที่ว่าฉันสามารถแยกลำดับออกเป็นชิ้นที่มีความหมายที่จะจำแนกก่อนที่ฉันจะเปรียบเทียบผู้โพสต์ สิ่งนี้ดูเหมือนจะไม่เป็นปัญหาสำหรับคุณเนื่องจากคุณมีซีรีย์ความยาวขนาดใหญ่หนึ่งชุด นี่คือสิ่งที่ฉันจะลองT

คุณพูดถึงredditว่าคุณลังเลที่จะกำหนดสถานะเดียวสำหรับแต่ละชั้นเรียน คุณเคยลองสิ่งนี้หรือไม่? มันอาจไม่ทำงานไม่ดีอย่างที่คุณคิด ปัญหาการประมาณค่าก็ง่ายขึ้นอย่างมากในกรณีนี้ การประมาณความน่าจะเป็นในการเปลี่ยนแปลงนั้นง่ายมากคุณแค่นับ นอกจากนี้คุณสามารถปรับความน่าจะเป็นการปล่อยก๊าซสำหรับแต่ละรัฐโดยพิจารณาจากข้อมูลที่คุณสังเกตและคลาสที่สอดคล้องกันโดยไม่สนใจลักษณะทางโลก

หากคุณมั่นใจว่านี่เป็นความคิดที่ไม่ดีหรือพบว่ามันทำงานได้ไม่ดี แต่ยังต้องการติดอยู่กับโมเดลทั่วไปคุณสามารถใช้บางอย่างเช่น Hierarchical HMM ตัวอย่างเช่นคุณสามารถปล่อยให้สถานะในระดับบนสุดเป็นตัวแทนของคลาสแล้วอนุญาตให้ระดับ HMM ที่ต่ำกว่าเพื่อทำโมเดลการแปรผันตามกาลเวลาภายในคลาส คุณสามารถใช้ HMM ขนาดใหญ่หนึ่งตัวเพื่อทำสิ่งที่คล้ายกันได้ ถ้าคุณมีเรียนจัดสรรรัฐสำหรับแต่ละชั้นเรียน (เพื่อรัฐโดยสิ้นเชิง) ของแบบฟอร์ม , ,N ระหว่างการฝึกอบรมที่คุณจะต้องบังคับอืมน่าจะเป็นไปในเชิงบวกเพียงกำหนดที่จะเปลี่ยนไปยังรัฐในเวลาที่N N × K s k i k = 1 , , K i = 1 , N t k tKNN×Kskik=1,,Ki=1,Ntkตรงกับฉลากในเวลาทีฉันอาจจะพูดคำนี้เล็กน้อยอย่างเชื่องช้าดังนั้นฉันหวังว่ามันจะชัดเจนว่าฉันหมายถึงอะไร เห็นได้ชัดว่าคุณสามารถพูดคุยนี้เพื่อมีจำนวนรัฐที่แตกต่างกันต่อชั้น อาจมีเครือข่ายไดนามิกเบย์ประเภทอื่น ๆ ที่คุณสามารถใช้ได้เช่นกัน วิทยานิพนธ์ของ Kevin Murphy เป็นข้อมูลอ้างอิงที่ดีเยี่ยม เขายังกล่าวถึงการแปลง HHMM เป็น HMMt

สุดท้ายคุณสามารถเปลี่ยนไปใช้โมเดลการเลือกปฏิบัติเช่นเขตข้อมูลสุ่มเงื่อนไข แบบจำลองการจำแนกจะช่วยให้คุณสามารถรวมคุณสมบัติที่ซับซ้อนมากขึ้นและแก้ไขปัญหาได้โดยตรง (ประเมินความหนาแน่นตามเงื่อนไข) นี่อาจเป็นสิ่งที่ฉันจะลองก่อน


ค่าที่สังเกตนั้นต่อเนื่องดังนั้นฉันจะเหมาะกับ gaussian หรือ GMM ตามที่กล่าวไว้ที่ reddit สิ่งนี้จะจำกัดความสามารถของตัวแบบ ฉันใช้แบบจำลองนี้เพื่อดูว่าลักษณะทางโลกมีผลต่อความถูกต้องของการจัดประเภทอย่างไรเมื่อเทียบกับแบบคงที่ ฉันทราบว่าแบบจำลองการจำแนกอาจจะดีกว่าสำหรับการจำแนกประเภทและมีการอ่านบิตของวิทยานิพนธ์ของเมอร์ฟี สิ่งนี้น่าสนใจ แต่อาจารย์ของฉันแนะนำให้ฉัน (มันเป็นโครงการปลายเปิด) ดังนั้นฉันจะลองทำดู ฉันต้องการทำงานเพิ่มเติมกับสัญญาณ EEG / MEG ในอนาคตดังนั้นฉันจะลองวิธีอื่น ๆ ในบางช่วง :)
Alex McMurray

1
ในที่สุดฉันใช้ sklearn และการสนับสนุนสำหรับการสังเกตหลายครั้ง ดูเหมือนว่าจะทำงานอย่างถูกต้อง ฉันควรขุดเข้าไปในโค้ดและดูว่ามันเกี่ยวข้องกับมันอย่างไร
Alex McMurray

1
อเล็กซ์คุณสามารถให้ลิงค์หรือตัวอย่างกับสิ่งที่คุณอ้างถึงเป็น "ความเข้าใจและการสนับสนุนสำหรับการสังเกตการณ์หลายครั้ง" ได้หรือไม่? ฉันได้รับการจัดการกับปัญหานี้ (และปัญหาที่เกี่ยวข้องกับวิธีการ "บอก" อืมที่การสังเกตหลายคนเป็นของฉลากชั้นเดียว) เป็นเวลาหลายปีแล้วและอยากจะรู้ว่าคุณพูดถึงพวกเขา
Rubenulis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.