Last updated on July 11, 2016
Linear Regression เป็น predictive model แบบหนึ่ง ใช้ทำนายข้อมูลแบบ continuous เป็นช่วงของตัวเลข เช่น 1-100, 0.01-0.99 ซึ่งต่างจาก classification model ที่ผลลัพธ์เป็นแบบ discrete เป็นคลาสหรือเลเบิล เช่น 0, 1 ; สัตว์, พืช แค่ 2 คลาส หรือหลายคลาสก็ได้ เช่น หนังแนวแอคชั่น, คอมเมดี้, สารคดี, ไซไฟ ฯลฯ อะไรก็ว่าไปแล้วแต่ข้อมูล
สมมุติเรามีข้อมูล 2 ชุดที่มีความสัมพันธ์กัน เช่น ราคาบ้านกับพื้นที่บ้าน, คะแนนของเทอมต้นกับคะแนนของเทอมปลาย, จำนวนคนกับชั่วโมงที่ทำงานเสร็จ ฯลฯ เมื่อให้สิ่งที่เราต้องการทำนายเป็นแกน y (ผลลัพธ์) และข้อมูลอีกชุดคือแกน x (ฟีเจอร์) เมื่อนำข้อมูลทั้ง 2 ชุดมาพล็อตกราฟจะได้จุดที่เพิ่มขึ้นหรือลดลงเป็นเชิงเส้น (linear) ดังรูป
สมมุติรูปข้างบนเป็นเป็นกราฟความสัมพันธ์ระหว่างจำนวนประชากรในเมืองหนึ่งและรายได้ที่ร้านค้าแห่งหนึ่งได้ของปีก่อน เราต้องการทำนายว่าในปีนี้ที่จำนวนประชากร x=15 จะได้รายได้ y เท่าไหร่ เราสามารถนำข้อมูลปีก่อนมาสร้างเป็น model เพื่อทำนายรายได้ของปีนี้ได้ (สมมุติว่าเราคิดแค่ปัจจัยเดียวคือจำนวนประชากรและไม่คิดปัจจัยอื่น)
แนวคิดของ linear regression คือการหาเส้นตรงเส้นหนึ่งที่ลากผ่านข้อมูลให้ใกล้เคียง (fit) มากที่สุด ดังเส้นสีน้ำเงินในรูปข้างล่างนี้
ข้อมูลที่เรานำมาพล็อตเป็นข้อมูลที่เรารู้ผลลัพธ์อยู่แล้ว(กากบาทสีแดง) เรียกว่า “Training data” (บางทีก็เรียก training set, examples มันคืออันเดียวกัน) และเมื่อเราสามารถหาเส้นตรงที่ลากผ่านข้อมูลได้ใกล้เคียงที่สุดเราก็จะสามารถนำไปทำนายข้อมูลที่ไม่มีใน training data ข้อมูลที่ไม่เคยพบมาก่อนได้ (Unknown data/Unseen data) ซึ่งจากกราฟข้างบนที่ x=15 เราจะได้ y ~= 12 เป็นต้น แล้วเราจะรู้ได้ยังไงว่าเส้นตรงที่ลากผ่านข้อมูลควรเริ่มต้นที่เท่าใดและความชันเท่าใดจึงจะผ่านข้อมูลมากที่สุด?
จากตัวอย่างข้างต้นจะพบว่าเส้นตรงสีน้ำเงินไม่ได้ลากทับกากบาทสีแดงทั้งหมด ระยะห่างระหว่างกากสีแดงและเส้นตรงคือ “Error” ถ้า error น้อยแสดงว่าเส้นตรงลากผ่านข้อมูลมากที่สุด (ก็ make sense เนอะ) หมายความว่าถ้าเรา optimize error ให้น้อยที่สุดเราก็จะได้ model ที่สามารถทำนายได้ใกล้เคียงมากที่สุดนั่นเอง
สมมุติให้ข้อสันนิษฐาน h หรือ hypothesis คือเส้นตรงที่เราลากผ่านข้อมูล จะได้สมการเป็น
เมื่อ
เป็นค่าเริ่มต้นที่เรากำหนด (จุดเริ่มต้นของเส้นตรง)
เป็น parameter ที่เราต้องการ optimize (ความชัน)
คือ training data
สมการ h เป็นเพียง hypothesis ของข้อมูลเพียงหนึ่งตัวจริงๆ แล้วต้องระบุ index ของข้อมูลด้วย สมมุติผมมีข้อมูล m ตัว h ของข้อมูลตัวที่ 1 จะได้เป็น และเมื่อเรารวมผลรวมทั้งหมดของ error ยกกำลัง 2 (Sum square error) หารตัวจำนวน training data จำนวน
ตัว เราเรียกสมการนี้ว่า “Cost function” แทนด้วย
เขียนเป็นสมการได้เป็น
หรือเรียกอีกอย่างว่า “Square Error” จุดประสงค์ของเราคือต้องการหาค่า J ที่น้อยที่สุด (error น้อยที่สุด)
ครั้งหน้าเดี๋ยวเรามาลองคำนวณและ optimize ค่า กัน
[…] โพสต์ที่แล้วเกี่ยวกับ Linear Regression เราพอจะรู้ concept คร่าวๆ แล้วสิ่งที่เราต้องสนใจคือ […]