การหา optimize parameter สำหรับ libsvm ด้วย RapidMiner Studio 6

ในปัจจุบันนี้เทคนิคการทำ classification ที่นิยมและให้ผลที่ดีก็คือ Support Vector Machine หรือ SVM แต่ไอเดียการทำงานของ SVM ค่อนข้างจะยุ่งยากในการจะนำมา implement เอง จึงได้มีอาจารย์จากมหาวิทยาลัยที่ประเทศไต้หวันได้พัฒนาโปรแกรมที่ชื่อว่า libsvm ขึ้นมาด้วยภาษา C/C++ และแจกจ่ายให้ผู้สนใจไปใช้งานได้ฟรี จนเป็นที่นิยมอย่างแพร่หลายในการทำงานวิจัย แต่การใช้ libsvm จำเป็นต้องทำการกำหนดค่า parameter ของ SVM ให้เหมาะสมถึงจะทำงานได้อย่างมีประสิทธิภาพ เพื่อให้การหา parameter นี้ได้ง่ายขึ้นในชุดของ libsvm จึงมีโปรแกรมที่ชื่อว่า grid.py ที่เป็นภาษา Python เตรียมไว้ให้ โปรแกรมนี้จะทำการเลือก parameter ที่เหมาะสมให้แต่ต้องรันบนระบบปฏิบัติการ Linux หรือต้องติดตั้งซอฟต์แวร์ cygwin สำหรับ Windows เสียก่อน ซึ่งก็ยุ่งยากพอควร

ในบทความนี้ผมจะแนะนำการหา parameter ที่เหมาะสมของ SVM โดยใช้ RapidMiner Studio 6 (ดังในรูปที่ 1)

optimize libsvm process

รูปที่ 1 process แสดงการหาพารามิเตอร์ที่เหมาะสมสำหรับ libsvm

ซึ่งข้อดีอย่างหนึ่งของ RapidMiner Studio 6 คือเราสามารถดาวน์โหลด process ที่เตรียมไว้ให้แล้วไปเปลี่ยนเฉพาะข้อมูลที่เราจะนำมาใช้ก็พอ ซึ่งผมจะแสดงตัวอย่างการใช้งาน process ดังกล่าวให้ดูในบทความนี้ครับ (ดาวน์โหลด process และข้อมูลไฟล์ Excel ได้จากที่นี่ครับ) สำหรับการใช้งาน RapidMiner Studio 6 เบื้องต้นติดตามได้ที่นี่
1. เปิดซอฟต์แวร์ RapidMiner Studio 6 และเลือกเมนู File > Import Process… จะปรากฏหน้าต่างให้เราเลือกไฟล์ process ซึ่งมีนามสกุลเป็น .rmp ให้เลือกไฟล์ optimizeSVM.rmp และกดปุ่ม Open ดังแสดงในรูปที่ 2

Screen Shot 2557-02-23 at 3.20.52 AMรูปที่ 2 แสดงหน้าต่างให้เลือกไฟล์ process ที่จะใช้งาน

2. Process ของการหาค่า parameter ที่เหมาะสมสำหรับ SVM จะแสดงขึ้นมาดังในรูปที่ 1 ซึ่งมี 2 operator คือ

  • Read Excel สำหรับอ่านไฟล์ Excel มาใช้งาน
  • Optimize Parameters (Grid) สำหรับการหาค่า parameter ที่เหมาะสมสำหรับ libsvm

3. คลิกที่ Read Excel ทางด้านขวาจะแสดง parameter ที่เกี่ยวข้องกับ operator นี้ คลิกที่ปุ่ม Import Configuration Wizard… เพื่อทำการโหลดไฟล์ Excel ที่จะใช้งานใน process นี้ ดังในรูปที่ 3

rapidminer3

 รูปที่ 3 คลิกที่ปุ่ม Import Configuration Wizard… เพื่อโหลดไฟล์ Excel ไปใช้งาน

4. เลือกไฟล์ sonar.xlsx จากโฟลเดอร์ที่ดาวน์โหลดไปแล้ว หลังจากนั้นกดปุ่ม Next ดังรูปที่ 4

rapidminer4

รูปที่ 4 เลือกไฟล์ sonar.xlsx ที่ดาวน์โหลดไปแล้ว

5. หลังจากนั้นหน้าจอจะแสดงข้อมูลในแต่ละ tab ของ Excel ซึ่งในไฟล์นี้มีเพียงแค่ tab เดียว ดังในรูปที่ 5 และกดปุ่ม Next เพื่อไปขั้นถัดไป

