Cross-validation Test In  RapidMiner Studio  7

เป็นวิธีนี้ใช้ในการทดสอบประสิทธิภาพของโมเดลเนื่องจากผลที่ได้มีความน่าเชื่อถือ การวัด ประสิทธิภาพด้วยวิธี Cross-validation นี้จะทําการแบ่งข้อมูลออกเป็นหลายส่วน (เรียกว่า k-fold cross validation) ซึ่ง k-fold cross-validation  จะทําการแบ่งข้อมูลออกเป็น k ส่วน โดยที่แต่ละส่วนมีจํานวนข้อมูลเท่ากัน หลังจากนั้นนำข้อมูล k-1 ส่วน Train Model ใน RapidMiner Studio7 และนำข้อมูล 1 ส่วนที่เหลือ มาทำการทดสอบวนทำจนครบ k ประสิทธิภาพของ k-fold cross-validation เป็นค่าเฉลี่ย k รอบ   ยกตัวอย่างเช่น 10-fold cross-validation โดยพฤติกรรมของการทำ 10-fold จะทำการแบ่งข้อมูลออกเป็น 10 ส่วน   โดยที่แต่ละส่วนมีจํานวนข้อมูลเท่ากัน หลังจากจะนำข้อมูลจำนวน 9 ส่วนไปสร้าง Model (Train Model) เมื่อ Train Model เสร็จ ก็จจะใช้ข้อมูล 1 ส่วน เป็นตัวทดสอบประสิทธิภาพของโมเดล ทําวนไปเช่นนี้จนครบจํานวนที่แบ่งไว้ นั่นหมายความว่ามีการ Train และ ทดสอบ 9 ครั้ง ดังนั้นเรามาดู การทำ k-fold cross validation ด้วย RapidMiner Studio7

ตัวอย่างต่อไปนี้เป็นการทำแนะนำการทำ cross-validation โมเดล Travel Time Prediction ซึ่ง Model ที่ใช้ในการ Train คือ Linear Regression และทำการทดสอบด้วยวิธี k-fold cross validation ซึ่งหลักๆยากที่สุดในการสร้างและทดสอบประสิทธิภาพโมเดลต่างๆคือต้องรู้และเข้าใจคุณสมบัติของ ข้อมูลที่เป็นทั้ง input และ output ของ โมเดล ที่สำคัญอีกอย่างสำหรับการใช้ RapidMiner Studio7 คือ การเลือกใช้ โอเปอเรเตอร์และ การตั้งค่า Parameters ให้กับ Operator ที่เลือกใช้   แสดงดังโมเดลและการทดสอบประสิทธิภาพของโมเดลดังรูปด้านล่าง

model

จากภาพด้านบนประกอบไปด้วย 2 ส่วนหลักๆ คือ

  1. ส่วน Prepare  Data
  2. ส่วน training และ cross-validation (สร้างโมเดลและทดสอบประสิทธิภาพ)

ส่วนประกอบการ Prepare  Data

โอเปอเรเตอร์ ตั้งค่า Parameters คำอธิบาย
readCSV setCsv ใช้สำหรับอ่านข้อมูลจากคอมเครื่องที่ Run RapidMiner Studio7 มาใช้ในโพรเซส
filter setFilter ใช้สำหรับเลือกช่วงข้อมูลที่จะใช้เทรน สำหรับตัวอย่างนี้เลือกข้อมูล Traveltimr ที่น้อยกว่า 10,000 มา และเลือก เฉพาะ link_id = 2265-2848 เท่านั้น
selectAttribute setAttibute ใช้สำหรับเลือกข้อมูลที่จะใช้เทรน        (เลือก colum) สำหรับในตัวอย่างนี้ ข้อมูลมีทั้งหมด 6 colum เลือก Link_id กับ timeslot มาเทรนเท่านั้น
GenerateAttibute  setGenerateAttribute ใช้สำหรับสร้าง  Attibute ขึ้นมาใหม่ โดยใช้สมการคณิตศาตร์ หรือเงื่อนไข if สำหรับในตัวอย่างนี้ใช้แบ่งช่วงเวลาใน 1  วัน เป็นช่วงๆคือ จาก 00.00-24.00น เช่น จากเวลา 6.00น-9.00น, 9.00น-12.00น เป็นต้น ในตัวอย่างนี้สร้าง attibute ชื่อ time_int
nominalTOnumerical setNominal  ใช้สำหรับแปลงข้อมูลที่ไม่ใช่ตัวเลขที่มีจำนวนจำกัด(Nominal) เช่นวันจันทร์-วันอาทิตย์ ให้เป็นข้อมูลตัวเลข (Numberic) ซึ่งในที่นี้เราใช้กับข้อมูล Day of week ใช้แปลงข้อมูลด้วยวิธี dummy coding
setrole set_setrole ใช้สำหรับระบุหน้าที่(Role)ให้กับ แอตทริบิวต์ ในตัวอย่างนี้กำหนดให้ Travel Time มีหน้าที่เป็นแอตทริบิวต์ประเภท Label (Label ในที่นี้หมายถึงข้อมูลที่ระบุแอตทริบิวต์นี้ เป็น output)

เมื่อดับเบิ้ลคลิกที่ validation ก็จะเข้าสู่หน้า Process Validation ดังรูปด้านล่าง

 

ส่วนประกอบการทดสอบประสิทธิภาพ Model

x-cross

ส่วนประกอบการ training และ การทำ cross-validation

เมื่อสร้างส่วนของการเตรียมข้อมูลเสร็จแล้วหลังจากนั้นก็จะเป็นการสร้างโมเดลและทดสอบประสิทธิภาพซึ่งต้องใช้โอเปอเรเตอร์และเซตค่าพารามิเตอร์ของโอเปอเรเตอร์ดังนี้

โอเปอเรเตอร์ ตั้งค่า Parameters คำอธิบาย
validation setCrossvalidate เป็น operator สำหรับทำ Cross validation  ที่นี่้ ใช้ 10-fold
LinearRegression.PNG  set_linearRegression  เป็น operator สำหรับคำนวณเพื่อสร้างโมเดล linear regression จาก อินพุทที่เรียก ExampleSet ที่ทำการPrepare  Data ก่อนหน้านี้ ในที่นี้ใช้ค่า Default  ไม่ต้องเซตค่าอะไร
applyModel ในที่นี้ใช้ค่า Default  ไม่ต้องเซตค่าอะไร  เอา Model มาเทรนเรียบร้อยแล้วมา ทดสอบและแสดงค่าเปรียบเทียบระหว่าง ค่าเฉลย และ ค่าที่ทำนายได้ (predict) ได้
Performance_Regression  setPerf  โอเปอเรเตอร์ สำหรับทดสอบประสิทธิภาพของ Model ในที่นี้เลือกโอเปอเรเตอร์ชื่อ Performance (Regression) ซึ่งเป็นโอเปอเรเตอร์ที่ใช้สำหรับทดสอบ โมเดล Linear Regression  ในที่นี้ใช้ค่า Default  ไม่ต้องเซตค่าอะไร
WriteAsText  setwriteText1  โอเปอร์เรเตอร์สำหรับเขียนผลการ วัดประสิทธิภาพของ โมเดล แต่ละ Fold ลงไฟล์ และจะต้องกำหนดชื่อืั้จะเขียนลงไฟล์ด้วยว่าชื่ออะไรเก็บไว้ตรงใหน ซึ่งในนี้ที่ เก็บลงไฟล์ชื่อ result10fold.res