Creating First Data Science Experiment on Microsoft Azure Machine Learning Studio

ในทุกวันนี้ Machine Learning ได้กลายเป็นเทคโนโลยีที่อยู่เบื้องหลังสิ่งต่างๆ ในชีวิตประจำวันเรามากมาย เช่นใน Facebook ซึ่งเป็น social media แห่งชีวิตประจำวันของคนจำนวนมาก การพยากรณ์ยอดขายของบริษัทห้างร้านต่างๆ และอื่นๆ
นอกจากนี้เทคโนโลยีที่สำคัญไม่แพ้กันในยุคนี้อย่าง Cloud Computing ที่ช่วยให้เราดำเนินการประมวลผลสิ่งต่างๆ ได้โดยไม่ต้องมีคอมพิวเตอร์สเปคสูงๆ หรือเซิร์ฟเวอร์ตัวแพงๆ นั่นแปลว่าทุกวันนี้เรามีบริการด้านทรัพยากรในการประมวลผลให้เราเข้าใช้กันแบบง่ายๆ และแน่นอนว่า Machine Learning ก็เป็น 1 ในเทคโนโลยีจำนวนมากที่สามารถทำงานบนระบบ Cloud นี้ได้

วันนี้เราจะมาลองเริ่มต้นใช้ Microsoft Azure Machine Learning Studio เป็นเครื่องมือในการทำ Machine learning โดยไม่ต้องเขียนโค้ดแม้แต่บรรทัดเดียว ซึ่งเราจะทดลองคาดการณ์ราคาของรถยนต์โดยใช้ Linear Regression ซึ่งเป็นโมเดลในการทำนายข้อมูลแบบต่อเนื่อง เป็นช่วงของตัวเลข เช่น 1–100, 0.01–0.99

1. สร้าง Experiment และเตรียมข้อมูล

เข้าไปที่ https://studio.azureml.net และ Sign in เข้าสู่ระบบ

คลิกปุ่ม +NEW ด้านซ้ายล่างและในแท็บด้านซ้ายเลือก EXPERIMENT, ตามด้วย BLANK EXPERIMENT

ในพื้นที่สีเทานั้นเรียกว่า experiment canvas โดยที่เจ้า Azure Machine Learning Studio จะตั้งชื่อของ experiment ที่เราเพิ่งสร้าง ตัวอย่างในกรณีนี้คือ “Experiment created on 9/13/2016” แต่เราสามารถเปลี่ยนชื่อตามที่เราต้องการได้ เช่น Automobile price prediction.

สิ่งที่ขาดไม่ได้เลยคือเราต้องมีข้อมูลจำนวนมากพอที่จะนำมาใช้ในการทำนาย ซึ่ง Azure Machine Learning Studio นั้นเองก็มี sample dataset จำนวนมากให้เราได้เลือกใช้กันได้ตามต้องการ

เพียงพิมพ์ใน Search box ด้านซ้ายว่า automobile และเลือกอันที่เขียนว่า Automobile price data (Raw) หรือถ้าอยากได้ dataset อื่นๆสามารถคลิกได้ที่ dropdown ในหัวข้อของ Saved Datasets

ลาก dataset ที่ต้องการมาไว้ที่ experiment canvas

เราสามารถดูข้อมูล dataset ข้างในได้โดยคลิกที่ output port ด้านล่างของโมดูลและเลือก Visualize

แต่ละตัวแปรใน dataset จะอยู่ในคอลัมน์ และในคอลัมน์ทางด้านขวาสุดคือ ราคา ซึ่งเป็นตัวแปรที่เราจะทำการคาดการณ์ใน experiment นี้

2. Pre-Process Data

ตอนนี้เราก็ได้ข้อมูลที่จะนำมาใช้กันแล้ว แต่ทว่าข้อมูลส่วนใหญ่ต้องผ่านการ preprocessing ก่อนที่จะนำมา analyze สังเกตได้ว่าข้อมูลที่เราได้มานั้น ในบางคอลัมน์ยังมีข้อมูลไม่ครบถ้วน

และมีบางแถวที่มีข้อมูลขาดหายไป

