Courses
การฝืนฟิตเส้นตรงกับข้อมูลที่โค้งงอไม่เคยเป็นความคิดที่ดี
การถดถอยเชิงเส้นตั้งสมมติฐานว่าความสัมพันธ์ระหว่างตัวทำนายกับเป้าหมายเป็นเส้นตรง แต่น่าเสียดายที่ความสัมพันธ์ในโลกจริงส่วนใหญ่ไม่เป็นเช่นนั้น ลองนึกถึงความสัมพันธ์ระหว่างรายได้กับการใช้จ่าย หรือเวลาและการเติบโต — เส้นเหล่านี้โค้ง แบนอีกครั้ง โค้งอีกครั้ง และเปลี่ยนทิศทางในแบบที่ไม่สามารถแทนด้วยความชันเดียวได้
การถดถอยสปลายน์จัดการเรื่องนี้ด้วยการปล่อยให้ความสัมพันธ์โค้งงอตามที่จำเป็น โดยไม่ต้องฟิตเส้นโค้งที่ไร้ข้อจำกัดอย่างรุนแรง แนวคิดคือฟิตพหุนามที่เรียบลื่นหลายช่วงตลอดช่วงของตัวทำนาย แล้วเชื่อมเข้าด้วยกันที่จุดเฉพาะ
ในบทความนี้ จะได้เรียนรู้แนวคิดหลักเบื้องหลังการถดถอยสปลายน์ บทบาทของปมที่ควบคุมความยืดหยุ่น ประเภทสปลายน์หลัก ๆ และวิธีประยุกต์ใช้จริง
ก่อนเรียนรู้เกี่ยวกับสปลายน์ แนะนำให้อ่านบทช่วยสอนที่สอนทุกอย่างที่ต้องรู้เกี่ยวกับ การถดถอยเชิงเส้นแบบง่ายก่อน
การถดถอยสปลายน์คืออะไร?
การถดถอยสปลายน์เป็นเทคนิคการถดถอยที่จำลองความสัมพันธ์ไม่เป็นเชิงเส้นด้วยฟังก์ชันพหุนามแบบแบ่งช่วง โดยเชื่อมต่อกันที่จุดที่เรียกว่าปม (knots)
แทนที่จะใช้สมการเดียวอธิบายความสัมพันธ์ทั้งหมด การถดถอยสปลายน์จะแบ่งช่วงของตัวทำนายเป็นชิ้นเล็ก ๆ และฟิตพหุนามแยกกันในแต่ละชิ้น ชิ้นเหล่านี้มาบรรจบกันที่ปม และมีข้อจำกัดเพื่อให้การเปลี่ยนผ่านเรียบลื่น
ผลลัพธ์สุดท้ายอยู่กึ่งกลางระหว่างสองขั้ว มันยืดหยุ่นกว่าการถดถอยเชิงเส้นที่วาดได้เพียงเส้นตรงเส้นเดียวผ่านข้อมูลของคุณ และมีโครงสร้างมากกว่าโมเดลไม่เชิงเส้นที่ไร้ข้อจำกัดอย่างสมบูรณ์ เช่น ดีพนิวรัลเน็ตเวิร์กหรือเมธอดเคอร์เนล ซึ่งฟิตได้แทบทุกอย่างแต่ให้ข้อมูลเชิงอธิบายน้อยมากเกี่ยวกับสิ่งที่ฟิต
ด้วยเหตุนี้ สปลายน์จึงถูกใช้บ่อยมากในสถิติประยุกต์
ทำไมต้องการการถดถอยสปลายน์
ข้อมูลจริงแทบไม่เคยเป็นเส้นตรง
การถดถอยเชิงเส้นมักเป็นจุดเริ่มต้นมาตรฐานในการจำลองความสัมพันธ์ แต่มีสมมติฐานแรงว่า ผลของตัวทำนายต่อผลลัพธ์คงที่ตลอดช่วง เมื่อความสัมพันธ์จริงโค้งหรือเปลี่ยนทิศ เส้นตรงจะฟิตไม่ถึง ทำให้เกิดความคลาดเคลื่อนที่ปลายช่วง และได้โมเดลที่ตามรูปแบบไม่ได้
ทางแก้คือใช้โมเดลที่ยืดหยุ่นขึ้น การถดถอยพหุนามดีกรีสูงเป็นตัวเลือกหนึ่ง — เพิ่มพจน์ x^2, x^3, x^4 จนเส้นโค้งงอพอจะตรงกับข้อมูล แต่พหุนามจะไม่เสถียรที่ขอบข้อมูล เพราะเหวี่ยงขึ้นหรือลงในบริเวณที่มีจุดข้อมูลน้อย พฤติกรรมนี้เรียกว่า Runge's phenomenon และทำให้พหุนามดีกรีสูงเสี่ยงต่อการพยากรณ์
การถดถอยสปลายน์อยู่กึ่งกลางระหว่างสองขั้วนี้
คุณจะได้ความยืดหยุ่นเฉพาะที่ซึ่งข้อมูลโค้ง โดยไม่มีความไม่เสถียรทั่วโลกของพหุนามดีกรีสูงเส้นเดียว แต่ละช่วงเป็นพหุนามดีกรีต่ำ (มักเป็นกำลังสาม) ดังนั้นไม่มีชิ้นส่วนใดจะมีพฤติกรรมคาดไม่ถึงได้ และเพราะช่วงต่าง ๆ ถูกเชื่อมอย่างราบรื่นที่ปม เส้นโค้งรวมยังดูเหมือนฟังก์ชันต่อเนื่องเส้นเดียว
สรุปแล้ว สปลายน์ให้ความยืดหยุ่นพอจะตามรูปแบบซับซ้อน และโครงสร้างพอจะคุมพฤติกรรมที่ปลายช่วง
สปลายน์รีเกรสชันทำงานอย่างไร
กระบวนงานของการถดถอยสปลายน์มี 3 ขั้นตอนง่าย ๆ เสมอ
- แบ่งช่วงของตัวทำนายเป็นภูมิภาค: เลือกชุดของปมตามแกนตัวทำนาย ปมเหล่านี้แบ่งช่วงออกเป็นอินเทอร์วาล หากวาง 3 ปม จะได้ 4 ภูมิภาค ปมคือเส้นแบ่งระหว่างช่วง
- ฟิตพหุนามภายในแต่ละภูมิภาค: ภายในแต่ละอินเทอร์วาล โมเดลจะฟิตพหุนามดีกรีต่ำ แต่ละภูมิภาคมีสัมประสิทธิ์พหุนามของตนเอง ทำให้เส้นโค้งงอแตกต่างกันได้ในส่วนต่าง ๆ ของช่วงตัวทำนาย ภูมิภาคที่ความสัมพันธ์แทบจะราบเรียบจะได้พหุนามที่เกือบเรียบ ส่วนภูมิภาคที่ความสัมพันธ์โค้งชันจะได้เส้นที่โค้งมากขึ้น
- เชื่อมต่อภูมิภาค: โมเดลบังคับเงื่อนไขความต่อเนื่องที่ทุกปม ค่าพหุนามจากทั้งสองฝั่งต้องเท่ากันที่ปมเพื่อไม่ให้เส้นกระโดด สำหรับสปลายน์กำลังสาม อนุพันธ์อันดับหนึ่งและสองต้องตรงกันด้วย หมายถึงไม่มีมุมแหลมและไม่มีการเปลี่ยนความโค้งแบบปุบปับ
ข้อจำกัดเหล่านี้ทำให้สปลายน์ดูเหมือนเส้นโค้งเรียบเส้นเดียวที่โค้งเฉพาะที่ แต่ไหลต่อเนื่องตลอดช่วงของตัวทำนาย มองด้วยสายตาแทบแยกไม่ออกว่าพหุนามช่วงใดสิ้นสุดและช่วงใดเริ่มต้น
ปม ดีกรีของพหุนาม และเงื่อนไขความต่อเนื่องร่วมกันกำหนดสปลายน์ หากเปลี่ยนสิ่งใดสิ่งหนึ่ง จะได้สปลายน์คนละชนิดพร้อมคุณสมบัติที่ต่างกัน — ซึ่งส่วนถัดไปจะกล่าวถึง
ปม (Knots) ในการถดถอยสปลายน์คืออะไร?
ปมคือจุดตามแกนตัวทำนายที่พหุนามช่วงหนึ่งสิ้นสุดและช่วงถัดไปเริ่มต้น
นึกถึงปมเป็นข้อต่อของสปลายน์ หากวางปมที่ x = 5 โมเดลจะฟิตพหุนามหนึ่งสำหรับค่าต่ำกว่า 5 และอีกพหุนามสำหรับค่าสูงกว่า 5 พหุนามทั้งสองมาบรรจบกันที่ปม และเงื่อนไขความต่อเนื่องทำให้เชื่อมกันอย่างราบรื่น ถ้าเพิ่มปมมากขึ้น ก็ได้ช่วงมากขึ้น หมายความว่าเส้นโค้งงอได้หลายตำแหน่งขึ้น
นี่คือเหตุผลที่ปมเป็นคันโยกหลักในการควบคุมความยืดหยุ่นของโมเดล
จำนวนปมกำหนดว่ามีพหุนามกี่ชิ้นประกอบเป็นสปลายน์ ตำแหน่งของปมกำหนดว่าเส้นโค้งได้รับอนุญาตให้เปลี่ยนรูปร่างที่ไหน สปลายน์ที่มีสองปมจะโค้งได้เพียงไม่กี่ตำแหน่ง สปลายน์ที่มียี่สิบปมสามารถตามจุดข้อมูลได้เกือบทุกจุด
ดังนั้นการเลือกจำนวนและตำแหน่งของปมให้เหมาะสมคือการตัดสินใจหลักในการถดถอยสปลายน์
ปมน้อยเกินไป
หากวางปมน้อยเกินไป สปลายน์จะมีช่วงไม่พอจะตามรูปแบบจริงในข้อมูล เส้นโค้งจะตึงเกินไป พฤติกรรมเกือบเหมือนพหุนามดีกรีต่ำ — ยืดหยุ่นแบบกว้าง ๆ แต่จับความเปลี่ยนแปลงเฉพาะที่ไม่ได้
ลองนึกภาพการฟิตสปลายน์ที่มีปมเดียวกับข้อมูลที่มีสามเฟสชัดเจน: แนวโน้มเพิ่มขึ้น ช่วงราบ และการลดลง ด้วยปมเดียว สปลายน์มีเพียงสองช่วงให้ทำงาน จับการเพิ่มขึ้นและอีกเฟสหนึ่งได้ แต่จับทั้งสามไม่ได้ สุดท้ายก็เจอปัญหาเดียวกับการถดถอยเชิงเส้น — เกิดความคลาดเคลื่อนในบริเวณที่สปลายน์ไม่สามารถเข้ากับรูปทรงของข้อมูลได้

