วิธีการ Classification การอนุมัติเงินกู้ด้วยโมเดล Two-Class Logistic Regression โดยใช้ AzureML
ในบทความนี้เราจะมาทำการ Classification โดยใช้โมเดลที่มีชื่อว่า Two-Class Logistic Regression ที่เราสามารถสร้างได้ง่าย ๆโดยใช้เครื่องมือที่มีชื่อว่า AzureML ค่ะ ซึ่งข้อมูลที่เราต้องการ Classify ในบทความนี้คือข้อมูลการอนุมัติเงินกู้ซึ่งมีจำนวน 614 แถว 13 คอลัมน์ โดยมี Target หรือเป้าหมายของการ Classification ของเราคือคอลัมน์ที่มีชื่อว่า Loan_Status โดยที่ Y แทนสถานะอนุมัติ และ N แทนสถานะไม่อนุมัติ
![016-1](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-1.png)
ซึ่งมีวิธีการในการ Classification โดยใช้ AzureML ดังนี้
- นำข้อมูลจากเครื่องเข้ามาที่ AzureML โดยกด NEW ตามด้วย DATASET คลิก From local File เพื่อเลือกข้อมูลที่อยู่ในเครื่องของเราเข้ามา จากนั้นเลือกนามสกุลไฟล์ และเลือกว่าไฟล์ที่เรานำเข้ามาต้องการให้มี header หรือชื่อคอลัมน์ไหมตามที่เราต้องการ และกดตรงเครื่องหมายถูก
- ลากข้อมูลที่เราต้องการ Clean หรือต้องการสร้างโมเดลมาไว้บน Workspace โดยนำข้อมูลที่เรานำเข้ามาจาก Saved Dataset เลือก My Datasets จากนั้นลากชุดข้อมูลที่เราต้องการมาไว้บน Workspace
![016-2](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-2.png)
3. จากนั้นเราจะดูรายละเอียดของชนิดของข้อมูลโดยการคลิกขวาที่วงกลมเล็ก ๆ ใต้ชุดข้อมูลที่เรานำมาวาง แล้วเลือก Visualize เพื่อดูรายละเอียดของข้อมูล พบว่า
- มี missing value เกือบทุกคอลัมน์ทั้งคอลัมนที่เป็น String และคอลัมน์ที่เป็น numeric
- มีคอลัมน์ที่ไม่มีผลต่อ Classification คือ Loan_ID
4. Clean missing data ของคอลัมน์ที่มีชนิดข้อมูลเป็น string โดยการค้นหา module ที่มีชื่อว่า Clean Missing Data แล้วลากมาวางบน Workspace จากนั้นลากเส้นเชื่อมกับชุดข้อมูลของเรา จากนั้นคลิก Launch column selector จากนั้นกดเลือกคอลัมน์โดยเลือกข้อมูลที่เป็น string ทั้งหมดที่เราต้องการมาไว้ทาง Selected Columns แล้วคลิกเครื่องหมายถูก
![016-3](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-3.png)
![016-4](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-4.png)
จากนั้นเลือก parameter เป็น Replace with mode แล้กคลิก RUN
![016-5](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-5.png)
5. ในทำนองเดียวกันเราจะ clean คอลัมน์ที่เป็น numeric ทุกคอลัมน์ด้วย Replace with mean
![016-6](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-6.png)
6. เลือกคอลัมน์ที่นำมาใช้ในการวิเคราะยกเว้น Loan_ID โดยการค้นหา module ที่ชื่อว่า Select columns in dataset แล้วคลิก Launch column selector โดยเลือกทุกแถวยกเว้น Loan_ID แล้วคลิก RUN
![016-7](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-7.png)
7. จากนั้นเราจะแยกข้อมูลออกเป็น training set เพื่อใช้ในการ train ข้อมูลและ test set เพื่อทดสอบข้อมูลสามารถทำได้โดยการค้นหา module ที่มีชื่อว่า Split Data จากนั้นทำการปรับค่า parameter ดังนี้
- Splitting mode เลือก Split Rows
- Fraction of rows in the first output dataset ใส่ค่า 7 นั้นคือเราจะแบ่งเป็น training set 70% และ test set 30% แล้วใส่เครื่องหมายถูกตรง Randomized split
- Random Seed เราสามารถใส่เลขอะไรก็ได้เพื่อให้การสุ่มในทุก ๆ ครั้งได้เลขเดิมโดยในที่นี่เราจะใส่ 123
- Stratified split เลือก true จากนั้นเลือกคอลัมน์ที่เป็น target ของเรานั้นคือ Loan_Status
เมื่อตั้งค่าทุก parameter เสร็จแล้วคลิก RUN
![016-8](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-8.png)
8. ค้นหา module ที่มีชื่อว่า Two-Class Logistic Regression เพื่อทำการสร้างและ train โมเดล
โดยค่า parameter แต่ละค่ามีความหมายดังนี้
- Create trainer mode
- Single Parameter : ระบุ set ของค่าเฉพาะ
- Parameter Range : ระบุค่าเฉพาะหลายค่าและรับ set ที่เหมาะสมที่สุดสำหรับกำหนดค่า
- Optimization tolerance : ค่าเกณฑ์ที่ใช้เพื่อหยุดการทำซ้ำแบบจำลองบน training set
- L1 regularization weight : ลดค่าสัมประสิทธิ์ทั้งหมดตามสัดส่วนเดียวกันแต่ไม่กำจัดเลย
- L2 regularization weight : สามารถลดค่าสัมประสิทธิ์บางส่วนให้เป็นศูนย์โดยทำการเลือกตัวแปร
ทั้ง L1 และ L2 เราต้องทำให้เป็นมาตรฐานเพื่อป้องกันไม่ให้เกิดการ Overfitting โดยการลดขนาดสัมประสิทธิ์ โดย L2 มันจะมีน้ำหนักน้อย ส่วน L1 มักจะมีน้ำหนักที่มากกว่า และทั้งสองจะมีค่ามากกว่าศูนย์
- Memory size for L-BFGS : จำนวนหน่วยความจำที่ใช้สำหรับทิศทางและขั้นตอนถัดไป
- Random number seed : เราสามารถใส่เลขอะไรก็ได้เพื่อให้การสุ่มในทุก ๆ ครั้งได้เลขเดิมโดยในที่นี่เราจะใส่ 123
- Allow unknown categorical levels : สร้างระดับ unknow เพิ่มเติม
โดยในข้อมูลนี้เราจะกำหนดค่าเหล่านี้ตาม AzureML กำหนดมาแล้ว
![016-9](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-9.png)
9. จากนั้นค้นหา module ที่ชื่อว่า Train Model ลากมาวางบน Workspace และลากเส้นเชื่อมจาก Two-Class Logistic Regression มาเชื่อมกับวงกลมวงแรกและลากจากวงกลมวงแรกอง Split Data มาเชื่อมวงกลมวงที่สองของ Train Model จากนั้นเลือกคอลัมน์ Loan_Status
![016-10](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-10.png)
10. จากนั้นค้นหา module ที่ชื่อว่า Score Model มาวางบน Workspace แล้วลากเส้นเชื่อมจาก Train Model มาเชื่อมที่วงกลมวงแรก และลากจากวงกลมที่สองของ Split Data มาเชื่อมกับวงที่สองของ Score Model
![016-11](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-11.png)
11. จากนั้นค้นหา module ที่ชื่อว่า Evaluate Model มาวางบน Workspace แล้วลากเส้นเชื่อมจาก Score Model มาที่ Evaluate Model เพื่อดูประสิทธิภาพของโมเดลของเรา จากนั้นกด RUN
![016-12](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-12.png)
12. Visualize ดูประสิทธิภาพของโมเดลจะพบว่า โมเดลของเราสามารถ Classification ได้ค่าความถูกต้อง 832 หรือเท่ากับ 83.2 % และค่าที่ใช้วัดประสิทธิภาพของโมเดลมีค่าที่สูงทุก ๆ ค่า ทำให้เราสามารถสรุปได้ว่า Two-Class Logistic Regression เป็นโมเดลที่มีประสิทธิภาพที่ดีและเหมาะในการ Classification ข้อมูลการอนุมัติเงินกู้
![016-13](https://www.cloudilar.com/wp-content/uploads/sites/2/2020/10/016-13.png)