ในหัวข้อนี้ เราจะมาพูดถึงการทำนาย Sequential data โดยตรง ซึ่งพูดง่ายๆ ก็คือ การทำนายข้อมูลที่เป็น “ลำดับ” นั่นเองโ ดยปัญหาที่นำมาใช้ในเรื่องนี้จะต้องเป็นปัญหาที่ ข้อมูลมีลักษณะที่เป็นลำดับจากในอดีตจนถึงปัจจะบัน ซึ่งเราต้องการจะนำข้อมูลเหล่านั้นมาทำนายอนาคต ตัวอย่างเช่น

  • Weather in consecutive days (สภาพอากาศในวันต่อๆไป)
  • Words in a natural language text (คำในระบบภาษาธรรมชาติ)
  • Stock prices in consecutive days (ราคาหุ้นในวันต่อๆ ไป) ***

ผลที่เราคาดหวังจากการทำงานที่ได้มาจากระบบในลักษณะนี้จะเป็น การค้นพบ Patterns หรือ “รูปแบบของข้อมูล” ซึ่งลำดับของข้อมูลในอดีตมีผลต่อการทำนายข้อมูลในอนาคตเป็นทอดๆ กันไป เช่น “วันฝนตก” มักจะตามมาหลังจาก “วันฝนตก” หรือ “วันแดดออก” มักจะมาจาก “วันแดดออก แล้ว วันฝนตก” เช่นเดียวกับราคาหุ้น เราอาจจะค้นพบว่า “ราคาหุ้นขยับขึ้น” มักจะตามมาจาก “ราคาหุ้นขยับลง เป็นเวลา 3 วัน แล้วขึ้น 1 วัน” เป็นต้น

ในการทำงาน เราจะต้องมีการกำหนด State of variables ที่เราต้องการจะหาออกมา ซึ่งส่วนใหญ่จะแทนด้วย A เช่น

  • ปัญหาสภาพอากาศ Sated of Variables อาจจะถูกำหนดเป็น A = {rainny,sunny}
  • ปัญหาราคาหุ้น Sated of Variables อาจจะถูกำหนดเป็น A= {decrease,increase}

ซึ่ง States ของปัญหา ก็จะแปรผันตามตัววัด ขึ้นอยู่กับว่าเราต้องการจะวัดอะไรในอนาคตนั่นเอง หัวข้อนี้นับเป็นอีกหัวข้อที่น่าสนใจมาก ในการพูดถึงจึงจะขอแบ่งออกเป็น ซีรี่ย์ย่อยๆ เพื่อปูพื้นฐาน จนไปถึงไอเดียการนำไปประยุกต์ใช้ ดังนี้

Markov Model –> Hidden Markov Model –> Hidden Markov Model with Stock prices

750px-HiddenMarkovModel.svg

Hidden Markov Model

หมายเหตุ : ควรมีความรู้พื้นฐานทางสถิติเบื้องต้น เนื่องจากหลักการทำงานของ Markov Model อ้างอิงจากสถิติของเหตุการณ์เป็นหลัก

Markov Model

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

รูปแบบพื้นฐานของ Markov Model

Screen Shot 2016-05-12 at 14.47.54

โดยที่ Screen Shot 2016-05-12 at 14.49.20กรณีนี้ สมมุติว่าเรามี ลำดับของข้อมูลราคาหุ้นอยู่เป็นจำนวน d วัน ตัวแปรที่ต้องการจะนำมาทำนาย คือ ความน่าจะเป็นของการเกิดของราคาของวันถัดไป (ตัวแปรที่มีการขีดเส้นใต้) ส่วนตัวแปรที่เรารู้อยู่แล้ว เป็นตัวแปรที่ไม่ขีดเส้นใต้ วิธีการที่จะทำนายราคาหุ้นว่าจะ ขยับขึ้นหรือ ลง ในวันถัดไป ด้วยค่าความน่าจะเป็นเท่าไหร่ โดยใช้ Markov model คือ Maximize ค่าความน่าจะเป็นของ ตัวแปรที่เกี่ยวข้อง (สถานะของวันถัดไป จะขึ้นอยู่กับสถานะของตัวแปรเดียวกันของวันก่อนหน้า เท่านั้น)

ในการคำนวณ จะมีค่าความน่าจะเป็นที่เกี่ยวข้องทั้งหมด 2 ค่า ดังนี้

1. Transition probabilities Screen Shot 2016-05-12 at 15.01.09 สำหรับ ทุก Screen Shot 2016-05-12 at 15.01.24

Screen Shot 2016-05-12 at 15.03.36

2. Initial probability

Screen Shot 2016-05-12 at 15.05.47

มาดูตัวอย่างการคำนวณ

Example

สมมุติว่าถ้าราคาหุ้นของวันต่อไป ขึ้นอยู่กับวันก่อนหน้า เท่านั้น