เราจึงจำเป็นต้องเอาคอลัมน์และแถวที่มีข้อมูลไม่ครบนั้นออก เพื่อให้ได้ผลลัพธ์ที่ดีที่สุดออกมา ในกรณีนี้ normalized-losses เป็นคอลัมน์ที่มี missing values มากที่สุด เราจึงจะทำการนำมันออกจากโมเดล

นำคอลัมน์ normalized-losses ออก

การเลือกแต่คอลัมน์ที่จำเป็นทำได้ดังนี้ เริ่มจากพิมพ์ select columns ลงใน Search box ด้านซ้ายมือ และเลือกคำว่า Select Columns in Dataset.

จากนั้นลากมาไว้ที่ experiment canvas และเชื่อมเข้ากับ output port ของ Automobile price data (Raw)

ซึ่งในโมดูลนี้ (Select Columns in Dataset) จะทำให้เราเลือกได้ว่าจะเอาหรือไม่เอาคอลัมน์ไหนเข้าไปคำนวณในโมเดล

คลิกที่โมดูล Select Columns in Dataset และเลือก Launch column selector ทางด้านขวา จากนั้นเลือก WITH RULES, ALL COLUMNS, Exclude, column names ตามลำดับ และพิมพ์คำว่า normalized-losses ลงใน text box แล้วจึงคลิกเครื่องหมายถูกด้านขวาล่างของจอ

ใน Properties ทางด้านขวาจะโชว์ว่า เราจะใช้ทุกคอลัมน์จาก dataset ยกเว้นในคอลัมน์ normalized-losses

ลบแถวที่มีข้อมูลไม่ครบออก

พิมพ์ Clean Missing Data จาก Search box ด้านซ้ายมือและลากมาไว้ที่ experiment canvas แล้วจึงเชื่อมเข้ากับโมดูล Select Column Dataset

คลิกที่ Clean Missing Data, ในหน้าต่าง Properties ด้านขวา, เลือก Remove entire row ใน dropdown ของ Cleaning mode

ทำการทดสอบ experiment โดยคลิกปุ่ม Run ด้านล่าง เมื่อรันเสร็จสมบูรณ์แล้ว ทุกโมดูลจะมีเครื่องหมายถูกสีเขียวและคำว่า Finished running ด้านขวาบน

ถึงจุดนี้เราได้ทำการ clean data เรียบร้อยแล้ว, ถ้าอยากดูว่า data ที่ผ่านการ clean มาแล้วเป็นอย่างไรให้คลิกที่ output port ด้านซ้ายของโมดูล Clean Missing Data และเลือก Visualize จะเห็นได้ว่าคอลัมน์ normalized-losses และแถวที่ข้อมูลไม่ครบได้หายไปแล้ว

3. กำหนด Feature

Feature คือคุณสมบัติของข้อมูลใน dataset ของเรา แต่ละแถวคือ รถยนต์ 1 คัน และในแต่ละคอลัมน์คือ feature ของรถแต่ละคัน การที่เราจะหา feature ที่เหมาะสมในการทำ predictive model ต้องอาศัยการทดลองและความรู้ในเรื่องๆ นั้นด้วย บาง feature ก็ให้ข้อมูลแทบไม่ต่างกัน เช่น city-mpg กับ highway-mpg เราสามารถเลือกอันใดอันหนึ่งแล้วลบอีกอันออกได้ และเลือกเฉพาะ feature ที่มีประโยชน์ต่อโมเดล

เริ่มต้นที่หาโมดูลที่ชื่อว่า Select Columns in Dataset และลากมาที่ experiment canvas จากนั้นเชื่อมเข้ากับ output port ของ Clean Missing Data

คลิกที่ Select Columns in Dataset อันล่าสุดและคลิก Launch column selector ในหน้าต่าง Properties ด้านขวามือ

เลือก With Rules, No Columns และใส่ชื่อของคอลัมน์ที่เราจะใช้ลงไป ซึ่งในบทความนี้เราจะใช้ make, body-style, wheel-base, engine-size, horsepower, peak-rpm, highway-mpg, price เป็น feature จากนั้นคลิกเครื่องหมายถูกด้านล่าง

Note: เราสามารถกลับมาเปลี่ยน feature เหล่านี้ได้ในภายหลัง

