Machine Learning(EP.3)- การวิเคราะห์การถดถอยเชิงเส้น (Linear Regression)

KongRuksiam Studio
3 min readJan 16, 2020

--

การวิเคราะห์การถดถอยเชิงเส้น เป็นการคำนวณหาความสัมพันธ์ระหว่างตัวแปร 2 ตัวแปร คือ ตัวแปรที่เราทราบค่า (Predictor :x ) และตัวแปรที่เราไม่ทราบค่า (Response:y) ซึ่งเป็นความสัมพันธ์แบบเชิงเส้น (Linear) โดยการคำนวณจากค่า x และ y ที่มีความสัมพันธ์กันจะใช้สมการของ Linear Regression คือ

y=ax+b

บางท่านอาจจะเรียกตัวแปร x , y ว่า

x= ตัวแปรอิสระ
y= ตัวแปรตาม

รูปแบบความชันและระยะตัดแกน
a = ความชันของเส้นตรง
b = ระยะตัดแกน y

แต่เพื่อความเข้าใจง่ายขอเรียกว่า

x=ตัวแปรที่ทราบค่า | ตัวประมาณการ(Predictor)
y=ตัวแปรที่เราไม่ทราบค่า |ตัวตอบสนอง (Response)

การวิเคราะห์การถดถอยเชิงเส้นต้องมีการเก็บจำนวน Sample space จำนวนมากพอ หรือเขียนโปรแกรมกำหนดค่าให้ได้กลุ่มตัวอย่างของข้อมูลให้ได้เยอะที่สุดนั้นคือ มี x และ y ที่มีความสัมพันธ์กันหลายๆ ครั้งเพื่อนำมาหาสมการความสัมพันธ์ (สามารถ LAB Python Linear Regression ประกอบความเข้าใจได้) ประเภทของความสัมพันธ์แบ่งได้ดังนี้

ตัวอย่างแผนภาพการกระจาย (Scatter Plot) ความสัมพันธ์เส้นตรงทางบวก

หมายถึงค่าของตัวแปร x , y มีทิศทางเดียวกันส่งผลให้เมื่อค่า x เพิ่มขึ้น ค่า y ก็เพิ่มตามไปด้วยหรือเรียกว่า การแปรผันตรง

ตัวอย่างแผนภาพการกระจาย (Scatter Plot) ความสัมพันธ์เส้นตรงทางลบ

หมายถึงค่าของตัวแปร x , y มีทิศทางตรงข้ามกันส่งผลให้เมื่อค่า x ลดลง ค่า y เพิ่มขึ้นหรือค่า x เพิ่มขึ้นแต่ค่า y ลดลงเรียกว่า การแปรผกผัน

ตัวอย่างแผนภาพการกระจาย (Scatter Plot) ไม่มีความสัมพันธ์ของข้อมูล

ค่าความสัมพันธ์

Coefficient ค่าสัมประสิทธิ์แสดงการตัดสินใจ คือ ตัวเลขที่บอกความสัมพันธ์ของสองตัวแปร หรือ ค่าที่แสดงว่าตัวแปร x มีอิทธิพลต่อตัวแปร y มากน้อยเพียงใดโดยมี ขอบเขตในช่วง -1 ถึง 1

Intercept คือ ค่าที่บ่งบอกจุดตัดแกน

R-Square คือ ค่าความผันแปรของตัวแปร y มีค่าอยู่ระหว่าง 0% — 100%
– 0% หมายถึง ผลลัพธ์ที่ได้มานั้นไม่สามารถอธิบายความผันแปรของค่าตัวแปร y ต่างที่กระจายรอบค่าเฉลี่ยได้เลย

– 100% แสดงให้เห็นว่าผลลัพธ์ที่ได้มานั้นสามารถอธิบายความผันแปรของค่าตัวแปร y ต่างที่กระจายรอบค่าเฉลี่ยได้เป็นอย่างดี

การวัดประสิทธิภาพ
y_pred คือผลการทำนายผลลัพธ์จากโมเดล
y_test คือ ข้อมูลจริงที่ใช้ทดสอบการทำนายผลโมเดล

Loss Function คือ การคำนวน Error ว่า y_pred ที่โมเดลทำนายออกมา ต่างจาก y_test อยู่เท่าไร แล้วหาค่าเฉลี่ย เพื่อที่จะนำมาหา Gradient ของ Loss แล้วใช้อัลกอริทึม Gradient Descent เพื่อให้ Loss น้อยลงในการเทรนรอบถัดไป

(Loss ยิ่งค่าน้อยยิ่งดี)

Loss Function ที่นิยมใช้ในงาน Regression ในปัจจุบัน มีหลายตัว เช่น Mean Absolute Error (MAE) หรือ L1 Loss , Mean Squared Error (MSE) หรือ L2 Loss , Root Mean Squared Error (RMSE)

1. Mean Absolute Error (MAE) การคำนวน Error ว่า y_pred ต่างจาก y_test อยู่เท่าไร ด้วยการนำมาลบกันตรง ๆ แล้วหาค่าเฉลี่ย โดยไม่สนใจเครื่องหมาย (Absolute) เพื่อหาขนาดของ Error โดยไม่สนใจทิศทาง

2. Mean Squared Error (MSE) การคำนวน Error ว่า y_pred ต่างจาก y_test อยู่เท่าไร ด้วยการนำมาลบกัน แล้วยกกำลังสอง (Squared) เพื่อไม่ต้องสนใจค่าติดลบ (ถ้ามี) แล้วหาค่าเฉลี่ย

3. Root Mean Squared Error (RMSE) คือ นำ MSE มาหา Squared Root

ค่า MSE, MAE อยู่ในช่วง 0 — Infinity เหมือนกัน ยิ่งน้อยคือยิ่งดีถ้าเป็น 0 คือ ไม่ มีError เลย ดังนั้นถ้าค่าเท่ากับ 0 แปลว่าโมเดลทำนายค่า y_test ได้ถูกต้อง100% แต่ในทางปฏิบัติโอกาสที่จะเทรนโมเดลได้ loss = 0 เป็นไปได้ยากมาก

อาศัยส่วนของ scikit-learn เข้ามาทำงานร่วมด้วยเพื่อวัดผลจากค่าที่คาดการหรือพยากรณ์ได้จากการ predict ตัวโมเดล (y_pred) และค่าจริงจาก y_test

from sklearn import metrics
print("MAE = ",metrics.mean_absolute_error(y_test,y_pred))
print("MSE = ",metrics.mean_squared_error(y_test,y_pred))
print("RMSE = ",np.sqrt(metrics.mean_squared_error(y_test,y_pred)))
#แสดงค่าความแม่นยำด้วย R-Square หากมีค่าเป็น 1 แสดงว่าแม่นยำที่สุด
print("Score = ",metrics.r2_score(y_test,y_pred))

🌎 ติดตามข่าวสารเพิ่มเติมได้ที่
Facebook | YouTube | TikTok

--

--

KongRuksiam Studio
KongRuksiam Studio

Written by KongRuksiam Studio

เรียนรู้การเขียนโปรแกรมนอกห้องเรียน

Responses (1)