Can you define : Bad algorithm or Bad data?

การทำโมเดล Machine Learning นั้นย่อมมีความแตกต่างจากการสร้างระบบเทรดธรรมดาอยู่ไม่น้อย ในวันนี้ผมจะขอพูดในมุมมองของการตัดสินใจว่า โมเดล ML ที่เราพัฒนามามันจะ “ดี” หรือ “ไม่ดี” นั้น บางทีก็ไม่สามารถตัดสินได้จากผลลัพธ์ของโมเดลเพียงอย่างเดียว

ต้องกลับไปดูด้วยว่า เราได้ทำการสอนโมเดลนั้นด้วย “Good data” หรือ “Bad data” เคยได้ยินคำว่า “garbage in garbage out” กันมั้ยครับ? ไม่ว่าโมเดลจะดีซักแค่ไหน เช่น อย่าง Neural Network ที่กำลังโด่งดังไปทั่วโลกตอนนี้ในฐานะ Deep Learning โมเดลกับที่ Deepmind สามารถเอาชนะแชมป์โลกในเกมส์ GO แต่ถ้าเราสอนโมเดลด้วยขยะ สิ่งได้โมเดลจะให้มาก็ได้แค่ขยะ ในทางกลับกัน ถ้าเราได้ให้ input ที่ดีพอในการสอนโมเดล output ที่ได้ ก็มีโอกาสจะดีสูง แม้ว่าจะทำการทดสอบบนโมเดลที่ไม่ซับซ้อน เช่น Linear Regression, Support Vector Machine

แต่ถ้าเราทำได้ทั้งสองอย่างล่ะครับ เราได้ให้ input ที่เหมาะสมกับโมเดลด้วย และ โมเดลเราก็ทำงานได้ดีด้วย แน่นอนครับผลลัพธ์ก็จะออกมาในรูปแบบที่น่าประทับใจ อย่างที่เราได้เห็นกันในตัวอย่างมากมาย เพื่อไปให้ถึง ณ จุดนั้น เดี๋ยวเรามาดูอย่างกันหน่อยครับ ว่าปัญหาของ Bad data ที่ได้กล่าวถึงไปแล้วนั้น มีหน้าตาเป็นอย่างไร?

Non representative training data

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

01.png

รูปนี้คือรูป ความสุขของคนชาติต่างๆเมื่อเทียบกับ GDP  โดย แกน X เปน รายได้ต่อคน แกน Y คือความสุขในชีวิตของเขา

ถ้าอ่านจากโพสเก่าๆเรื่อง Linear Regression และ Linear Regression for  Stock Market Analysis จะเห็นเลยว่าไอ้ข้อมูลนี้เราแก้ได้สบายๆด้วย Linear Regression แน่นอน โดยการสร้างเส้นลงไปอธิบายผลลัพธ์มัน ซึ่งมันจะทำงานได้สมบูรณ์และดีเลยล่ะ ถ้าเราลองคาดการณ์ด้วยสายตา เราจะเห็นว่ามันมีเทรน ยิ่งมีเงินมากยิ่งสุขมากใช่ไหมครับ แต่ปัญหาคือ ถ้าข้อมูลนี้มันไม่ได้บ่งบอกถึงข้อมูลนั้นจริงๆล่ะ? มาดูอีกรูปกันดีกว่า

02.png

แกน X และ Y ตามเดิมครับ เพิ่มเติมคือมีข้อมูลใหม่เข้ามา เส้นปะสีฟ้าคือเส้นที่ได้การคำนวณจาก Algorithm Linear Regression  จากข้อมูลที่ไม่สามารถอธิบายพฤติกรรมของข้อมูลที่แท้จริง (สีฟ้า)

