Skip to content

Machine Learning #7 | Linear Regression ตอนที่ 1

Linear Regression เป็น predictive model แบบหนึ่ง ใช้ทำนายข้อมูลแบบ continuous เป็นช่วงของตัวเลข เช่น 1-100, 0.01-0.99 ซึ่งต่างจาก classification model ที่ผลลัพธ์เป็นแบบ discrete เป็นคลาสหรือเลเบิล เช่น 0, 1 ;  สัตว์, พืช แค่ 2 คลาส หรือหลายคลาสก็ได้ เช่น หนังแนวแอคชั่น, คอมเมดี้, สารคดี, ไซไฟ ฯลฯ อะไรก็ว่าไปแล้วแต่ข้อมูล

สมมุติเรามีข้อมูล 2 ชุดที่มีความสัมพันธ์กัน เช่น ราคาบ้านกับพื้นที่บ้าน, คะแนนของเทอมต้นกับคะแนนของเทอมปลาย, จำนวนคนกับชั่วโมงที่ทำงานเสร็จ ฯลฯ เมื่อให้สิ่งที่เราต้องการทำนายเป็นแกน y (ผลลัพธ์) และข้อมูลอีกชุดคือแกน x (ฟีเจอร์) เมื่อนำข้อมูลทั้ง 2 ชุดมาพล็อตกราฟจะได้จุดที่เพิ่มขึ้นหรือลดลงเป็นเชิงเส้น (linear) ดังรูป

Selection_107

สมมุติรูปข้างบนเป็นเป็นกราฟความสัมพันธ์ระหว่างจำนวนประชากรในเมืองหนึ่งและรายได้ที่ร้านค้าแห่งหนึ่งได้ของปีก่อน เราต้องการทำนายว่าในปีนี้ที่จำนวนประชากร x=15 จะได้รายได้ y เท่าไหร่ เราสามารถนำข้อมูลปีก่อนมาสร้างเป็น model เพื่อทำนายรายได้ของปีนี้ได้ (สมมุติว่าเราคิดแค่ปัจจัยเดียวคือจำนวนประชากรและไม่คิดปัจจัยอื่น)

แนวคิดของ linear regression คือการหาเส้นตรงเส้นหนึ่งที่ลากผ่านข้อมูลให้ใกล้เคียง (fit) มากที่สุด ดังเส้นสีน้ำเงินในรูปข้างล่างนี้

Selection_108

ข้อมูลที่เรานำมาพล็อตเป็นข้อมูลที่เรารู้ผลลัพธ์อยู่แล้ว(กากบาทสีแดง) เรียกว่า “Training data” (บางทีก็เรียก training set, examples มันคืออันเดียวกัน) และเมื่อเราสามารถหาเส้นตรงที่ลากผ่านข้อมูลได้ใกล้เคียงที่สุดเราก็จะสามารถนำไปทำนายข้อมูลที่ไม่มีใน training data ข้อมูลที่ไม่เคยพบมาก่อนได้ (Unknown data/Unseen data) ซึ่งจากกราฟข้างบนที่ x=15 เราจะได้ y ~= 12 เป็นต้น แล้วเราจะรู้ได้ยังไงว่าเส้นตรงที่ลากผ่านข้อมูลควรเริ่มต้นที่เท่าใดและความชันเท่าใดจึงจะผ่านข้อมูลมากที่สุด?

จากตัวอย่างข้างต้นจะพบว่าเส้นตรงสีน้ำเงินไม่ได้ลากทับกากบาทสีแดงทั้งหมด ระยะห่างระหว่างกากสีแดงและเส้นตรงคือ “Error” ถ้า error น้อยแสดงว่าเส้นตรงลากผ่านข้อมูลมากที่สุด (ก็ make sense เนอะ) หมายความว่าถ้าเรา optimize error ให้น้อยที่สุดเราก็จะได้ model ที่สามารถทำนายได้ใกล้เคียงมากที่สุดนั่นเอง

สมมุติให้ข้อสันนิษฐาน h หรือ hypothesis คือเส้นตรงที่เราลากผ่านข้อมูล จะได้สมการเป็น

h_\theta(x) = \theta_0 + \theta_1x

เมื่อ

  • \theta_0 เป็นค่าเริ่มต้นที่เรากำหนด (จุดเริ่มต้นของเส้นตรง)
  • \theta_1 เป็น parameter ที่เราต้องการ optimize (ความชัน)
  • x คือ training data

สมการ h เป็นเพียง hypothesis ของข้อมูลเพียงหนึ่งตัวจริงๆ แล้วต้องระบุ index ของข้อมูลด้วย สมมุติผมมีข้อมูล m ตัว h ของข้อมูลตัวที่ 1 จะได้เป็น h_\theta(x_1) = \theta_0 + \theta_1x_1 และเมื่อเรารวมผลรวมทั้งหมดของ error ยกกำลัง 2 (Sum square error) หารตัวจำนวน training data จำนวน m ตัว เราเรียกสมการนี้ว่า “Cost function” แทนด้วย J เขียนเป็นสมการได้เป็น

J(\theta) = \frac{1}{2m}\sum^{m}_{i=1} (h_{\theta}(x^{i} ) -  y^{i})^2

หรือเรียกอีกอย่างว่า “Square Error” จุดประสงค์ของเราคือต้องการหาค่า J ที่น้อยที่สุด (error น้อยที่สุด) min(J(\theta))

ครั้งหน้าเดี๋ยวเรามาลองคำนวณและ optimize ค่า J กัน

One Comment

Leave a Reply

Your email address will not be published.