สไลด์บางส่วนจากการอบรม Practical Data Mining with RapidMiner Studio 7

ตัวอย่างสไลด์การอบรม Practical Data Mining with RapidMiner Studio 7 รุ่นที่ 17 ครับ ท่านใดสนใจดูรายละเอียดการอบรมรุ่นถัดไปได้ที่ http://dataminingtrend.com/2014/training/rapidminer-training-18/

เทคนิค Support Vector Machine (SVM) และซอฟต์แวร์ HR-SVM

หลังจากบทความที่แล้วผมได้พูดถึงการแปลความหมายของโมเดล Neural Network ใน Weka กันไปแล้ว วันนี้จะแนะนำให้รู้จักเทคนิค Support Vector Machine หรือเรียกสั้นๆ ว่า SVM ซึ่งเป็นโมเดลที่ใช้การคำนวณทางคณิตศาสตร์ซึ่งจัดอยู่ในกลุ่มเดียวกับ Neural Network แต่ SVM มีข้อดีกว่าตรงที่ไม่ค่อยเกิดปัญหา overfitting มากเหมือนกับ Neural Network

Note Overfitting คือการที่โมเดลจดจำรูปแบบของข้อมูล training มากเกินไปจนไม่สามารถทำนายข้อมูล unseen data ได้เพื่อให้เข้าใจง่ายขึ้นลองคิดตามสถานการณ์นี้ครับ สมมุติว่านิสิตคนหนึ่งเตรียมตัวที่จะสอบวิชาภาษาอังกฤษซึ่งโดยปกติแล้วการสอบในแต่ละปีจะมีคำถามที่คล้ายๆ เดิมดังนั้นนิสิตคนนี้จึงได้นำข้อสอบในปีก่อนหน้ามาอ่านเพื่อจดจำคำถามและคำตอบและเนื่องจากนิสิตคนนี้ความจำดีเลิศสามารถจดจำคำถามและจำตอบได้หมดทุกข้อ แต่เมื่อถึงเวลาไปสอบจริงๆ แล้วอาจารย์เปลี่ยนคำถามในข้อสอบใหม่หมดจนไม่มีข้อใดเหมือนเดิมเลย ทำให้นิสิตคนนี้ทำข้อสอบได้คะแนนที่ตำ่มากเพราะพยามแต่จะจำคำถามและคำตอบของข้อสอบปีก่อนๆ ลักษณะแบบนี้เป็นตัวอย่างของ overfitting ครับ ^^

แต่ว่าการทำงานทางทฤษฎีของ SVM ค่อนข้างเข้าใจยากพอสมควร ดังนั้นวันนี้ผมขออธิบาย concept คร่าวๆ ของ SVM ให้ดูครับ สมมุติว่าข้อมูล training ของเราแสดงความสัมพันธ์ระหว่างอายุและรายได้ และมีคลาสเป็น 2 คลาสคือ คลาส A และ คลาส B เมื่อเราเอาข้อมูลมาทำการ plot ลงไปในกราฟ 2 มิติ ดังแสดงในรูปที่ 1 ซึ่งแกน x แสดงค่ารายได้ และแกน y แสดงค่าอายุ และสีแสดงค่าคลาส

scatter_plot
รูปที่ 1 แสดงการกระจายข้อมูล

จากการกระจายตัวของข้อมูลในรูปที่ 1 จะเห็นว่าสามารถแบ่งแยกออกเป็น 2 กลุ่มได้อย่างชัดเจน ซึ่งโดยปกติแล้วเราจะใช้ linear model (หรือสมการเส้นตรง) เพื่อทำการแบ่งข้อมูลออกเป็น 2 คลาส ทว่า linear model นี้สามารถเป็นไปได้หลากหลายเส้นดังในรูปที่ 2

linear model รูปที่ 2 แสดง linear model ต่างๆ ที่สามารถแบ่งข้อมูลออกเป็น 2 กลุ่มได้

คำถามก็คือแล้วเราจะเลือกโมเดลไหนดี ? คำตอบคือเราควรจะเลือกโมเดลที่ไม่ overfitting หรือโมเดลที่ไม่จำรูปแบบของข้อมูล training มากเกินไป จากตัวอย่างจะเห็นว่าโมเดลที่ 1 และโมเดลที่ 3 จะมีจุดหนึ่งที่ linear model อยู่ใกล้กับข้อมูลแต่ละคลาสมากเกินไป นั่นคือ ถ้ามีข้อมูลใหม่ที่อยู่ห่างออกไปสักเล็กน้อยก็จะทำนายผิดไปพลาดไป ดังนั้นในตัวอย่างนี้จึงควรจะเลือกโมเดลที่ 2  (เส้นสีแดง) และนั่นคือหลักการของ SVM ที่เลือก linear model ที่มีระยะห่างระหว่าง 2 คลาสห่างกันมากที่สุด ดังแสดงในรูปที่ 3

