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