ในบทความที่แล้วผมเขียนถึงวิธีการทำ Linear Regression ซึ่งก็คือการสร้างสมการเส้นตรงสำหรับชุดข้อมูลชุดนึงขึ้นมา แต่ถ้าเกิดข้อมูลของเราไม่ได้มีความสัมพันธ์เป็นเส้นตรงล่ะ? เราจะทำยังไงดี


ในบทความนี้ผมขอยกตัวอย่างการเคลื่อนที่แบบโปรเจคไทล์ครับ สมมติว่าเราเป็นนักวิทยาศาสตร์แล้วมีเครื่องมือที่ช่วยให้เราวัดระยะความสูงของวัตถุที่เราโยนได้ในเวลาต่างๆ ถ้าเราเอาความสูงที่วัดได้มาพล็อตเทียบกับเวลา เราจะได้ภาพประมาณนี้

ซึ่งการเคลื่อนที่แบบโปรเจคต์ไทล์นี้มีความสัมพันธ์ทางคณิตศาสตร์เป็นรูปกราฟที่เราเรียกกันว่า พาราโบลา (y = x²) ครับ

จะเห็นได้ว่ามันไม่ได้เป็นเส้นตรงเลย ถ้าเราเอาโมเดลที่เป็นเส้นตรงไปวิเคราะห์ มันจะได้ผลที่มีค่า error เยอะมาก ซึ่งไม่ดีแน่ๆ

วิธีแก้คือใช้ Polynomial Regression ครับ สิ่งที่มันทำคือหาสมการดีกรีที่สูงขึ้นมาใช้ประมาณค่าความสัมพันธ์ของเราแทน เป็นดีกรี 2 3 4 ขึ้นไปเรื่อยๆ


เขียนโค้ดกันดีกว่าimport matplotlib.pyplot as plt
import numpy as np
import random# s = ut + 1/2at²
# y = 1/2g(x)²X = []
y = []for x in np.linspace(0, 10, 50):
 X.append(x)
 y.append(-1 * (9.8 * (x**2) / 2) + random.randint(-20, 20))plt.scatter(X, y)
plt.show()

เหมือนเดิม ผมต้องเริ่มต้นจากการสร้างชุดข้อมูลมาก่อน ผม generate ชุดข้อมูลตามสมการ y = -gx² + error แล้วก็เอาไปเก็บในลิสต์ พจน์ error คือพจน์ที่ผมใช้ random สุ่มเอาค่าออกมา

ถ้ากดรันโค้ดตอนนี้ก็จะได้ภาพจุดที่เราสร้างขึ้นมาจากความสัมพันธ์ตามนี้ครับ

เมื่อสร้างชุดข้อมูลเสร็จเราก็นำข้อมูลที่ได้มาสร้างตัว model เลยmodel = np.poly1d(np.polyfit(X, y, 2))

ถ้ารันโค้ดชุดนี้ปุ๊ปเราก็จะได้ตัว model มาแล้วครับถ้าสั่ง print ออกมาก็จะได้สมการที่ตัว model คำนวณได้ออกมา ของผมได้เป็น y = -4.986 x² + 0.1806 x + 3.321

ลองเอาสมการตัวที่เราใส่ไปตอนสร้างข้อมูลมาจัดรูปซะ ก็จะได้ค่าหน้าตาใกล้ๆกันพอสมควรครับplt.scatter(X, y)
plt.plot(X, model(X), c=’g’)plt.show()

เผื่อใครต้องการอยากเห็นภาพโมเดลที่เราได้มาสามารถใช้ matplotlib พล็อตภาพกราฟออกมาให้ได้

ผลลัพธ์ที่ได้ก็จะประมาณนี้ครับ


ที่ผ่านมาผมไม่ได้มีแฟนเพจเฟสบุ๊คหรือช่องทางติดต่อที่ง่ายๆ เวลาคนมีปัญหาอะไรเลยอาจจะไม่สะดวกบ้าง ผมเลยเปิดแฟนเพจเฟสบุ๊คขึ้นมาครับ (พึ่งเปิดมาไม่นานเหมือนกัน) ก็ถ้าใครมีปัญหาหรืออยากปรึกษาเรื่องอะไรสามารถติดต่อได้ที่แฟนเพจเลยนะครับ สวัสดีครับ
ลิ้งค์แฟนเพจ