ตัวอย่างปมน้อยเกินไป
ปมน้อยเกินไปนำไปสู่การฟิตต่ำเกิน (underfitting) โมเดลเรียบเกินจะใช้งานจริงไม่ได้
ปมมากเกินไป
ปัญหาตรงกันข้ามก็แย่พอกัน หากวางปมมากเกินไป สปลายน์มีช่วงมากจนเริ่มฟิตสัญญาณรบกวนแทนรูปแบบจริง เส้นโค้งจะส่ายไปมาระหว่างการสังเกตแต่ละครั้งและไล่ตามความผันผวนแบบสุ่มแทนแนวโน้มที่อยู่เบื้องหลัง
สปลายน์ที่มียี่สิบปมกับชุดข้อมูล 50 จุดจะดูคล้ายภาพลากเส้นเชื่อมจุดมากกว่าเป็นโมเดล มันจะฟิตข้อมูลฝึกได้แทบสมบูรณ์แบบ แต่การพยากรณ์กับข้อมูลใหม่จะไม่น่าเชื่อถือ การเปลี่ยนอินพุตเพียงเล็กน้อยนำไปสู่การเปลี่ยนเอาต์พุตที่มากและคาดเดาไม่ได้

ตัวอย่างปมมากเกินไป
ปมมากเกินไปนำไปสู่การฟิตเกิน (overfitting) โมเดลยืดหยุ่นเกินกว่าจะทั่วไปได้
เป้าหมายคือมีปมพอที่จะจับจุดโค้งจริงในข้อมูล แต่ไม่มากจนโมเดลเริ่มท่องจำสัญญาณรบกวน ส่วนถัดไปจะอธิบายวิธีตัดสินใจในทางปฏิบัติ
ประเภทของสปลายน์
สปลายน์มีอยู่หลายแบบ โดยตัวเลือกส่วนใหญ่ขึ้นกับพหุนามที่ใช้ในแต่ละช่วงและข้อจำกัดที่วางบนเส้นโค้ง
สปลายน์เชิงเส้น
สปลายน์เชิงเส้นเป็นเวอร์ชันที่ง่ายที่สุด แต่ละช่วงเป็นเส้นตรง และช่วงต่าง ๆ เชื่อมต่อกันที่ปม