โดยกำหนดความน่าจะเป็นที่ ราคาของหุ้นจะตก (decrease) ในวันพรุ่งนี้ ถ้าราคาหุ้นตัวนั้นตกในวันนี้ เท่ากับ 0.5 และ ความน่าจะเป็นที่ราคาของหุ้นจะตกในวันพรุ่งนี้ ถ้าราคาในวันนี้ขึ้น (increase) เท่ากับ 0.2 เราจะได้ตารางค่าความน่าจะเป็น ดังนี้

Screen Shot 2016-05-12 at 15.37.20

กำหนด ความน่าจะเป็นเริ่มต้น (initial probability) ดังนี้

Screen Shot 2016-05-12 at 15.44.49

คำถามคือ “ความน่าจะเป็นที่จะเกิดเหตุการณ์เหล่านี้ มีค่าเท่าไหร่”?

เหตุการณ์ที่ 1 ราคาคาหุ้นจะตกในวันพรุ่งนี้ ถ้า ราคาหุ้นนี้ขึ้นมาแล้ว 3 วันต่อเนื่อง และ ตกในวันนี้

s1 = Increase -> Increase -> Increase -> Decrease -> Decrease

เหตุการณ์ที่ 2 ราคาหุ้นจะตกในวันพรุ่งนี้ ถ้าราคาหุ้นนี้ได้ ตก สลับกับขึ้น มาแล้วเป็นเวลาสี่วันจนถึงวันนี้

s2 = Decrease -> Increase -> Decrease -> Increase -> Decrease

Calculation:

Screen Shot 2016-05-12 at 16.04.48

= 0.7 * (0.8)(0.8) *0.2*0.5

= 0.0448 #

Screen Shot 2016-05-12 at 16.07.08

= 0.3 * (0.5)(0.5) * (0.2)(0.2)

= 0.003 #

จากการคำนวณ Markov chain เราก็จะได้ว่า ความน่าเป็นเป็นของการเกิดเหตุการณ์แรกเท่ากับ 0.0448 และ ความน่าจะเป็นของเหตุการณ์ที่สองเท่ากับ 0.003 ซึ่งน้อยกว่าเหตุการณ์แรกนั่นเอง

และทั้งหมดนี้คือ จุดเริ่มต้นแนวคิดของ Markov Model ซึ่งเป็นการคำนวณเพื่อคาดคะเนว่า เหุตการณ์ที่เราสนใจในวันพรุ่งนี้ จะมีค่าความน่าจะเป็นในการเกิดเท่าไหร่ ถ้าเรารู้ว่าเหตุการณ์ที่ผ่านมามีรูปแบบอย่างไร เป็นลำดับๆ …. สำหรับ Markov model แบบง่ายอย่างที่ว่ามานี้ เราสามารถนำไปประยุกต์ใช้ได้ ถ้าเราทำการคำนวณค่าความน่าจะเป็นที่ผ่านมาของตลาดในอดีตมาก่อน ว่ามีรูปแบบการเกิดเหตุการณ์ในลักษณะที่ต่างๆ กันอย่างไร เราก็จะสามารถนำมาใช้ในการคำนวณคาดคะเนได้ว่า เหตุการณ์ที่เราสนใจนั้น มีโอกาสจะเกิด มาก หรือ น้อย แค่ไหน เพื่อสนับสนุนการตัดสินใจของเราในอนาคต

หวังว่าคงได้ความรู้ และ ได้ไอเดียเบื้องต้นกันนะคะ … ในลำดับต่อไป เราจะมาว่ากันถึงปัญหานี้ในลักษณะที่ซับซ้อนขึ้น เช่น เอ๊ะ … แล้ว ถ้ามันมีปัจจัยอื่น ที่ไม่ใช่แค่เราคาในวันก่อนหน้าเข้ามาเกี่ยวข้องในการทำนายล่ะ เช่น อินดิเคเตอร์ต่างๆ หรือ ค่าอื่นๆที่จาก Benchmark ที่เกี่ยวข้อง ซึ่งเราจะเรียกมันว่า “เหตุการณ์ที่ซ่อนเร้น” หรือ “Hidden states” ซึ่งจะนำเราไปสู่โมเดลที่ซับซ้อนขึ้น ที่เรียกว่า “Hidden Markov Model” นั่นเองค่ะ … เราจะมาพูดถึงเจ้า Hidden Markov Model หรือ HMM ที่นักวิจัยส่วนใหญ่รู้จักกันดี (ถ้าได้ลองหาเปเปอร์งานวิจัย รับรองได้เลยว่า จะต้องได้เจอเยอะมากๆ) ในอาทิตย์หน้า อาทิตย์นี้งานยุ่งมาก ต้องขอเวลาตรวจการบ้านนักศึกษาก่อน แล้วค่อยว่ามาเรื่องนี้กันต่อนะคะ ….

ที่มา

ปรับปรุงมาจากการเรียนใน รายวิชา: Statistical Pattern Recognition

ผู้สอน : Dr. Colin Campbell, Engineering Mathematics department

หลักสูตร: MsC Advanced Computing – Machine Learning, Data Mining and High Performance Computing, University of Bristol

ขอขอบคุณอาจารย์ผู้สอน และ ผู้ที่เกือบกลายเป็น Supervisor ของเราเอง ไว้ ณ ที่นี้ค่ะ