ถ้าเราอาศัยข้อมูลจากข้อมูลสีฟ้าอย่างเดียว นำมาทำนายข้อมูลที่เข้ามาใหม่ ได้ผลลัพธ์ที่ไม่สามารถทำงานได้ดีหรอก เช่น ถ้าข้อมูล Luxembourg เข้ามาเราจะไปทำนายที่ตำแหน่งเดียวกับเส้นปะสีฟ้าด้านบนโน้นเลย ขณะที่ข้อมูลจริงไม่ได้เป็นแบบนั้น ขณะที่ประเทศที่มีเงินน้อยรายได้น้อยกว่าอย่าง Brazil Mexico ก็อาจจะมีความสุขกว่าประเทศที่รวยกว่าก็ได้ ฉะนั้นการทำ Machine Learning Model การหา Feature ที่สามารถอธิบายพฤติกรรมของข้อมูล(หรืออีกนัยคือเป้าหมายของเรา)ได้ดี นั้นสำคัญมากครับ

ถ้าเรามี Feature อ่าวคำว่า Feature โผล่มาไงล่ะนี่ ต้องไม่ลืมว่า ข้อมูลเมื่อเรานำมาใช้เพื่อสร้างโมเดลวเคราะห์ทาง Machine Learning ข้อมูลนั้นๆจะถูกมองเป็น Feature นะครับ สมมุติเรามี Feature หลายๆตัว เช่น

  • จำนวนคนในครอบครัว – ความสุข
  • ระดับการศึกษา – ความสุข
  • ระยะห่างจากบ้านไปยังที่ทำงาน – ความสุข
  • จำนวนรังมดแถวบ้าน – ความสุข

สมมุตว่าเราเลือกข้อมูลที่มีผลกระทบต่อเป้าหมาย อย่าง ระยะห่างจากบ้านไปยังที่ทำงาน – ความสุข แต่ถ้าเลือกช่วงข้อมูลมาไม่ดีแบบตัวอย่างด้านบนก็เจ๊งนะครับ

หรือ ถ้าเราไปเอาข้อมูลที่ไม่เกี่ยวข้องกับข้อมูลมาทำเลย อย่างข้อมูลเช่น จำนวนรังมดแถวบ้าน – ความสุข เอาเข้าจริงคงไม่มีใครไปเก็บข้อมูลแบบนี้หรอกครับ(ฮา) ก็เจ๊งเหมือนกัน

03

ถึงจะดูดีแต่ถ้าเจอข้อมูลแย่ๆเข้าไปก็ไม่รอดหรอกนะครับ

แล้วมันไปเกี่ยวกับการเทรดอย่างไร จริงๆแล้วก็เกี่ยวทั้งหมดแหละครับ ในการเทรดเราก็ต้องใช้ Feature มาเป็นโมเดลเพื่อทำการสร้างโมเดลในการทำนาย/การวิเคราะห์ข้อมูลเหมือนกัน โดย Feature นั้นถ้าจะพูดไปก็เหมือน Indicator ต่างๆในที่นี้ไม่ใช่เฉพาะ Technical Indicator เช่น  EMA, RSI, ADX เท่านั้นแต่จะเป็นข้อมูลอะไรก็ได้ที่ส่งผลกับหุ้นหรือค่าเงินเป้าหมายของเรา ตัวอย่างเช่น ข้อมูลการขึ้นภาษีของ FED, อัตราการว่างงาน เป็นต้น

04.png

รูปนี้แกน X คือ ค่า Indicator ทางเทคนิค แกน Y คือ ค่า Return ของหุ้น PTT ก็ถือว่าเป็นข้อมูลที่ไม่ได้บอกพฤติกรรมของหุ้นได้ดีเท่าไหร่ครับ ถ้าเรามีแบบนี้ไปใส่ในโมเดลนั้นมันก็ทำงานได้แต่ไม่มีประสิทธิภาพนัก

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

ถ้าเราไปดูมันที่ผลลัพธ์โดยที่เราไม่เข้าใจมันจริงๆ มันจะนำมามาสู่การสรุปผลได้ยากว่า ตกลงมัน “Bad Algorithm” หรือ “Bad Data” กันแน่นะ เมื่อสรุปไม่ถูก ก็แก้ไขมันต่อไปไม่ได้ จะเกิดปัญหากับการเรียนรู้ของเราครับ

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s