ตัวอย่างสปลายน์เชิงเส้น
เงื่อนไขความต่อเนื่องที่นี่ค่อนข้างหลวม เพราะค่าจากทั้งสองฝั่งต้องตรงกันที่ปม แต่ความชันสามารถเปลี่ยนได้ ผลลัพธ์จึงดูเป็นเส้นตรงหลายช่วงที่เชื่อมกัน มีมุมที่แต่ละปม ยืดหยุ่นพอสำหรับโค้งง่าย ๆ แต่บางครั้งเส้นโค้งไม่เรียบ
สปลายน์เชิงเส้นเหมาะเมื่อสนใจแนวโน้มภาพรวมและไม่กังวลเรื่องความคมของภาพ ทั้งยังตีความง่ายที่สุดเพราะแต่ละช่วงเป็นเส้นตรงที่มีความชันของตนเอง
สปลายน์กำลังสาม (Cubic splines)
สปลายน์กำลังสามเป็นทางเลือกมาตรฐานในหลายงาน แต่ละช่วงเป็นพหุนามกำลังสาม (ดีกรี 3) และเงื่อนไขความต่อเนื่องเข้มงวดกว่าสปลายน์เชิงเส้น

ตัวอย่างสปลายน์กำลังสาม
ที่ทุกปม ต้องมีสามเงื่อนไขเป็นจริง: ค่าต้องเท่ากัน อนุพันธ์อันดับหนึ่งต้องเท่ากัน และอนุพันธ์อันดับสองต้องเท่ากัน หมายถึงไม่มีการกระโดด ไม่มีมุมแหลม และไม่มีการเปลี่ยนความโค้งอย่างฉับพลัน เส้นโค้งไหลผ่านปมโดยไม่บอกใบ้ทางภาพว่าเกิดการเปลี่ยนช่วงตรงไหน
ดีกรีสามเป็นดีกรีต่ำสุดที่อนุญาตให้เปลี่ยนความโค้งได้อย่างเรียบ นั่นจึงทำให้เป็นที่นิยม ดีกรีที่สูงกว่าน้อยครั้งจะเพิ่มความยืดหยุ่นที่เป็นประโยชน์ และทำให้โมเดลควบคุมยากขึ้น
สปลายน์กำลังสามแบบธรรมชาติ (Natural cubic splines)
สปลายน์กำลังสามแบบธรรมชาติเป็นรูปแบบย่อยที่เพิ่มข้อจำกัดพิเศษที่ขอบของข้อมูล

ตัวอย่างสปลายน์กำลังสามแบบธรรมชาติ
ปัญหาของสปลายน์กำลังสามทั่วไปคืออาจมีพฤติกรรมแปลกที่ขอบ โดยเฉพาะบริเวณที่มีข้อมูลน้อย ช่วงซ้ายสุดและขวาสุดยังคงเป็นพหุนามกำลังสาม และพหุนามกำลังสามอาจเหวี่ยงขึ้นหรือลงเร็วเมื่อทำการประมาณเกินช่วง
สปลายน์กำลังสามแบบธรรมชาติแก้ปัญหานี้ด้วยการบังคับให้อนุพันธ์อันดับสองเป็นศูนย์ที่ปมขอบทั้งสอง โดยปฏิบัติจริงหมายความว่าเส้นโค้งจะเป็นเชิงเส้นเลยปมนอกสุด พฤติกรรมการประมาณเกินช่วงจึงเสถียรกว่ามาก ซึ่งทำให้สปลายน์แบบธรรมชาติเหมาะกว่าหากสนใจการพยากรณ์ใกล้ขอบของข้อมูล
บี-สปลายน์ (B-splines)
บี-สปลายน์ (ย่อจาก basis splines) เป็นวิธีสร้างสปลายน์อีกรูปแบบ แทนที่จะกำหนดพหุนามแต่ละช่วงโดยตรง บี-สปลายน์จะสร้างสปลายน์เป็นผลรวมเชิงถ่วงน้ำหนักของฟังก์ชันฐาน

ตัวอย่างบี-สปลายน์
แต่ละฟังก์ชันฐานเองเป็นสปลายน์เล็ก ๆ ที่มีค่าไม่เป็นศูนย์เฉพาะในบริเวณจำกัด สปลายน์เต็มรูปคือผลรวมของฟังก์ชันฐานเหล่านี้ แต่ละตัวคูณด้วยสัมประสิทธิ์ที่ประเมินโดยการถดถอย
บี-สปลายน์มีความเสถียรเชิงตัวเลขและขยายได้ง่าย การใช้งานสปลายน์สมัยใหม่ส่วนใหญ่ใน Python และ R ใช้การแทนแบบบี-สปลายน์ แม้ว่าหน้าตาอินเทอร์เฟซจะเหมือนสปลายน์ทั่วไปก็ตาม หากเคยเรียก bs() ใน R หรือใช้ SplineTransformer ใน scikit-learn แปลว่าคุณได้ใช้บี-สปลายน์แล้ว
การถดถอยสปลายน์เทียบกับการถดถอยพหุนาม
ทั้งการถดถอยพหุนามและการถดถอยสปลายน์จัดการความสัมพันธ์ไม่เป็นเชิงเส้น แต่ใช้วิธีต่างกัน จุดต่างอยู่ที่วิธีสร้างเส้นโค้ง
การถดถอยพหุนาม
การถดถอยพหุนาม ฟิตพหุนามเดียวที่ครอบคลุมช่วงตัวทำนายทั้งหมด คุณเลือกดีกรี (2, 3, 5, 10) แล้วโมเดลหาชุดสัมประสิทธิ์เดียวที่ลดความผิดพลาดรวมของข้อมูลทั้งหมด เส้นโค้งมีสมการเดียว และสมการนั้นอธิบายความสัมพันธ์ทุกที่
ฟังดูเรียบร้อย แต่มีปัญหา พหุนามเส้นเดียวต้องบาลานซ์การฟิตทั่วทั้งช่วง ดังนั้นสิ่งที่เกิดในภูมิภาคหนึ่งส่งผลต่ออีกทุกภูมิภาค หากเพิ่มดีกรีเพื่อรับมือกับโค้งชันกลางข้อมูล คุณจะเห็นเส้นเริ่มเหวี่ยงที่ปลายช่วง นี่คือ Runge's phenomenon ที่กล่าวถึงก่อนหน้า — พหุนามดีกรีสูงจะไม่เสถียรใกล้ขอบข้อมูล
อีกปัญหาคือการถดถอยพหุนามไม่มีแนวคิดเรื่องความเฉพาะที่ (locality) สไปค์ที่ x = 5 อาจเปลี่ยนรูปทรงของฟิตที่ x = 50 เพราะทุกการสังเกตมีส่วนต่อสมการสากลเดียวกัน
การถดถอยสปลายน์
การถดถอยสปลายน์แบ่งช่วงตัวทำนายเป็นช่วงย่อย ๆ และฟิตพหุนามดีกรีต่ำในแต่ละช่วง พหุนามต่าง ๆ ถูกเชื่อมต่อกันอย่างราบรื่นที่ปม แต่ละตัวเป็นอิสระในแง่ที่ว่ารูปทรงของมันขับเคลื่อนโดยข้อมูลในภูมิภาคของตัวเองเป็นหลัก
สิ่งนี้ให้ความยืดหยุ่นเฉพาะที่ ภูมิภาคที่โค้งชันจะได้พหุนามที่โค้งกว่า ภูมิภาคที่แนวโน้มราบจะได้เส้นที่เกือบเรียบ และเพราะแต่ละช่วงเป็นดีกรีต่ำ (มักกำลังสาม) ส่วนใดส่วนหนึ่งจะมีพฤติกรรมประหลาดที่ปลายช่วงไม่ได้ คุณจึงได้ฟิตที่เรียบและเสถียรกว่า โดยเฉพาะใกล้ขอบข้อมูล
เปรียบเทียบเคียงข้างกัน

