Linear Regression
เป็น Learning Algorithm ที่ใช้ในการหาความสัมพันธ์ของ Dataset กับ Answer ในรูปแบบของ function ที่จะ Predict ให้ค่าออกมาเป็นจำนวนจริงหรือเป็น Real-Value (อย่างตัวอย่างที่ได้แสดงไปในบทที่เเล้ว )
Recap Learning Model
โดยการ Training ของ Linear Regression นั้นในที่นะจะใช้อยู่สองอย่างก็คือ
- Gradient Descent
- normalEquation
Gradient Descent
จากที่ได้เกริ่นไปในบทที่เเล้ว Gradient Descent มีประโยชน์ในการ หาค่าθ ที่เหมาะสมใน Hypothesis ของเราเพื่อนำไปใช้ในการ Predict โดยใช้ประโยชน์จากการคำนวณ Cost Function โดยการเปลี่ยน θ ไปตาม Cost Function ที่ได้
เราจะใช้ประโยชน์ของ Gradient Descent นี้ในการหาค่า θj ที่เหมาะสมกับโจทย์ของเรากัน
ผมจะใช้โจทย์เดิมที่เคยใช้ในบทที่เเล้ว
ในการ Predict ราคาของแร่ชนิดหนึ่ง เรามีข้อมูลที่ได้มา
(ตัวอย่างข้อมูล จากการ Random โดยสมองน้อยๆ โดยเเถวเเรกคือ น้ำหนักของแร่ เเถวที่สองคือราคา)
เเล้วถ้าน้ำหนัก n จะมีราคาเท่าไหร่ ???
ขั้นตอนการ Applies Linear Regression ลงในโจทย์นี้มีดังนี้
Step 1 : Plot กราฟเพื่อดูเเนวโน้มของข้อมูล
เราจะต้องวิเคราะห์ว่าสมการรูปเเบบไหนที่เหมาะที่จะใช้กับข้อมูลชุดนี้ ที่ดูๆเเล้วเราสามารถใช้สมการเส้นตรงได้ (จริงเเล้วกราฟนี้สามารถใช้ parabora หรือสมการ Degree มากกว่า 2 เพื่อผลลัพท์ที่ดีกว่าได้) เราจะยึดสมการต่อไปนี้เป็นหลัก
y = (θ0) + (θ1)x
Step 2 : เลือก Algorithm
ในที่นี้เราจะใช้ Gradient Descent เนื่องจากเป็นวิธีที่ Classic เเละได้ผลสัพท์ที่ดีเสมอ
Gradient Descent ใช้ประโยชน์จากการคำนวณ Cost Function
(เจาะลึก) Cost Function
Cost Function คือการหาความเเม่นยำ หรือประสิทธิภาพที่เเท้จริง
ความหมายของตัวแปร:
h(x) คือ hypothesis หรือก็คือ function ที่เราคาดเดาว่ามันจะใช้ได้โดยการเเทนค่า θ ที่เราได้มาลงไปในสมการที่เราตั้งในที่นี้คือ y = (θ0) + (θ1)x
xi คือ input จาก example dataset ชุดที่ i
yi คือ exactly answer หรือ ผลลัพท์ที่เเท้จริง ชุดที่ i
เช่น เเร่น้ำหนัก 6 ราคา 305฿ ซึ่ง x = 6 เเละ y = 305
m คือ จำนวนของ Example หรือจำนวนข้อมูลใน Dataset
( h(x)- y )² คือ การคำนวนความเเม่นยำ ยิ่งการเเทนค่า x ลงใน hypothesis เเล้วค่ายิ่งใกล้ y เท่าไหร่ สมการตรงนี้จะยิ่งน้อย
เช่น ในกรณีที่ θ0 = -30 เเละ θ1 = 50 เเทนค่าลงในสมการ y = (θ0) + (θ1)x
h(x) = -30 + 50x เเละ เเทน x=6 ลงไป ผลลัพท์คือ h(6) =-30 + 50(6) = 270
ดังนั้น ( h(6)- y )² ซึ่ง y = 305
ดังนั้น ( h(6)- 305 )² = (270 -305)² =1225
ในกรณีที่ θ0 = -58 เเละ θ1 = 62 ( เป็นค่าที่ใช้ในบทที่เเล้ว )
h(6) =-58 + 62(6) = 314
ดังนั้น ( h(6)- 305 )² = (314 -305)² = 81
จากการเปลี่ยน θ ก็จะเห็นว่า ค่า Cost นั้นลดลงอย่างเห็นได้ชัด เพราะฉะนั้นเมื่อค่า θ เหมาะสมก็จะทำให้ค่า Cost น้อยลด ยิ่งเข้าใกล้ 0 เท่าไหร่ยิ่งดีเท่านั้น
ในส่วนของ 1/(2m) คือการหาค่าเฉลี่ย
กลับมา Gradient Descent
นำ Cost Function ใช้ยังไงล่ะ ?
เราจะนำ Cost Function มาหาอัตราการเปลี่ยนแปลง ( Derivative ) ดังสมการด้านล่าง
เเละเมื่อเขียนสมการใหม่
*** เป็นสมการสำเร็จรูป ไม่จำเป็นที่จะต้องแก้ไขอะไร สามารถนำไปใช้ได้เลย
สมการข้างต้นจะใช้ประโยชน์จากการคำนวนคำนวนค่าเฉลี่ยของการคำนวน Derivative Cost Function ของ Example input เเละ Example Answer ทั้งหมดใน Dataset เเล้วนำไปคูณกับ Learning Rate ( α ) เราจะได้ ทิศทางการเปลี่ยนแปลงของ θ ที่ควรจะเป็น หาก Cost Function มาก θ ก็จะเปลี่ยนไปมาก
Step 3 : Training
เราจะนำสมการที่ได้มาใช้โดยการวนสมการข้างต้นไปเรื่อยๆ ในจำนวน (Iterations) ที่เหมาะสม ไม่เยอะไป ไม่น้อยไป
Step 4 : Check Performance
- ในการ Train ครั้งเเรกมีโอกาสที่ θ จะได้ค่าที่ไม่เหมาะสมหรือ บางทีก็ได้ค่า NaN (Not a Number ) นั้นเพราะว่า Learning Rate ( α ) ของคุณไม่เหมาะสม คุณต้องลองลดค่า Learning Rate ลง
- หรือหาก θ ไม่ติด NaN เเต่ไม่ได้ค่าที่เหมาะสม ลง เพิ่ม Iterations หรือเพิ่ม Learning Rate ( α ) ก็เป็น option ที่ไม่แย่
Step 5 : Cheer !!
หากคุณเพียงพอใจกับ θ เเล้วก็สามารถนำไปใช้งานได้เลย หรือหากยังไม่พอใจก็มาต่อกันที่
Next Topic :: Polynomial Linear Regression ⏩ Coming Soon…