วิธีทำนายราคารถยนต์ด้วย linear Regression แบบ Ordinary Least Square (OLS) และ Online Gradient Descent โดย AzureML
เมื่อเราพูดถึงโมเดลแบบ Regression ที่เราต้องการทำนายหรือคาดการณ์สิ่งต่าง ๆ เชิงตัวเลขนั้นโมเดลที่เรานึกถึงเป็นอันดับแรกคือ linear Regression ซึ่งใน AzureML สามารถทำ linear Regression ได้สองวิธีคือ
- Ordinary Least Square (OLS)
วิธีการนี้เราต้องการที่จะ Minimum Error เพื่อให้มี error น้อยที่สุดโดยใช้วิธีกำลังสองน้อยที่สุดนั้นคือ
เราต้องการจะ minimum ∑_(i=1)^n▒(Yi-Y ̂i)^2
- Online Gradient Descent
Gradient Descent มีความหมายคือ slopที่ลาดลง
เราจะทำการวัดประสิทธิภาพของโมเดลเราด้วยค่า error นั้นก็คือ Cost Function โดยมีเป้าหมายคือหาชุด Parameter ที่ทำให้เราเสียค่าใช้จ่ายที่น้อยที่สุดนอกจากนี้ยังมี parameter ที่เราต้องกำหนดคือ Learning Rate หรือ Alpha หากเราเลือกต่ำเกินโมเดลจะใช้เวลานานในการลงมาถึงจุดต่ำสุด แต่หากเลือกสูงเกินไปโมเดลของเราอาจลงมาไม่ถึงจุดต่ำสุด
ในบทความนี้เราจะมาทำนายข้อมูลราคารถยนต์หรือก็คือคอลัมน์ Priceโดยใช้ Linear Regression ทั้งสองแบบนี้ซึ่งเราสามารถทำได้ไม่อยากเลยหากเรามีตัวช่วยอย่าง Azure ML ค่ะ
1. ค้นหา dataset ที่ชื่อว่า Automobile price data (Raw) ซึ่งเป็น dataset ตัวอย่างของ AzureML จากนั้นลาก dataset นี้มาวางไว้บน Workspace
2. ทำการ Clean missing data ที่มีชนิดของข้อมูลเป็น String ทุกคอลัมน์โดยการค้นหา module ที่ชื่อว่า Clean Missing Data แล้วลากมาเชื่อมกับ dataset เลือกทุกคอลัมน์ที่เป็น string ของเราแล้วเลือก Replace with mode จากนั้นคลิก RUN
3. ทำการ Clean missing data ที่มีชนิดของข้อมูลเป็น numeric ทุกคอลัมน์โดยการค้นหา module ที่ชื่อว่า Clean Missing Data แล้วลากมาเชื่อมกับ dataset เลือกทุกคอลัมน์ที่เป็น numeric ของเราแล้วเลือก Replace with mean จากนั้นคลิก RUN
4. แก้ชนิดข้อมูลที่เป็น string ให้เป็น category โดยการค้นหา module ที่ชื่อว่า Edit Metadata แล้วลากมาเชื่อมกับ Clean Missing Data แล้วเลือกคอลัมน์ที่เป็น string แล้วเลือก Categorical แล้วเลือก Make Categorical จากนั้นคลิก RUN
5. จากนั้นเราจะแยกข้อมูลออกเป็น training set และ test ใช้ module ที่มีชื่อว่า Split Data จากนั้นทำการปรับค่า parameter โดยปรับ Fraction of rows in the first output dataset เป็น7 เพื่อแบ่งข้อมูลเป็น training set : test set เป็น 70% : 30% และใส่ค่า 123 ใน Random Seed และเลือก Stratified split เลือก true จากนั้นเลือกคอลัมน์ที่เป็น target ของเรานั้นคือ price จากนั้นคลิก RUN
6. ค้นหา module ที่มีชื่อว่า Linear Regression เพื่อทำการสร้างและ train โมเดล โดยเลือก Solution method เป็น Ordinary Least Square และปรับ Random number seed เป็น 123
7. ลาก Module ที่ชื่อว่า Train Model มาเชื่อมกับ โมเดลและSplit Data จากนั้นเลือกคอลัมน์ Price
8. จากนั้นค้นหา module ที่ชื่อว่า Score Model มาวางบน Workspace แล้วลากเส้นเชื่อมจาก Train Model มาเชื่อมที่วงกลมวงแรก และลากจากวงกลมที่สองของ Split Data มาเชื่อมกับวงที่สองของ Score Model
9. ทำการเปรียบเทียบกับวิธีการ Online Gradient Descent โดยทำเช่นเดียวกับวิธีการก่อนหน้าแต่เลือก Solution method เป็น Online Gradient Descent และปรับ Random number seed เป็น 123
10. ค้นหา module ที่ชื่อว่า Evaluate Model มาเชื่อมกับ Score Model ทั้งสองจากนั้นคลิก RUN
ผลจากการทำนายพบว่าในข้อมูลการทำนายราคารถยนต์ชุดนี้การทำนายโดยใช้ Ordinary Least Square ให้ผลลัพธ์ดีกว่า Online Gradient Descent ดังนั้น linear Regression แบบ Ordinary Least Square มีเหมาะสมสำหรับการทำนาย dataset ที่ชื่อว่า Automobile