การถดถอยพหุนามเทียบกับการถดถอยสปลายน์
ดังนั้น หากความสัมพันธ์ของคุณไม่เชิงเส้นเพียงเล็กน้อยและยอมรับการฟิตสากลได้ การถดถอยพหุนามก็ใช้ได้ หากรูปแบบซับซ้อนกว่านั้น หรือสนใจการพยากรณ์ใกล้ขอบ ช้อยส์ที่ปลอดภัยกว่าคือสปลายน์
การเลือกจำนวนและตำแหน่งของปม
การเลือกปมคือส่วนที่สำคัญที่สุดของการถดถอยสปลายน์ ปมน้อยไปทำให้ฟิตต่ำเกิน ปมมากไปทำให้ฟิตเกิน และตำแหน่งที่วางปมเปลี่ยนรูปแบบที่โมเดลจะจับได้
มีหลายวิธี และส่วนใหญ่จะใช้ผสมกัน
- ความรู้เชิงโดเมน: หากมีความรู้เกี่ยวกับปัญหา จงใช้มัน การศึกษาทางคลินิกอาจวางปมที่เกณฑ์ทางคลินิกที่ทราบ โมเดลกำหนดราคาสามารถวางปมที่จุดที่คาดว่าพฤติกรรมผู้บริโภคจะเปลี่ยน วิธีวางปมตามโดเมนตีความได้ดีที่สุดเพราะช่วงต่าง ๆ สอดคล้องกับเส้นแบ่งจริง
- ปมที่เว้นระยะเท่า ๆ กัน: เลือกจำนวนปมแล้ววางเว้นระยะเท่า ๆ กันตลอดช่วงตัวทำนาย วิธีนี้ใช้ได้เมื่อข้อมูลกระจายสม่ำเสมอตามแกนตัวทำนาย แต่จะไม่เวิร์กเมื่อข้อมูลหนาแน่นบางบริเวณและเบาบางบางบริเวณ — ปมที่เว้นระยะเท่ากันอาจตกในบริเวณที่แทบไม่มีข้อมูล ทำให้ฟิตไม่เสถียร
- ปมตามควอนไทล์: แทนที่จะวางปมที่ตำแหน่งเท่ากันบนแกน x ให้วางที่ควอนไทล์ของตัวทำนาย หากมี 4 ปมและวางตามควอนไทล์ จะวางที่เปอร์เซ็นไทล์ที่ 20, 40, 60, และ 80 วิธีนี้รับประกันว่าแต่ละช่วงมีจำนวนการสังเกตใกล้เคียงกัน ทำให้ฟิตน่าเชื่อถือขึ้นในบริเวณที่ข้อมูลเบาบาง
- การตรวจสอบไขว้ (Cross-validation): ลองจำนวนปมต่าง ๆ ฟิตสปลายน์แต่ละแบบ แล้วเปรียบเทียบประสิทธิภาพบนข้อมูลที่กันไว้ การตั้งค่าที่ให้ข้อผิดพลาดบนชุดตรวจสอบต่ำสุดชนะ วิธีนี้ลดการเดา แต่เพิ่มต้นทุนการคำนวณ และผลลัพธ์ยังขึ้นกับกลยุทธ์การวางปม (เท่ากัน ควอนไทล์) ที่ค้นหา
แลกเปลี่ยนเหมือนปัญหาการถดถอยทั่วไป: ความยืดหยุ่นเทียบกับความซับซ้อน ปมมากให้ความยืดหยุ่นมากขึ้น ทำให้ตามรูปแบบละเอียดได้ แต่ก็ไล่ตามสัญญาณรบกวนได้เช่นกัน ปมลดลงทำให้โมเดลเสถียรและตีความง่ายขึ้น แต่เสี่ยงพลาดรูปแบบจริง
เริ่มจาก 3–5 ปมที่วางตามควอนไทล์ แล้วตรวจสอบรีซิดวล หากเห็นรูปแบบเชิงระบบที่สปลายน์ยังจับไม่ได้ ให้เพิ่มปมในบริเวณนั้น หากฟิตดูส่าย ๆ ให้ลดปม ใช้การตรวจสอบไขว้เมื่อจำเป็นต้องปกป้องทางเลือกหรือเมื่อโมเดลจะนำขึ้นโปรดักชัน
การถดถอยสปลายน์ในแมชชีนเลิร์นนิงและสถิติ
การถดถอยสปลายน์ปรากฏทุกที่ที่ต้องจำลองอิทธิพลไม่เชิงเส้นที่เรียบ โดยไม่ยึดติดกับรูปแบบฟังก์ชันเฉพาะ ต่อไปนี้คือตัวอย่างพื้นที่ใช้งานทั่วไป:
- แนวโน้มอนุกรมเวลา: ใช้แยกแนวโน้มเรียบของอนุกรมเวลาออกจากความผันผวนระยะสั้น ฟิตสปลายน์บนเวลาเป็นตัวทำนายจะให้เส้นแนวโน้มยืดหยุ่นที่ปรับกับการเปลี่ยนทิศได้ โดยไม่ตอบสนองเกินต่อสัญญาณรบกวน นักเศรษฐศาสตร์และนักวิเคราะห์ใช้บ่อยเมื่อต้องการอธิบายเส้นทางพื้นฐานของตัวแปร — เช่น GDP หรือราคาหุ้น — โดยไม่ต้องยึดกับสมมติฐานเชิงเส้นหรือเอกซ์โปเนนเชียล
- เศรษฐศาสตร์และเศรษฐมิติ: ใช้จำลองความสัมพันธ์ที่ผลของตัวแปรเปลี่ยนไปตามช่วง รายได้ต่อการบริโภคไม่ได้คงที่ เพราะครัวเรือนรายได้น้อยกับสูงใช้จ่ายต่างกัน สปลายน์มองเห็นสิ่งนี้โดยไม่ต้องสมมติรูปแบบฟังก์ชันเฉพาะ
- สาธารณสุขและชีวสถิติ: ผลลัพธ์ด้านสุขภาพจำนวนมากมีความสัมพันธ์ไม่เชิงเส้นกับตัวทำนายอย่างอายุ, BMI, ความดันโลหิต หรือระดับไบโอมาร์กเกอร์ ความเสี่ยงโรคมักมีรูปตัวยูหรือเจ — สุดโต่งทั้งสองด้านอันตราย ตรงกลางปลอดภัย โมเดลเชิงเส้นจะพลาด สปลายน์กำลังสามและแบบธรรมชาติเป็นเครื่องมือมาตรฐานในการจำลองเอฟเฟกต์เหล่านี้ และมีในซอฟต์แวร์สถิติส่วนใหญ่ที่ใช้ในงานวิจัยคลินิก
- การจำลองด้านสิ่งแวดล้อมและนิเวศวิทยา: ใช้เมื่อจำลองการตอบสนองของชนิดพันธุ์หรือสภาพภูมิอากาศต่อกราเดียนต์สิ่งแวดล้อม ตัวแปรอย่างอุณหภูมิ ความสูง และปริมาณฝนมักมีอิทธิพลไม่เชิงเส้นต่อผลลัพธ์ เช่น ความหนาแน่นของชนิดพันธุ์หรือผลผลิตพืช สปลายน์ช่วยให้ฟิตเส้นตอบสนองได้โดยไม่ต้องกำหนดรูปทรงล่วงหน้า
ในทุกกรณี สปลายน์ให้ความยืดหยุ่นเท่าที่จำเป็น โดยไม่บังคับให้เดารูปแบบฟังก์ชันของความสัมพันธ์ จึงเหมาะกับการจำลองสำรวจ และเป็นทางเลือกที่มั่นคงสำหรับโมเดลขึ้นโปรดักชันเมื่อความสามารถในการอธิบายสำคัญ
การถดถอยสปลายน์ใน Python
Python มี 3 วิธีทั่วไปในการฟิตการถดถอยสปลายน์: scikit-learn สำหรับเวิร์กโฟลว์แบบ ML, patsy สำหรับการกำหนดโมเดลด้วยสูตร และ statsmodels สำหรับการอนุมานเชิงสถิติ ต่อไปนี้จะกล่าวถึงแต่ละวิธี
การใช้ scikit-learn
scikit-learn มี SplineTransformer ซึ่งแปลงฟีเจอร์เชิงตัวเลขให้เป็นชุดของฟังก์ชันฐานบี-สปลายน์ แล้วป้อนฟีเจอร์เหล่านั้นให้กับโมเดลถดถอยเชิงเส้นใด ๆ ก็ได้
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import SplineTransformer
from sklearn.pipeline import make_pipeline
# Data
np.random.seed(42)
x = np.linspace(0, 10, 100).reshape(-1, 1)
y = np.sin(x).ravel() + 0.3 * x.ravel() + np.random.normal(0, 0.3, 100)
# Spline features + linear regression pipeline
model = make_pipeline(
SplineTransformer(n_knots=5, degree=3),
LinearRegression()
)
model.fit(x, y)
y_pred = model.predict(x)
print("R^2 score:", model.score(x, y))

