Linear Regression

WONGVARIT PANCHAROEN
3 min readApr 30, 2020

--

เป็น Learning Algorithm ที่ใช้ในการหาความสัมพันธ์ของ Dataset กับ Answer ในรูปแบบของ function ที่จะ Predict ให้ค่าออกมาเป็นจำนวนจริงหรือเป็น Real-Value (อย่างตัวอย่างที่ได้แสดงไปในบทที่เเล้ว )

Recap Learning Model

ขั้นตอนการ Learning ของ Supervised Machine Learning

โดยการ Training ของ Linear Regression นั้นในที่นะจะใช้อยู่สองอย่างก็คือ

  1. Gradient Descent
  2. 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)

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 ) ดังสมการด้านล่าง

เเละเมื่อเขียนสมการใหม่

โดยที่ n คือจำนวน feature

*** เป็นสมการสำเร็จรูป ไม่จำเป็นที่จะต้องแก้ไขอะไร สามารถนำไปใช้ได้เลย

สมการข้างต้นจะใช้ประโยชน์จากการคำนวนคำนวนค่าเฉลี่ยของการคำนวน Derivative Cost Function ของ Example input เเละ Example Answer ทั้งหมดใน Dataset เเล้วนำไปคูณกับ Learning Rate ( α ) เราจะได้ ทิศทางการเปลี่ยนแปลงของ θ ที่ควรจะเป็น หาก Cost Function มาก θ ก็จะเปลี่ยนไปมาก

Step 3 : Training

โดยที่ n คือจำนวน feature

เราจะนำสมการที่ได้มาใช้โดยการวนสมการข้างต้นไปเรื่อยๆ ในจำนวน (Iterations) ที่เหมาะสม ไม่เยอะไป ไม่น้อยไป

เนื่องจากสมการเป็นเส้นตรง xi ที่ θ0 มีค่าเท่ากับ 1

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…

--

--

WONGVARIT PANCHAROEN

Student in majority of Computer Engineering From King Mongkut’s Institute of Technology Ladkrabang