4. เลือก Algorithm และนำไปใช้

ตอนนี้ข้อมูลของเราพร้อมแล้ว โดยเราจะต้องแบ่ง data ออกเป็น2ส่วนไว้สำหรับ training และ testing

แยกข้อมูลสำหรับการทำ training

หาโมดูลที่ชื่อว่า Split Data และลากมาที่ experiment canvas จากนั้นเชื่อมเข้ากับ output port ของ Select Columns in Dataset อันล่าสุด

คลิกที่โมดูล Split Data จากนั้นในด้านขวามือ, ปรับค่าของ Fraction of rows in the first output dataset เป็น 0.75 ซึ่งหมายความว่าเราจะใช้ data 75% ในการ train โมเดลและใช้25% ที่เหลือในการ test เมื่อเสร็จเรียบร้อยแล้วให้กด run

เลือก Algorithm ที่จะใช้

ใน Menu ด้านซ้ายมือเลือก Machine Learning ตามด้วย Initialize Model

จะเห็นได้ว่ามีหลากหลาย Algorithm ให้เลือกใช้ซึ่งในบทความนี้เราจะเลือก Linear Regression ซึ่งอยู่ในหัวข้อ Regression และลากมาที่ experiment canvas

จากนั้นหาโมดูลที่ชื่อว่า Train Model แล้วลากมาไว้ที่ experiment canvas และเชื่อมพอร์ทต่างๆเข้าด้วยกันดังรูป

เลือกตัวแปรที่ต้องการคาดการณ์

เลือกโมดูล Train Model และคลิก Launch column selector ด้านขวา พิมคำว่า price ลงไป ซึ่งเป็นการเลือกคอลัมน์ที่โมเดลของเราจะคาดการณ์นั่นเอง เสร็จเรียบร้อยแล้วกด Run

5. คาดการณ์ราคา

มาถึงจุดนี้ เราได้ train โมเดลโดยใช้ data ที่มีอยู่ 75% ต่อไปเราจะนำ data อีก 25% ที่เหลือไปใช้ในโมเดล

ค้นหาและลากโมดูลที่ชื่อว่า Score Model และเชื่อมพอร์ทเข้าดังรูป

เมื่อกด Run เราจะสามารถดู output ของโมดูล Score Model ได้โดยคลิกที่ output port และเลือก Visualize 
Output จะโชว์ข้อมูลเดิมที่มีอยู่และราคาที่คาดการณ์โดยใช้โมเดล

วัดความแม่นยำของผลลัพธ์

ค้นหาและเลือกโมดูลที่ชื่อว่า Evaluate Model และลากมาไว้ที่ experiment canvas

เชื่อม output port ของโมดูล Score Model เข้ากับ input port ด้านซ้ายของ Evaluate Model (Input port ของโมดูล Evaluate Model มี 2 ช่องเพราะสามารถใช้เปรียบเทียบกันได้ระหว่าง 2 โมเดล) และกด Run

เราจะสามารถดู output ของโมดูล Evaluate Model ได้โดยคลิกที่ output port ด้านล่างและเลือก visualize

โดยจะโชว์ตัวแปรต่างๆ (Error คือความแตกต่างระหว่างค่าจริงและค่าที่คาดการณ์) ซึ่งยิ่งน้อยยิ่งดี สำหรับ Coefficient of Determination นั้น ยิ่งค่าใกล้ 1.0 เท่าไรแสดงว่ายิ่งแม่นยำ

ทั้งหมดนี้ก็เป็นตัวอย่างง่ายๆ ในการใช้ Microsoft Azure Machine Learning Studio ผ่านการ drag-and-drop โมดูลต่างๆ โดยไม่ต้องเขียนโค้ด ซึ่งเราสามารถพัฒนาโมเดลของเราได้อีกหลายวิธีเช่น การเปลี่ยน feature หรือ การปรับ/เปลี่ยนอัลกอริธึมที่ใช้

สำหรับโอกาสหน้าจะได้มาแชร์วิธีการใช้ Cloud อย่าง Microsoft Azure กับ Machine Learning อย่างไรอีกนั้นต้องคอยติดตามกันต่อไปครับ