RapidMiner Studio
เริ่มต้นในการใช้งาน RapidMiner
ในบทความนี้ ผู้เขียนขอยกตัวอย่างข้อมูลของ customer churn data เพื่อมาวิเคราะห์ข้อมูลของลูกค้าที่เป็นสมาชิก (Subscribers) ว่ามีแนวโน้มอย่างไร
Churn คือ อะไร และ customer churn คือ สิ่งที่นักการตลาดยุคใหม่ ต้องเข้าใจด้วยหรือ ?!
churn คือ การที่ลูกค้าขาประจำ ลูกค้าเก่าของคุณ สมาชิก (Subscribers) หรือ ผู้ใช้งาน (Users) ที่ซื้อสินค้าหรือใช้บริการของคุณอยู่แล้ว หรือ มีการซื้อหรือใช้บริการของคุณอยู่เป็นประจำ เกิดเปลี่ยนใจหยุดใช้หยุดซื้อ หรือ ยกเลิกบริการกับคุณ ตัดสินใจจบความสัมพันธ์กับคุณลง นี่คือความหมายของ churn
customer churn คือ สิ่งที่นักการตลาดต้องให้ความสำคัญอย่างมากในยุคดิจิตอลที่อะไรก็ง่ายไปหมดทั้ง การซื้อ การใช้บริการ หรือ การสมัครเป็นสมาชิกอะไรซักอย่าง ทำได้ง่ายแค่ปลายนิ้วผ่านมือถือ แต่ในทางกลับกัน คือ ลูกค้าก็สามารถยกเลิก หรือเปลี่ยนใจไม่ใช้ หนีจากคุณไปได้ง่ายๆ เช่นกัน (Credit: brandingchamp)
การเตรียมข้อมูล
ผู้เขียนได้จัดเตรียมข้อมูลไว้ไห้เพื่อใช้ทดสอบแล้ว สามารถ Download ได้จาก ที่นี่
รายละเอียดข้อมูล
Gender = เพศ
Age = อายุ
Payment Method = ประเภทของการชำระเงิน
LastTransaction = จำนวนวันครั้งสุดท้ายที่เข้ามาใช้บริการจนถึงปัจจุบัน
Churn = การตัดสินใจของสมาชิกว่าจะเปลี่ยนใจ (churn) หรือไม่ (loyal)
หน้าตา Program RapidMiner Studio
ผู้เขียนขออธิบายส่วนต่างๆ ใน Program แบบคราวๆ ก่อน เพื่อให้เข้าว่าแต่ละส่วนใช้ทำอะไรบ้างนะครับ ส่วนใครยังไม่ได้ลง Program สามารถเข้าไปอ่านวิธีการ Install Program RapidMinor ได้จาก RapidMiner Studio - How to installation.
ในหน้าต่างของ RapidMiner มีรายละเอียด ดังนี้
1. Repository : ส่วนนี้จะใช้ในการจัดการไฟล์ต่างๆ ของ RapidMiner Studio โดยจะเก็บไฟล์ข้อมูล หรือ Process ต่างๆ ไว้ใน Folder เพื่อความสะดวกในการเรียกใช้งานครั้งถัดไป
2. Operators : ส่วนนี้จะเก็บ Operators ในการใช้งานต่างๆ ไว้เป็นกลุ่มตามหน้าที่ที่คล้ายคลึงกัน สามารถค้นหา Operators ที่ต้องการได้ในช่อง Search เพื่อความสะดวกในการเรียกใช้งาน
3. Process : ส่วนนี้เป็นส่วนที่สำคัญของ RapidMiner Studio เพราะเป็นการนำเอา Operators ต่างๆ มา ประกอบกันให้เป็น Process ขึ้นมาใช้งาน
4. Parameters : ส่วนนี้จะเป็นส่วนที่แสดงพารามิเตอร์ (parameter) ที่เกี่ยวข้องกับแต่ละ Operator เพื่อให้ผู้ใช้งานปรับแต่งตามที่ต้องการ
เริ่มเลยดีกว่าครับ (Step-by-Step)
ให้ Download customer_churn_data ไว้ที่เครื่อง จากนั้นเปิด RapidMiner ขึ้นมา
เพื่อจัดให้เป็นหมวดหมู่ ผู้เขียนดำเนินการสร้าง New local repository ใหม่ที่ชื่อว่า Basic_RapidMiner ตามรูปด้านล่างครับ
เมื่อสร้าง Basic_RapidMiner เสร็จแล้ว ผู้เขียนสร้าง Folder ในการเก็บ Data และ Process ให้เป็นชื่อตาม Project ที่ต้องการ ตัวอย่างผู้เขียนตั้งชื่อ Folder ว่า “customer_churn_data” ตามรูปด้านล่าง
หลังจากนั้น ผู้เขียนดำเนินการ Create New Process ขึ้นมาใหม่ และ Save Process ใหม่เป็น “customer_churn_data_process” ไว้ใน “customer_churn_data” ที่สร้างขึ้นมา เพื่อให้สอดคล้องกับ Project ตามรูปด้านล่างครับ
Import Data
หลังจากเตรียม Process เรียบร้อยแล้ว คราวนี้ผู้เขียนจะดำเนินการ นำ้อมูลที่ “customer_churn_data” มีอยู่เข้าสู่โปรแกรม เพื่อวิเคราะห์ข้อมูล โดยทำการ คลิ๊กที่ปุ่ม Import เพื่อเลือกข้อมูลในการ Import ตามรูปครับ
ในการ Import Data สามารถ Import ได้จาก File ภายใน Computer หรือ จาก Database ก็ได้ โดยในตัวอย่างนี้เป็นการ Import data จาก File ที่มี จึงเลือกไปที่ “My Computer” ตามรูป
ให้เลือก File ใน Path ที่ Download File เก็บไว้ (ผู้เขียนเก็บไว้ใน D:\RapidMiner)
ภายใน File ขอมูลแถวแรกจะเป็นชื่อ Field ดังนั้นต้องติ๊ก Header Row ด้วย
จากข้อมูลที่เข้ามา ระบบจะมอง Type ของแต่ละ Field ให้อัตโนมัติตามรูป
Gender : polynominal
Age : real
Payment Method : polynominal
LastTransaction : real
Churn : polynominal
ข้อมูลในส่วนของ “Age” และ “LastTransaction” เป็นตัวเลขจำนวนเต็ม ผู้เขียนจึงเปลี่ยน Type จาก real เป็น Integer
และเนื่องจาก Field Churn เป็นตัวแปลเป้าหมายในการทำนาย จึงต้องปรับ Role เป็น label โดยที่ Type ยังเป็น polynominal อยู่เหมือนเดิมครับ
เมื่อดำเนินการเปลี่ยน Type และ Role เรียบร้อยแล้ว Type ทั้งหมดจะเป็นไปตามรูปด้านล่างนี้ครับ
ทำการบันทึก data ไว้ใน Folder เดียวกับ Process ที่บันทึกไว้ก่อนหน้านี้ โดยตังชื่อ data เป็น “customer_churn_data”
เมื่อทำการบันทึกเรียบร้อยแล้ว โปรแกรมจะแสดง Results ตามรูป ซึ่งการสรุปข้อมูลเบื้องต้นไว้ให้ด้วย ดังนี้ครับ
example = 996 (ข้อมูลตัวอย่าง)
special attribute = 1 (แอตทริบิวต์ พิเศษ -ในที่นี้คือ แอตทริบิวต์ลาเบล)
regular attributes = 4 (แอตทริบิวต์ ทั่วไป)
ในหน้า Statistics สรุปข้อมูลในแต่ละ Attribute ครับ
จากหน้า Statistics เราจะเห็นว่าในตัวอย่างข้อมูล มี Attribute บางตัวที่มี Missing Value ตามรูป ดังนั้นควรที่จะตัด Missing Value ออกก่อน
การตัด Missing Value ออก
เริ่มต้นด้วยการ Drag and drop data to process (ทำการคลิ๊ก customer_churn_data ไว้แล้วลากมาปล่อยตรงส่วนที่เป็น Process)
หลังจากนั้นในใช้ Operator ที่ชื่อว่า Filter Example โดยสามารถ ค้นหาชื่อ Operator ได้ที่ช่อง Search ตามรูป
เมื่อลากมาแล้ว จัดเส้น Output ให้ได้ตามรูป แล้วไปกำหนด Parameter โดยทำการ Add filed ที่ต้องการ Filter โดยคลิ๊กที่ปุ่ม Add Filters ตามรูป
จากรูปก่อนหน้านี้ จะเห็นว่าข้อมูลจะมี Missing Value อยู่ 2 Attribute คือ
Churn จำนวน 96 record
Age จำนวน 4 record
ในตัวอย่างนี้ ผู้เขียนขอยกตัวอย่างตัด Missing Value ออกในส่วนของ attribute : churn เท่านั้นก่อนนะครับ โดยทำการเพิ่ม attribute : churn และกำหนด filter เป็น “is missing value” ครับ ตามรูปครับ
เมื่อเพิ่ม Filter เสร็จแล้วให้ทำการ Run เพื่อตจรวจสอบข้อมูลครับ
หลังจาก Run แล้วมาตรวจสอบข้อมูลใน Statistics จะพบว่า Missing Value ของ churn ได้หายออกไปแล้ว จาเดิมมี่อยู่อยู่จำนวน 96 record และจำนวนข้อมูลทั้งหมดลดลงไป 96 record จาก 996 เหลือ 900 record ตามรูปครับ
การทำ Replace Missing Value
ในหัวข้อที่แล้ว ผู้เขียนได้ยกตัวอย่างการตัด Missing Values ออกด้วยการใช้ Operator : Filter Example คราวนี้เราลองมาดูกว่า หากบาง Attribute เราต้องการใส่ค่าบางค่าเข้าไปแทน Missing Values จะทำอย่างไร
การที่เราจะแทนข้อมูลบางอย่างเข้าไปแทน Missing Values เราต้องรู้ก่อนว่า ข้อมูลใน Attribute นั้นๆ เป็นข้อมูลประเภทอะไร และเราจะแทนด้วยขู้มูลอะไร ในตัวอย่างนี้ ผู้เขียนขอยกตัวอย่างข้อมูลอายุของ customer_churn_data ที่ยังมี Missing Values อยู่นะครับ จากข้อมูลอายุ เป็นตัวเลข Integer ดังนั้นผู้เขียนขอแทนค่า Missing Values เป็น ค่าเฉลี่ย (Average) ของอายุแทนนะครับ
ให้ทำการใช้ Operator ที่ชื่อว่า Replace Missing Value
เนื่องจากทางผู้เขียนเลือกเจาะจงเฉพาะ attribute Age จึงกำหนด Parameter ตามด้านล่างนี้ จากนั้นทำการ Run
attribute filter type : single
attribute : Age
default : average
หลังจาก Run แล้วตรวจสอบข้อมูลในส่วนของ Statistics จะพบว่า attribute : Age นั้นไม่มี Missing Values เหลืออยู่แล้ว และข้อมูลตัวอย่างก็ยังมี 900 record อยู่เหมือนเดิม เพราะไม่ได้ตัดออก ตามรูป
หลังจากมีการ Clean data เรียบร้อยแล้ว ผู้เขียนจะกล่าวถึงวิธีการทำนายกันบ้าง โดยในลำดับถัดไป ผู้เขียนจะให้หลักการทำนายแบบ Predictive Task นะครับ
Predictive Tasks
ขออธิบายคร่าวๆ นะครับ Predictive Tasks มีการแบ่งขั้นตอนการทำงานได้ 2 ขั้นตอนคือ
1. Training Process
2. Testing Process
Training Process
ในส่วนของ Training Process จะต้องมีการกำหนด “กลุ่มเป้าหมาย” (Target) และ “กลุ่มตัวแปร” (input) ที่ใช้
Testing Process
ในส่วนนี้จะนำผลลัพธ์ที่ได้จากการ Training มาเปรียบเทียบกับข้อมูลตัวอย่าง เพื่อวัดประสิทธิภาพโมเดลในการทำนายที่ได้จากการ Training
โดยส่วนใหญ่แล้วจะมีการแบ่งข้อมูลในการ Training : Testing data อยู่ที่ ประมาณ 70:30 นะครับ คือมีการ Training data อยู่ที่ 70% และ Testing อยู่ที่ 30%
มาต่อกันดีกว่า…
ตัวแรกที่ผู้เขียนจะทำให้ดู คือ Decision tree
Decision tree คือ ???
Decision tree คือ Model Classification ตัวหนึ่ง ที่มีการแบ่งเป็น Node ต่างๆ เป็นชั้นๆ โดยมีการอธิบายให้เห็นเป็นภาพในรูปแบบเหมือนกับต้นไม้ “TREE” ที่มีการแตกกิ่งออกไป ตามรูปภาพ
โดย Node ที่อยู่บนสุด เราเรียกว่า Root Node ส่วน Node ที่อยู่ล่างสุด โดยไม่มี Node อื่นมาต่อ เราเรียกว่า Leaf Node ตามรูปครับ
หลังจากเกริ่น Decision Tree มาแล้ว คราวนี้เราลองมาให้ Decision Tree กับ RapidMiner ในตัวอย่างของเรากันดีกว่าครับ
RapidMiner ต่อดีกว่า…
ต่อจากของเดิม ในการณีที่ต้องการทำ Decision Tree ดังนั้น ต้อง Split data ก่อน เพื่อนำไปใช้ Training และ Testing data โดยการใช้ Operator : Split Validation ให้ลาก Split Validation เข้ามาที่ Process
ทำการจัดเส้นให้ได้ตามภาพ และตรง Parameters ให้กำหมด Ratio เป็น 0.7 (คือ Training 70% และที่เหลือ 30% เป็น Testing data) และ click show advanced parameter เพื่อติ๊ก use local random seed และกำหนดเป็น 1992
เพิ่ม Operation : Decision Tree เข้าไปที่ฝั่ง Training
Set parameter ของ Decision Tree ตามรูป
ทำการเพิ่ม Operation : Apply Model ที่ฝั่ง Testing
ทำกสนเพิ่ม Performance เข้าไม่ฝั่ง Testing ต่อจาก Apply model แล้วลากเส้นตามรูป จากนั้น คลิ๊ก RUN
หลังจาก Run จะได้ Results ของ Decision Tree ตามรูป
ตรวจสอบค่า accuracy ที่ได้จากการทำ Decision Tree โดยไปที่ Design ทำการคลิ๊กขวาที่ Performance แล้วเลือกเมนู Show PerformanceVector Result
ค่า accuracy ที่ได้จากตัวอย่างนี้คือ 84.81%
เราสามารถดูการทำนายได้ว่าข้อมูลที่ทำนายไว้ในแต่ละรายการ เป็นอย่างไร โดยไปที่ Design แล้วคลิ๊กขวาที่ Apply model แล้วไปที่เมนู Show ExampleSet Result (หากเมนู Show ExampleSet Result ไม่ขึ้น ให้ทำการ Run ใหม่อีกครั้ง)
เมื่อ Show ExampleSet Result จะมีรายการแสดงผลการทำนายของแต่ละรายการไว้ รวมถึง % การทำนายว่าจะทำนาย loyal กี่% และทำนาย churn กี่%
*** เพิ่มเติม ***
Accuracy คือ ค่าที่บ่งบอกถึงความสามารถของเครื่องมือวัด ในการอ่านค่าหรือเเสดงค่าที่อ่านได้ไกล้เคียงค่าจริง หรือที่เรียกกันง่ายๆว่า ค่าความถูกต้อง
############################################