Machine Learning(EP.3)- การวิเคราะห์การถดถอยเชิงเส้น (Linear Regression)
การวิเคราะห์การถดถอยเชิงเส้น เป็นการคำนวณหาความสัมพันธ์ระหว่างตัวแปร 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 ประกอบความเข้าใจได้) ประเภทของความสัมพันธ์แบ่งได้ดังนี้
หมายถึงค่าของตัวแปร x , y มีทิศทางเดียวกันส่งผลให้เมื่อค่า x เพิ่มขึ้น ค่า y ก็เพิ่มตามไปด้วยหรือเรียกว่า การแปรผันตรง
หมายถึงค่าของตัวแปร x , y มีทิศทางตรงข้ามกันส่งผลให้เมื่อค่า x ลดลง ค่า y เพิ่มขึ้นหรือค่า x เพิ่มขึ้นแต่ค่า y ลดลงเรียกว่า การแปรผกผัน
ค่าความสัมพันธ์
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))
บทความที่เกี่ยวข้อง
EP.1 — ชุดข้อมูล (DataSet)
EP.2 — รู้จักกับข้อมูลชุดเรียนรู้และข้อมูลชุดทดสอบ
EP.3 — Linear Regression
EP.4 — Binary Classifier
EP.5 — K-nearest Neighbors
EP.6 — Naive Bayes
EP.7 — การวิเคราะห์องค์ประกอบหลัก (PCA)
EP.8 — การจัดกลุ่มด้วย K-Means(K-Means Clustering)
EP.9 — การจดจำใบหน้า (Face Recognition)
EP.10 — การจดจำตัวอักษร (Character Recognition)