คะแนน R2 ของ scikit-learn
SplineTransformer สร้างฐานสปลายน์ด้วย 5 ปมและพหุนามกำลังสาม จากนั้น LinearRegression จะหาสัมประสิทธิ์สำหรับแต่ละฟังก์ชันฐาน คุณสามารถสลับเป็นรีเกรสเซอร์ของ sklearn ตัวใดก็ได้ที่ฟิตโมเดลเชิงเส้นบนฟีเจอร์ที่แปลงแล้ว เช่น ridge, lasso
วิธีนี้เข้ากับเวิร์กโฟลว์ของ sklearn แต่จะไม่ได้ผลลัพธ์ทางสถิติ เช่น ส่วนเบี่ยงเบนมาตรฐานหรือค่า p หากต้องการ ให้ใช้ patsy หรือ statsmodels
การใช้ patsy
patsy เป็นอินเทอร์เฟซแบบสูตรสำหรับสร้างเมทริกซ์ดีไซน์ ใกล้เคียงกับสูตรโมเดลของ R มากที่สุดในโลก Python และเป็นวิธีมาตรฐานในการสร้างฟีเจอร์สปลายน์เพื่อใช้กับ statsmodels
import numpy as np
import pandas as pd
from patsy import dmatrix
import statsmodels.api as sm
np.random.seed(42)
x = np.linspace(0, 10, 100)
y = np.sin(x) + 0.3 * x + np.random.normal(0, 0.3, 100)
df = pd.DataFrame({"x": x, "y": y})
# B-spline basis using patsy
spline_basis = dmatrix("bs(x, df=6, degree=3)", data=df, return_type="dataframe")
# Fit with statsmodels OLS
model = sm.OLS(df["y"], spline_basis).fit()
print(model.summary())

สรุปโมเดลของ patsy
ฟังก์ชัน bs() ภายในสูตรบอกให้ patsy สร้างฐานบี-สปลายน์ที่มี 6 องศาเสรีภาพและดีกรี 3 (กำลังสาม) patsy คืนเมทริกซ์ดีไซน์ซึ่งส่งตรงเข้า sm.OLS() ได้ พารามิเตอร์ df ควบคุมจำนวนฟังก์ชันฐานของสปลายน์ — ค่ายิ่งสูงยิ่งยืดหยุ่น คล้ายกับการเพิ่มจำนวนปม
หากต้องการสปลายน์แบบธรรมชาติ ให้เปลี่ยนจาก bs() เป็น ns():
spline_basis = dmatrix("ns(x, df=6)", data=df, return_type="dataframe")
การใช้ statsmodels กับสูตร
statsmodels มี API แบบสูตรที่ผสานกับ patsy ด้วย นี่เป็นวิธีที่สะอาดที่สุดเมื่ออยากได้การถดถอยสปลายน์บรรทัดเดียวพร้อมเอาต์พุตทางสถิติครบถ้วน
import statsmodels.formula.api as smf
model = smf.ols("y ~ bs(x, df=7, degree=3)", data=df).fit()
print(model.summary())