rapidminer5

รูปที่ 5 แสดงข้อมูลในไฟล์ Excel แต่ละ tab

6. หลังจากนั้นจะมีหน้าต่างปรากฏขึ้นมาเพื่อให้เลือกว่าจะใช้ แถวแรกเป็น ชื่อของ attribute หรือไม่ซึ่งปกติก็เลือกอยู่แล้วเราสามารถกดปุ่ม Next ไปขั้นถัดไปได้เลย

rapidminer6

รูปที่ 6 กดปุ่ม Next เพื่อไปยังขั้นตอนถัดไปเนื่องจากแถวแรกได้ถูกเลือกให้เป็นชื่อของ attrbute อยู่แล้ว

7. เลือก attribute ที่จะใช้เป็นคลาส หรือ label โดยการคลิกที่แถวที่ 3 ของ attribute นั้นๆ ในตัวอย่างนี้ให้ attribute สุดท้ายเป็นประเภท label ดังในรูปที่ 7 และกดปุ่ม Finish จะกลับมาที่หน้าจอ Design Perspective อีกครั้ง (เหมือนกับในรูปที่ 1)

rapidminer7

รูปที่ 7 เปลี่ยน attribute สุดท้ายให้เป็นประเภท label

8. ในหน้าจอ Design Perspective คลิกที่ Optimize Parameters (Grid) และ parameter ด้านขวาจะเปลี่ยนไป ถ้าเราต้องการหาค่า parameter ที่ดีที่สุดของ SVM ให้คลิกที่ปุ่ม Edit Parameter Settings… หลังจากนั้นหน้าต่างดังในรูปที่ 8 จะแสดงขึ้นมา โดยในตัวอย่างนี้ได้ทำการเลือกเปลี่ยนค่า C, gamma และ kernel type ของ SVM

rapidminer9

รูปที่ 8 แสดงหน้าต่างปรับเปลี่ยน parameter ของ libsvm

9. หลังจากทำการกำหนดเลือกไฟล์​ Excel และกำหนดค่า parameter ต่างๆ แล้ว operator ที่อยู่ใน process ในจะแสดงวงกลมเป็นสีเหลืองด้านซ้ายล่าง หลังจากนั้นกดปุ่ม Run (ปุ่มสามเหลี่ยมสีฟ้า) เพื่อเริ่มทำงานดังในรูปที่ 9 (ตัวอย่างนี้ใช้เวลาในการหา parameter ที่เหมาะสมพอสมควร ในเครื่องผมซึ่งเป็น 1.7 GHz Intel Core i5 ใช้เวลาในการทำงานประมาณ 34 วินาที เวลาการทำงานของ process จะแสดงที่แถวด้านล่างของ RapidMiner Studio 6)

rapidminer8

รูปที่ 9 คลิกที่ปุ่ม Run เพื่อเริ่มการทำงาน

10. หลังจากทำการเลือก parameter ที่เหมาะสมได้แล้ว process นี้จะใช้ค่าที่หาได้มาทำการทดสอบโมเดลด้วยวิธี 10 fold cross-validation และแสดงค่าตัววัดประสิทธิภาพแบบต่างๆ ออกมาเช่น accuracy, precision, recall ดังแสดงในรูปที่ 10 และ 11

rapidminer10

รูปที่ 10 แสดงค่า parameter C, gamma และ kernel_type ที่เหมาะสมสำหรับ SVM โดยแสดงในส่วนด้านล่างของหน้าจอ

rapidminer11_2

รูปที่ 11 แสดงตัววัดประสิทธิภาพแบบต่างๆ ที่คำนวณได้ โดยในรูปจะเป็นค่า accuracy ซึ่งได้เป็น 87.52%

หมายเหตุ

  • ในกรณีที่ไม่ได้ทำการเลือก parameter ที่เหมาะสม โมเดล SVM นี้จะให้ค่า accuracy เท่ากับ 53.38%
  • บทความนี้ไม่ได้อธิบายรายละเอียดของแต่ละ operator แต่ตั้งใจให้สามารถนำไปใช้งานได้ทันที สำหรับผู้สนใจการใช้งาน RapidMiner Studio 6 เชิญเข้าร่วมอบรมกับทางเราโดยติดตามรายละเอียดได้ที่นี่
  • บทความนี้ดัดแปลง process จาก www.myexperiment.org

 

Posted in data mining, machine learning, RapidMiner and tagged , , , , , , .

Leave a Reply

Your email address will not be published. Required fields are marked *