Screen Shot 2557-03-13 at 10.43.44 AM                 รูปที่ 3 แสดงโมเดล SVM ที่แบ่งข้อมูลออกเป็น 2 กลุ่มได้

ข้อดีอีกอย่างของวิธีการ SVM คือการมี kernel function ที่สามารถเปลี่ยนข้อมูลที่มีมิติ (dimension) ที่ต่ำกว่าให้มีมีติสูงขึ้นเพื่อให้การแบ่งข้อมูลแบบ linear model ได้ ดังแสดงตัวอย่างในรูปที่ 4

kernel svm
รูปที่ 4 แสดงการแปลงข้อมูลด้วย Kernel function

จากข้อมูลในรูปที่ 4 (a) จะเห็นว่ามีข้อมูลอยู่ 2 คลาส คือ คลาส A และ B ซึ่งมีเพียง 1 มิติ เราสามารถสร้างโมเดลที่เป็นรูปแบบของกฏเพื่อแบ่งแยกข้อมูลออกเป็น 2 คลาสได้ เช่น

  • ถ้าค่า X < 0.5 หรือ X > 2.5 แล้วจะทำนายว่าเป็นคลาส B
  • ถ้าค่า X อยู่ในช่วง [0.5-2.5] แล้วจะทำนายว่าเป็นคลาส A

ที่เป็นเช่นนี้เนื่องจากข้อมูลใน training ของเราแสดงแค่นั้น แต่เหมือนเดิมครับโมเดลที่สร้างนี้อาจจะ overfit ได้ถ้าจริงๆ แล้วข้อมูลที่มีค่า X = -1 ก็เป็นคลาส A แต่โมเดลเราจะทำนายผิดทันที

ดังนั้นถ้าเราใช้ kernel function เพื่อเพิ่มแอตทริบิวต์ขึ้นมาเป็น X2 = X2 ซึ่งแสดงการกระจายตัวของข้อมูลในรูปที่ 4 (b) และมีโมเดล SVM ทำการแบ่งข้อมูลออกเป็น 2 คลาสโดยการใช้เส้นตรงเพียงเส้นเดียว

ทั้งหมดนี้คือ concept ของ SVM ซึ่งอย่างที่ผมบอกตั้งแต่ตอนแรกว่าทฤษฏีในการสร้างโมเดลนั้นยุ่งยากมากทีเดียว จึงได้มีผู้พัฒนาซอฟต์แวร์ที่ช่วยให้สามารถสร้างโมเดล SVM ได้อย่างง่ายๆ ขึ้นมา เช่น SVMlight หรือ libsvm ซึ่งทำงานได้ดี แต่ในวันนี้ผมขอแนะนำซอฟต์แวร์อีกตัวหนึ่งชื่อว่า HR-SVM ซึ่งพัฒนาโดยทีมงานคนไทยนำทีมโดย ดร. พีรพล เวทีกูล อาจารย์จากคณะวิศวกรรมศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย ซอฟต์แวร์ตัวนี้สามารถทำงานได้ทั้งในระบบปฏิบัติการ Windows, Linux และ Mac OS X โดยซอฟต์แวร์นี้สามารถสร้างโมเดล SVM

  • สำหรับ classify ข้อมูล 2 คลาสหรือมากกว่า (multiclass)
  • สำหรับ classify ข้อมูลประเภท multi-label หรือการที่ข้อมูล 1 ตัวมีได้มากกว่า 1 คลาสคำตอบ เช่น ข่าวหนึ่งอาจจะเป็นข่าวกีฬาและบันเทิงไปพร้อมกัน
  • สำหรับ classify ข้อมูลประเภท hierarchical multi-label คือ ข้อมูลที่มีหลายลาเบล และมีการเรียงตัวเป็นชั้น

ข้อแตกต่างระหว่างซอฟต์แวร์ HR-SVM และซอฟต์แวร์อื่นๆ แสดงดังในตารางที่ 1

ตารางที่ 1 เปรียบเทียบ feature ของซอฟต์แวร์ที่ใช้สร้างโมเดล SVM

FunctionalitySVMlightSVMTorchLIBSVMHR-SVM
Binary ClassificationXXXX
Multiclass Classification-XXX
Feature Selection--XX
Multi-Label Classification--XX
Imbalanced Data Handling---X
Hierarchical Multi-Label Classification---X
Propagated Error Handling---X

สำหรับท่านที่สนใจการใช้งานติดตาม VDO การใช้งานได้ที่ เว็บไซต์ https://sites.google.com/site/hrsvmproject/

สำหรับท่านที่สนใจการใช้งาน SVM ใน RapidMiner Studio 6 สามารถดูได้จากบทความ “การหา optimize parameter สำหรับ libsvm ด้วย RapidMiner Studio 6” ครับ

เอกสารอ้างอิง

การหา 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 เบื้องต้นติดตามได้ที่นี่
Continue reading