สรุปโมเดลของ statsmodels
เอาต์พุตจาก summary() ให้สัมประสิทธิ์ของแต่ละฟังก์ชันฐานสปลายน์ ส่วนเบี่ยงเบนมาตรฐาน ค่า p และสถิติการฟิตทั่วไป สัมประสิทธิ์เองตีความโดยตรงไม่ได้ เพราะสอดคล้องกับฟังก์ชันฐาน ไม่ใช่ปริมาณในโลกจริง ตีความด้วยการพล็อตค่าพยากรณ์ตลอดช่วงของตัวทำนาย
สำหรับเวิร์กโฟลว์เชิงสถิติส่วนใหญ่ API แบบสูตรของ statsmodels สะดวกที่สุด ใช้ scikit-learn เมื่อสปลายน์เป็นส่วนหนึ่งของไปป์ไลน์ ML ขนาดใหญ่
การถดถอยสปลายน์ใน R
R มีการรองรับสปลายน์ในตัวที่ดีที่สุดในบรรดาภาษาหลัก ๆ แพ็กเกจ splines มาพร้อม R พื้นฐาน และสองฟังก์ชันหลัก — bs() และ ns() — ใช้ได้โดยตรงในสูตรการถดถอยใด ๆ
ฟังก์ชัน bs() สร้างฐานบี-สปลายน์ ส่วน ns() สร้างฐานสปลายน์กำลังสามแบบธรรมชาติ ทั้งสองจะสร้างเมทริกซ์ฟีเจอร์สปลายน์ที่ระบบสูตรของ R แทรกเข้าโมเดลโดยอัตโนมัติ
การใช้ bs() สำหรับบี-สปลายน์
# Data
set.seed(42)
x <- seq(0, 10, length.out = 100)
y <- sin(x) + 0.3 * x + rnorm(100, sd = 0.3)
df <- data.frame(x = x, y = y)
# Cubic B-spline with 6 degrees of freedom
library(splines)
model <- lm(y ~ bs(x, df = 6, degree = 3), data = df)
summary(model)

เอาต์พุต bs() ใน R
สูตร y ~ bs(x, df = 6, degree = 3) บอก R ให้แทน x ด้วยฐานบี-สปลายน์ดีกรี 3 และ 6 องศาเสรีภาพ R จัดการส่วนที่เหลือ — สร้างเมทริกซ์ฐาน ฟิตโมเดลเชิงเส้น และให้วัตถุ lm มาตรฐานพร้อมเครื่องมือวิเคราะห์ทั่วไป
คุณสามารถกำหนดตำแหน่งปมเองได้หากต้องการควบคุมเต็มที่:
model <- lm(y ~ bs(x, knots = c(2, 5, 8), degree = 3), data = df)
วิธีนี้วางปมที่ x = 2, x = 5 และ x = 8 แทนที่จะปล่อยให้ R เลือกให้
การใช้ ns() สำหรับสปลายน์แบบธรรมชาติ
สำหรับสปลายน์กำลังสามแบบธรรมชาติ (ที่มีพฤติกรรมเชิงเส้นเลยขอบเขต) ให้ใช้ ns():
model_natural <- lm(y ~ ns(x, df = 6), data = df)
summary(model_natural)

เอาต์พุต ns() ใน R
ไวยากรณ์เหมือนกัน แต่พฤติกรรมที่ขอบต่างกัน สปลายน์แบบธรรมชาติมักปลอดภัยกว่าเมื่อสนใจการพยากรณ์หรือการตีความใกล้ขอบของข้อมูล
การตีความเอาต์พุต
สัมประสิทธิ์ในเอาต์พุต summary() สอดคล้องกับฟังก์ชันฐานสปลายน์ ไม่ใช่ปริมาณที่ตีความได้โดยตรง เพื่อดูว่าโมเดลเรียนรู้อะไร ให้พยากรณ์บนกริดของค่า x ที่หนาแน่นและพล็อตผลลัพธ์:
x_grid <- data.frame(x = seq(0, 10, length.out = 200))
preds <- predict(model, newdata = x_grid)
plot(df$x, df$y)
lines(x_grid$x, preds, col = "green", lwd = 2)

