ทฤษฎี Linear Regression เบื้องต้น

หมายเหตุ ผู้อ่านสามารถดู table of contents ของบทความ machine learning ได้ที่ https://goo.gl/BExvUQ

และแล้วเราก็เดินมาทางถึงบทความเกี่ยวกับ machine learning algorithms ตัวแรกใน series of machine learning theory ของเรากันแล้วนะครับ นั้นก็คือ Linear Regression ซึ่งเป็น algorithm แบบ supervised learning ที่ถูกใช้ในงาน quantitative หรือการ predict เชิงตัวเลข

ก่อนที่เราจะดื่มดํ่าไปกับสูตรการคำนวนของ linear regression ขั้นแรกเรามาทำความรู้จักกับสถานการณ์จำลองที่เราจะใช้เพื่อเสริมความเข้าใจในตัว algorithm ให้มากขึ้น โดยสถานการณ์จำลองผมได้นำมาจาก หนังสือ introduction statistical learning (http://www-bcf.usc.edu/~gareth/ISL/) ซึ่งเราจะรับบทเป็น data scientist ของบริษัทขายสินค้าแห่งหนึ่งและเราได้รับมอบหมายให้หาว่า จากช่องทางโฆษณา 3 ช่องทาง(TV, วิทยุและหนังสือพิมพ์) ช่องทางใดที่ยิ่งลงทุนยิ่งส่งเสริมการขายดีที่สุด

การลงทุนโฆษณา TV เทียบยอดขายที่ได้ (หน้า 62, หนังสือ introduction statistical learning)

จากรูปด้านบน จุดสีแดงแสดงถึงการลงทุนในโฆษณาทาง TV เทียบยอดขายที่ได้ ซึ่งเมื่อทำการขีดเส้น trend ของความสัมพันธ์ดังกล่าวจะสามารถขีดเส้นออกมาได้ตามเส้นสีนํ้าเงิน โดยถ้ามองด้วยตาเปล่าก็จะเห็นได้ทันทีว่าความสัมพันธ์นี้เป็นแบบ linear นั้นคือเมื่อแกน X เพิ่มแกน Y ก็เพิ่มตามไปด้วย เราสามารถนำข้อมูล TV และ Sales มาเข้าสูตรของ linear model ที่เราเคยกล่าวถึงในบทความที่แล้วได้ดังนี้

linear model แทนความสัมพันธ์ TV และ Sales

ทีนี้มาถึงหัวข้อที่เราค้างกันตั้งแต่บทความที่แล้วนั้นคือการหาค่า B0(intercept) และ B1(slope) โดยเรียกขบวนการนี้ว่าการ estimate coefficients เราจะทำการใส่ ^ นำหน้า B เพื่อแสดงถึงว่าค่า ^B0 และ ^B1 คือตัวแปรที่เราจะต้องทำการคำนวนเพื่อคาดการณ์ค่าค่านั้นออกมาโดยสามารถเขียนสูตรใหม่ได้ว่า

เขียนสูตรใหม่เพื่อหาค่า coefficients

ทีนี้เรามาดูสูตรการหาค่า ^B1 กันก่อนนะครับ

^B1 formula
¯y formula
¯x formula

ก่อนจะไปสูตรการหาค่า ^B0 ผมขออธิบายสูตร ^B1 เพิ่มเติมอย่างละเอียดสำหรับคนที่อาจจะไม่เชียวชาญเรื่องของ mathematics แบบผมได้เข้าใจกันมากขึ้น อย่างที่ผมเขียนในบทความ About me before get start ( https://goo.gl/kytxkt) ว่าบทความที่ผมอยากจะนำเสนอไม่ว่าจะเป็นเรื่อง ML หรืออื่นๆ ผมตั้งใจอย่างมากที่จะทำให้มันง่ายให้มากที่สุดเท่าที่จะมากได้สำหรับการทำความเข้าใจ เราจะเรียนรู้มันไปด้วยกันครับ (You never learn alone!) แต่สำหรับใครที่เข้าใจสูตรข้างต้นแล้ว อาจจะข้ามไปดูสูตรการหาค่า ^B0 ด้านล่างได้เลยครับ

เรามาเริ่มจะค่า ¯x กันก่อนนะครับ จากสูตร n แทนจำนวนทั้งหมดของ X ใน dataset ซึ่งจากตัวอย่างในบทความนี้ X ก็คือยอดการลงทุนโฆษณาทาง TV โดยในกราฟด้านบน n จะเท่ากับจำนวนจุดสีแดง ส่วน Xi จะแทนค่า X แต่ละค่าใน dataset จากกราฟจะเห็นว่าค่า X จะมีค่าระหว่าง 0–300 เราสามารถจำลองตัวเลขตัวอย่างใหม่เพื่อง่ายต่อความเข้าใจได้ว่า สมมุติเรามีการลงทุนโฆษณาทาง TV จำนวน 5 ครั้งคือ 2, 10, 15, 22 และ 30 ล้าน ในที่นี้ n = 5 ส่วน X1 = 2, X2 = 10, X3 = 15, X4 = 22 และ X5 = 30 จากสูตร ¯x จะคำนวนออกมาได้ว่า 1/5 * (2+10+15+22+30) = 15.8

ถัดมาเรามาเราจะมาคำนวนหาค่า ¯y กันนะครับ ค่า n คือจำนวนทั้งหมดของค่า Y ใน dataset ซึ่งจากตัวอย่าง Y คือจำนวนยอดขาย เพื่อสอดคล้างกับ dataset สมมุติข้างต้น เราจะจำลองได้ว่า Y1 = 8, Y2 = 16, Y3 = 21, Y4 = 28 และY5 = 36 ล้าน ซึ่งสามารถอธิบายเพิ่มเติมได้ว่าเมื่อเราลงทุนโฆษณาทาง TV 2 ล้านเราจะสามารถทำยอดขายได้ 8 ล้านและเมื่อเราลงทุนโฆษณาทาง TV 10 ล้านเราจะสามารถทำยอดขายได้ 16 ล้านตามลำดับ สามารถคำนวน ¯y ได้ว่า 1/5 * (8 + 16 + 21 +28 +36) = 21.8

ทีนี้กลับมาการหาค่า ^B1 กันอีกทีนะครับ โดยสามารถคำนวนผลได้ดังนี้ ^B1 = 464.8 / 464.8 = 1

แทน dataset เข้าสูตร ^B1
ผลการคำนวนค่า ^B1

เมื่อเราได้ค่า ^B1 แล้วต่อไปเราก็จะมาหาค่า ^B0 กันนะครับซึ่งสูตรการหาค่า ^B0 มีสูตรดังนี้

^B0 formula

เมื่อแทนค่าผลการคำนวน ^B1,¯y และ ¯x เข้าสูตรข้างต้นก็จะได้ว่า ^B0 = 21.8–(1*15.8) = 6 ซึ่งเมื่อเรานำค่าทั้งหมดแทนในสูตร liner model ที่เราได้ทำการแสดงไว้ตอนต้นบทความก็จะได้ว่า

liner model หลังจากแทนค่า

เราลองมาทำการทดสอบ liner model ที่เราได้กันดูนะครับว่ามันจะออกมาเป็นอย่างไร โดยใช้ข้อมูลสมมุติที่เราได้เห็นไปโดยถ้าเราลงทุนในการโฆษณาทาง TV 2 ล้าน เมื่อใส่สูตรคำนวนก็จะได้ยอดขายโดยประมาณดังนี้ 6 + (1 * 2) = 8 ล้านซึ่งจะตรงกับยอดของการขายใน dataset ที่เราสมมุติไป

ข้อนึงที่ต้องไม่ลืมคือ ตัวเลขที่ได้จากการคำนวนเป็นค่า predict หรือค่าประมาณ ซึ่งจะเกิดจากการเรียนรู้จาก dataset ทำให้ output ที่ได้อาจจะไม่ตรงกับยอดขายจริงสะทีเดียว ทีนี้เราจะรู้ได้ไงว่าสิ่งที่เราคำนวนได้กับค่าจริงมันห่างกันแค่ไหน ผมขออนุญาตนำกราฟด้านบนบทความาแสดงอีกครั้งเพื่อความสะดวกในการอ้างอิงนะครับ

การลงทุนโฆษณา TV เทียบยอดขายที่ได้ (หน้า 62, หนังสือ introduction statistical learning)

ในตอนนี้เราจะแทนเส้นสีนํ้าเงินเป็นเส้นค่าประมาณของ Y หรือยอดsales ซึ่งได้จากการใส่ค่า X หรือจำนวนลงทุนใน TV เข้าในสูตรของ liner regression และแทนจุดสีแดงเป็นยอด sales จริงๆทีไ่ด้จากการเก็บข้อมูล สุดท้ายเส้นสีเทาที่ลากจากจุดสีแดงมายังเส้นสีนํ้าเงินแทนความห่างระหว่างค่าที่ predict กับค่าจริง สิ่งที่เราคาดหวังจาก ML คือผลรวมของความผิดพลาดทั้งหมดที่ได้จากการคำนวนต้องมีค่าน้อยที่สุดซึ่งนั้นแสดงได้ว่า ML ของเราสามารถทำนายยอด sales ได้อย่างแม่นยำ โดยสูตรในการหาค่าความผิดพลาดรวมสามารถเขียนโดยใช้สูตร residual sum of squares หรือ RSS ได้ดังนี้

residual sum of squares formula
residual formula

เราสามารถจำลองการคำนวนโดยใช้ข้อมูลสมมุติการโฆษณาทาง TV เทียบยอดขาย ซึ่งเราได้เห็นไปก่อนหน้าได้ดังนี้ว่า (ลงทุน 2 ล้าน -> ขายได้ 8 ล้าน), (ลงทุน 10 ล้าน -> ขายได้ 16 ล้าน), (ลงทุน 15 ล้าน -> ขายได้ 21 ล้าน), (ลงทุน 22 ล้าน -> ขายได้ 28 ล้าน), (ลงทุน 30 ล้าน -> ขายได้ 36 ล้าน) แต่สมมุติว่าผลการ predict ที่เราได้หลังจากคำนวน liner regression จะได้ค่า ^Y ออกมาเป็น ^Y1 = 12, ^Y2 = 16, ^Y3 = 24, ^Y4 = 28 และ ^Y5 = 36 ที่เมื่อนำเข้าสูตรของ RSS จะได้ว่า [(8–12)*(8–12) + (16–16)*(16–16) + (21–24) * (21–24)+ (28–28)*(28–28) + (36 -36)*(36 -36)] = (16 + 0 + 9 + 0 + 0) = 25

สุดท้ายนี้ถ้าท่านใดมีข้อสงสัยหรือคำชี้แนะใดๆสามารถฝากข้อความได้ที่ https://www.facebook.com/coeffest/ นะครับ ขอบคุณมากครับที่ติดตาม