การตีความเอาต์พุตใน R
นี่เป็นรูปแบบมาตรฐานใน R ที่ฟิตสปลายน์ พยากรณ์บนกริดที่เรียบ แล้วซ้อนเส้นโค้งลงบนข้อมูล R ยังอนุญาตให้ใช้เทอมสปลายน์ร่วมกับตัวทำนายอื่นในสูตรเดียวกันได้:
model_multi <- lm(y ~ ns(x, df = 6) + other_var, data = df)
โมเดลนี้ฟิตเอฟเฟกต์ไม่เชิงเส้นสำหรับ x และเอฟเฟกต์เชิงเส้นสำหรับ other_var ในโมเดลเดียว ความยืดหยุ่นนี้คือเหตุผลที่สปลายน์ถูกใช้กว้างขวางในเวิร์กโฟลว์เชิงสถิติที่ใช้ R
ข้อดีของการถดถอยสปลายน์
ต่อไปนี้คือข้อดีบางประการของสปลายน์เมื่อเทียบกับโมเดลแมชชีนเลิร์นนิงยอดนิยม
- จำลองความสัมพันธ์ไม่เชิงเส้นโดยไม่ต้องรู้รูปแบบล่วงหน้า: ไม่ต้องผูกกับรูปทรงฟังก์ชันเฉพาะ สปลายน์ปล่อยให้ข้อมูลกำหนดเส้นโค้ง จึงจำลองโค้ง ช่วงราบ และการเปลี่ยนทิศได้โดยไม่ต้องรู้ล่วงหน้าว่าจะเกิดที่ใด
- ฟิตที่เรียบและตีความได้: เอาต์พุตคือเส้นโค้งต่อเนื่อง ไม่ใช่การพยากรณ์แบบกล่องดำ สามารถพล็อตสปลายน์ เห็นว่าการตอบสนองเปลี่ยนอย่างไรตามช่วงของตัวทำนาย และอธิบายให้ผู้ไม่เชี่ยวชาญเข้าใจได้
- เสถียรกว่าพหุนามดีกรีสูง: แต่ละช่วงเป็นพหุนามดีกรีต่ำ จึงไม่มีชิ้นใดมีพฤติกรรมหลุดโลกที่ปลายช่วง พฤติกรรมที่ขอบควบคุมได้ดีกว่า โดยเฉพาะกับสปลายน์กำลังสามแบบธรรมชาติ
- ทำงานร่วมกับเวิร์กโฟลว์การถดถอยที่มีอยู่ได้: สปลายน์ทำงานภายในกรอบการถดถอยเชิงเส้นมาตรฐาน รวมกับตัวทำนายอื่น การทำให้เป็นระเบียบ (regularization) เอฟเฟกต์ผสม และเครื่องมืออื่น ๆ ที่ต่อยอดจาก OLS ได้
ข้อจำกัดของการถดถอยสปลายน์
เช่นเดียวกับโมเดลส่วนใหญ่ สปลายน์มาพร้อมข้อแลกเปลี่ยนสองสามอย่างที่ต้องรู้
- การเลือกปมคือส่วนที่ยาก: การเลือกจำนวนและตำแหน่งของปมต้องใช้ความพยายาม ค่าเริ่มต้นใช้ได้ในบางครั้ง แต่หลายกรณีต้องใช้การตรวจสอบไขว้หรือความรู้เชิงโดเมนเพื่อให้ได้ฟิตที่ดี ไม่มีสูตรตายตัวที่ใช้ได้เสมอ
- ยิ่งมีปมมาก การตีความยิ่งยาก: สปลายน์สามปมยังตีความได้ง่าย แต่ยี่สิบปมไม่ใช่ แม้ยังพล็อตเส้นโค้งได้ แต่การอธิบายว่าโมเดลทำอะไรอย่างเข้มงวดจะยากขึ้นมาก
- ยังคงฟิตเกินได้: สปลายน์เสถียรกว่าพหุนามดีกรีสูง แต่ไม่กันฟิตเกิน ปมมากเกิน วางปมไม่ดี มีเอาต์ไลเออร์มาก หรือขนาดตัวอย่างเล็ก ล้วนทำให้โมเดลฟิตข้อมูลฝึกได้ดีแต่พลาดข้อมูลใหม่
- สัมประสิทธิ์ตีความโดยตรงไม่ได้: สัมประสิทธิ์ที่ฟิตสอดคล้องกับฟังก์ชันฐาน ไม่ใช่ปริมาณในโลกจริง คุณไม่สามารถอ่านว่า "เพิ่ม x หนึ่งหน่วยทำให้ y เปลี่ยนไปเท่ากับเบต้า" แบบการถดถอยเชิงเส้น ต้องตีความเชิงภาพจากเส้นฟิต
ข้อผิดพลาดที่พบบ่อยกับการถดถอยสปลายน์
ต่อไปนี้คือข้อผิดพลาดบางอย่างที่ผู้เริ่มต้นมักทำกับสปลายน์รีเกรสชัน
- ใช้ปมมากเกินไป: มือใหม่มักเพิ่มปมจนฟิตดูดีด้วยตาในข้อมูลฝึก นี่คือกับดักฟิตเกลินแบบคลาสสิก หากสปลายน์ส่ายไปมาระหว่างทุกการสังเกต แปลว่ามีปมมากเกินไป จงตรวจสอบไขว้หรือเริ่มจากปมน้อย ๆ แล้วเพิ่มเฉพาะเมื่อรีซิดวลแสดงรูปแบบชัดเจน
- ใช้ปมน้อยเกินไปแล้วสมมติว่าข้อมูลเป็นเส้นตรง: ตรงกันข้าม หากฟิตสปลายน์ด้วยหนึ่งหรือสองปมแล้วรีซิดวลยังแสดงความโค้ง โมเดลกำลังฟิตต่ำเกิน สปลายน์มีช่วงไม่พอจะตามรูปแบบจริง ให้เพิ่มปมในบริเวณที่รีซิดวลผิดเพี้ยน
- เข้าใจพฤติกรรมที่ขอบผิดพลาด: สปลายน์กำลังสามทั่วไปอาจมีพฤติกรรมแปรปรวนใกล้ขอบของข้อมูล หากกำลังพยากรณ์ใกล้ขอบ (หรือเลยขอบ) ให้ใช้สปลายน์กำลังสามแบบธรรมชาติ ซึ่งบังคับให้เส้นเป็นเชิงเส้นหลังปมขอบ และหลีกเลี่ยงการสวิงที่สปลายน์กำลังสามทั่วไปอาจสร้าง
- เปรียบเทียบสปลายน์โดยตรงกับโมเดลไม่เชิงเส้นไร้ข้อจำกัด: สปลายน์ไม่ได้พยายามเป็นนิวรัลเน็ตหรือแรนดอมฟอเรสต์ หากวัดเทียบกับโมเดลกล่องดำไม่เชิงเส้นล้วน ๆ ในด้านความแม่นยำการพยากรณ์ โมเดลกล่องดำมักชนะในเชิงประสิทธิภาพดิบ แต่นั่นไม่ใช่ประเด็น สปลายน์ชนะในด้านการตีความและความสามารถในการเข้ากับการอนุมานสถิติแบบดั้งเดิม
การถดถอยสปลายน์เทียบกับเทคนิคการจำลองไม่เชิงเส้นอื่น ๆ
สปลายน์ไม่ใช่วิธีเดียวในการจำลองความสัมพันธ์ไม่เชิงเส้น แต่มีประโยชน์หากคุณใส่ใจเรื่องการตีความ ต่อไปนี้คือการเปรียบเทียบกับทางเลือกยอดนิยม
การถดถอยพหุนาม
การถดถอยพหุนามใช้สมการสากลเส้นเดียว ระบุได้ง่ายกว่า แต่เสถียรน้อยกว่า โดยเฉพาะที่ขอบ สปลายน์เหนือกว่าพหุนามในด้านความยืดหยุ่นและเสถียรภาพเมื่อความสัมพันธ์มีมากกว่าหนึ่งจุดโค้ง พหุนามตีความง่ายกว่าก็ต่อเมื่อดีกรีต่ำมาก (2 หรือ 3) เกินกว่านั้น สปลายน์กลับทั้งเชื่อถือได้และตีความได้มากกว่า
แบบจำลองเชิงบวกพูนทั่วไป (GAMs)
GAM แทบจะเป็นสปลายน์ในสเกลใหญ่ อนุญาตให้ฟิตสปลายน์สำหรับตัวทำนายแต่ละตัวอย่างเป็นอิสระและรวมกันแบบบวกพูน คุณอาจคิดว่าการถดถอยสปลายน์คือ GAM แบบตัวแปรเดียว และ GAM คือผลรวมของสปลายน์ข้ามหลายตัวแปร
GAM จัดการตัวทำนายไม่เชิงเส้นหลายตัวได้สะอาดกว่าการฟิตสปลายน์ทีละตัวเอง ทั้งยังมีโทษการทำให้เรียบ (smoothing penalties) เพื่อเลือกปริมาณความยืดหยุ่นที่เหมาะสม ซึ่งตัดงานเลือกปมบางส่วนออก หากทำงานกับหลายตัวทำนายและมีบางตัวที่ต้องการการปฏิบัติแบบไม่เชิงเส้น GAM มักเป็นตัวเลือกที่ดีกว่า
ต้นไม้ตัดสินใจ
ต้นไม้ตัดสินใจใช้วิธีที่แตกต่างอย่างสิ้นเชิง แทนการฟิตเส้นโค้งเรียบ ต้นไม้จะแบ่งปริภูมิตัวทำนายเป็นบริเวณสี่เหลี่ยม และพยากรณ์ค่าคงที่ในแต่ละบริเวณ ผลลัพธ์คือฟังก์ชันขั้นบันได
ต้นไม้ยืดหยุ่นกว่าสปลายน์ในบางแง่ — จำลองปฏิสัมพันธ์และการเปลี่ยนแปลงฉับพลันได้ แต่ฟังก์ชันที่ฟิตไม่เรียบหรือไม่ต่อเนื่อง และทั่วไปได้ไม่ดีในบริเวณที่ข้อมูลเบาบาง สปลายน์ดีกว่าเมื่อใส่ใจความเรียบและการประมาณเกินช่วงที่เสถียร ต้นไม้ดีกว่าเมื่อใส่ใจการจำลองเส้นแบ่งคมชัดหรือปฏิสัมพันธ์ข้ามตัวแปรจำนวนมาก
เหตุผลที่การถดถอยสปลายน์สำคัญ
สปลายน์มีอยู่ทุกที่ในสถิติประยุกต์ พบในงานวิจัยคลินิก การวิเคราะห์เศรษฐกิจ วิทยาศาสตร์สิ่งแวดล้อม การจำลองอนุกรมเวลา และทุกสาขาที่ต้องจำลองเอฟเฟกต์ไม่เชิงเส้นที่เรียบ โดยไม่ใช้โมเดลกล่องดำ
เหตุผลคือสมดุลที่สปลายน์มอบให้ — ความยืดหยุ่นพอจะรับมือข้อมูลยุ่งเหยิง และโครงสร้างพอจะคงความตีความได้และเสถียร
สปลายน์ยังเป็นรากฐานของวิธีขั้นสูงอื่น ๆ แบบจำลองเชิงบวกพูนทั่วไปสร้างขึ้นบนสปลายน์โดยตรง สปลายน์ทำให้เรียบ (smoothing splines) ขยายแนวคิดด้วยการทำให้เป็นระเบียบในตัว และเทคนิคการถดถอยไม่เชิงเส้นสมัยใหม่จำนวนมากใช้ฐานสปลายน์ หากอยากเข้าใจวิธีเหล่านี้ ต้องเข้าใจสปลายน์ก่อน
ดังนั้น สปลายน์จึงสำคัญเพราะใช้งานได้จริง และเป็นบล็อกก่อสร้างสำหรับหลายอย่างถัดไป มันไม่ใช่โมเดลที่ทรงพลังที่สุด แต่เป็นหนึ่งในโมเดลที่เชื่อถือได้ที่สุด — ซึ่งมักเป็นสิ่งที่สำคัญ
สรุป
การถดถอยสปลายน์จำลองความสัมพันธ์ไม่เชิงเส้นด้วยการผสานพหุนามแบบแบ่งช่วงเข้าที่จุดที่เรียกว่าปม นั่นคือแนวคิด และส่วนที่เหลือเป็นเพียงรูปแบบย่อยของมัน
ปมและความเรียบลื่นคือสองแนวคิดที่ต้องทำความเข้าใจให้ถ่องแท้ ทุกอย่างที่เหลือ (ประเภทสปลายน์ การแทนแบบฐาน การนำไปใช้ใน R และ Python) เป็นเพียงวิธีต่าง ๆ ในการทำงานกับสองแนวคิดนี้
ลองใช้สปลายน์หลายแบบกับข้อมูลของคุณเอง เปรียบเทียบแบบกำลังสาม แบบธรรมชาติ และบี-สปลายน์ ขยับปมแล้วดูว่าเกิดอะไรขึ้น แค่ทดลองไป เพราะลักษณะเชิงภาพของฟิตทำให้เห็นสิ่งที่แต่ละทางเลือกทำได้ง่าย
หากอยากเจาะลึกคณิตศาสตร์เบื้องหลังสปลายน์และอัลกอริทึมอื่น ๆ อีกมากมาย ลงทะเบียนใน เส้นทาง Machine Learning Scientist in Python ของเรา มีทุกอย่างที่ต้องการเพื่อพร้อมทำงานในปี 2026
คำถามที่พบบ่อยเกี่ยวกับ Spline Regression
อธิบายการถดถอยสปลายน์แบบง่าย ๆ คืออะไร?
การถดถอยสปลายน์คือวิธีจำลองความสัมพันธ์ที่โค้งงอในข้อมูล โดยแบ่งช่วงของตัวทำนายเป็นช่วงย่อยแล้วฟิตพหุนามขนาดเล็กในแต่ละช่วง ช่วงต่าง ๆ เชื่อมต่อกันอย่างราบรื่นที่จุดที่เรียกว่าปม ผลที่ได้คือเส้นโค้งต่อเนื่องเส้นเดียว มันยืดหยุ่นกว่าการถดถอยเชิงเส้น และเสถียรกว่าการถดถอยพหุนามดีกรีสูง
ควรใช้การถดถอยสปลายน์แทนการถดถอยเชิงเส้นเมื่อใด?
ใช้การถดถอยสปลายน์เมื่อความสัมพันธ์ระหว่างตัวทำนายกับผลลัพธ์ไม่ใช่เส้นตรง หากโมเดลเชิงเส้นทิ้งรูปแบบไว้ในรีซิดวล — เช่น ความผิดพลาดเป็นบวกตรงกลางและเป็นลบที่ปลายช่วง — นั่นเป็นสัญญาณว่าความสัมพันธ์ไม่เชิงเส้น
ปม (knots) ในการถดถอยสปลายน์คืออะไร?
ปมคือจุดตามแกนตัวทำนายที่พหุนามช่วงหนึ่งสิ้นสุดและช่วงถัดไปเริ่มต้น มันควบคุมความยืดหยุ่นของสปลายน์ ปมมากขึ้นหมายความว่าเส้นโค้งงอได้หลายจุดมากขึ้น การเลือกจำนวนและตำแหน่งของปมเป็นการตัดสินใจหลักในการถดถอยสปลายน์ ปมน้อยไปทำให้ฟิตต่ำเกิน ปมมากไปทำให้ฟิตเกิน
ความแตกต่างระหว่างสปลายน์กำลังสามทั่วไปกับสปลายน์กำลังสามแบบธรรมชาติคืออะไร?
ทั้งคู่ฟิตพหุนามกำลังสามระหว่างปม แต่ต่างกันที่พฤติกรรมใกล้ขอบข้อมูล สปลายน์กำลังสามทั่วไปอาจมีพฤติกรรมคาดไม่ถึงใกล้ขอบ เพราะปลายแต่ละด้านยังเป็นพหุนามกำลังสามเต็มรูป ส่วนสปลายน์กำลังสามแบบธรรมชาติบังคับให้เส้นเป็นเชิงเส้นเลยปมนอกสุด ทำให้การพยากรณ์ใกล้หรือเลยขอบมีเสถียรมากกว่า
จะเลือกจำนวนปมสำหรับโมเดลสปลายน์ได้อย่างไร?
เริ่มจาก 3–5 ปมที่วางตามควอนไทล์ของตัวทำนาย เพื่อให้แต่ละช่วงมีจำนวนการสังเกตใกล้เคียงกัน หากรีซิดวลแสดงรูปแบบที่สปลายน์ยังจับไม่ได้ ให้เพิ่มปมในบริเวณนั้น หากต้องการแนวทางที่เข้มงวดกว่า ใช้การตรวจสอบไขว้เพื่อเปรียบเทียบจำนวนปมต่าง ๆ แล้วเลือกการตั้งค่าที่ให้ข้อผิดพลาดบนชุดตรวจสอบต่ำสุด