DSEs_G6 # Week 2–3 |(ตรวจสอบเอกสารการขอสินเชื่อให้ผ่าน แบบ 100 %ด้วย Machine Learning)

Tew Aprirat
Aug 31 · 8 min read

Objective: บทความนี้เป็นส่วนหนึ่งของ Data Science Essential Botnoi Classroom หัวข้อ Machine Learning & Prediction

Member: คุณ Buk , คุณ Somm , คุณ Champ , คุณ Kung , คุณ Tukta , คุณ View , คุณ Fuang , คุณ Patana , คุณ KaRun , คุณ G , คุณ Win JRK , คุณ supano , คุณ ztums , คุณ zen , คุณ Tung ,คุณ siriwan , คุณ paii , คุณ incubusv , คุณ isofena , คุณ the lost rhythm , คุณ joe , คุณ Eyuchi Takuya ,คุณ Tew

Link Colab: ข้อมูลในบทความเป็นเพียงส่วนหนึ่งของการวิเคราะห์ สามารถดู insight อย่างละเอียดได้จากลิงก์ colab ครับ

https://colab.research.google.com/drive/1eaG9hbfi0UH93X5bwp-uCeXKEJ4kgc1O?usp=sharing#scrollTo=BvM30KYWm86U

github : https://github.com/supano/DSEs-03

สวัสดีครับคุณผู้อ่านทุกท่าน บทความนี้เป็นการสรุปเนื้อหาในเรื่องของ Machine Learning และ Predictive Model ที่สอนโดย Botnoi โดยการนำความรู้ที่เรียนมาประยุกต์ใช้กับงานด้านต่างๆ ซึ่งหัวข้อที่จะทำเป็นการใช้ความรู้ในเรื่อง Machine Leaning และ Prediction Model เพื่อตรวจสอบ หรือ ทำนายผลลัพธ์ที่จะเกิดขึ้นเมื่อต้องตรวจสอบเอกสารการขอสินเชื่อหลายๆคน ผลลัพธ์จะเป็นเช่นไร เชิญผู้อ่านทุกท่านรับชมได้เลยครับ !!!

Machine Learning และ Predictive Model คืออะไร ?

Machine Learning หรือหลายๆคนเรียกว่า ML คือ การสอนคอมพิวเตอร์ให้เรียนรู้และสามารถทำงานได้ด้วยตนเอง วิธีการเรียนรู้จะเลียนแบบพฤติกรรมของมนุษย์ ซึ่งมนุษย์เรียนรู้จากประสบการณ์ ยิ่งประะสบการณ์มาก จะง่ายต่อการทำนายสิ่งต่อไปที่จะเกิดขึ้น โดยใช้การเปรียบเทียบ ถ้าเป็นเหตุการณ์ที่ไม่เคยเจอมาก่อนก็ยากที่จะทำนายให้ถูกต้อง 100 % ดังนั้นเราจึงต้องฝึก (Train)คอมพิวเตอร์ โดยใช้ข้อมูลจำนวนมากๆเป็นตัวอย่างเพื่อให้คอมพิวเตอร์จดจำสิ่งนั้นๆนั่นเอง….

Image for post
Image for post
Credit :https://www.4x-treme.com/ai-vs-machine-learning-vs-deep-learning/

Prediction Model คือ การนำข้อมูลที่ผ่านมานำมาสร้างโมเดล เพื่อใช้ในการทำนายผลลัพธ์

Image for post
Image for post
Credit : http://singaporebusinessintelligence.blogspot.com/2018/10/what-is-automated-machine-learning.html

ซึ่งโมเดลประเภทนี้นี้เป็นแค่ส่วนหนึ่งของอัลกอริทึมที่ใช้ในการแก้ปัญหาที่นิยมใช้กันในการทำ Machine Learning โดยสามารถอ่านบทความเพิ่มเติมที่เกี่ยวกับ Machine Leaning จาก Medium นี้ได้เลยครับ

หลังจากคุณผู้อ่านได้ทราบถึง Machine Learning และ Predictive Model ในเบื้องต้นแล้ว ถึงเวลาต้องนำเครื่องมือทั้งสองที่ได้ทราบมาใช้สักทีโดยในสัปดาห์นี้เพื่อนๆภายในกลุ่มมีความเห็นว่าจะนำมาใช้ในเรื่อง ตรวจสอบเอกสารการขอสินเชื่อ

สินเชื่อคืออะไร …มีความสำคัญแค่ไหน ?

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

การให้ยืมเงินหรือกู้เงิน และเชื่อว่าจะได้รับเงินคืนตามกำหนดเวลาและเงื่อนไขที่ตกลงกันไว้ โดยมีผลประโยชน์ตอบแทนนั่นเอง

Image for post
Image for post

ถ้าจะขอสินเชื่อต้องทำอย่างไร ?

การที่คนเราจะให้คนอื่นยืมเงิน เราต้องประเมินก่อนว่าคนๆนั้นมีเครดิตดีไหม ยืมไปแล้วสามารถคืนเงินและผลประโยชน์ได้ครบตามเวลาไหม หลักฐานที่เป็นลายลักษณ์อักษรจึงเป็นสิ่งเดียวที่สามรถยืนยันสิ่งเหล่านี้ได้ และ ทุกๆหลักฐานต้องมีการตัดสินใจร่วมอยู่ด้วย ซึ่งแต่ละเอกสารย่อมต้องมีรูปแบบที่เหมือนหรือคล้ายๆกัน เพื่อเป็นธรรมนูญหรือข้อตกลงร่วมกันที่ควรจะมี จะเห็นได้ว่าเราสามารถนำ Machine Learning มาซัพพอร์ตการทำงานของคนในส่วน การตรวจเอกสารซ้ำๆ และ การใช้ Predictive Model เพื่อทำนายผลลัพธ์ว่า ผู้ขอสินเชื่อรายนี้ ควร หรือ ไม่ควร อนุมัติ นั่นเอง ผลลัพธ์สุดท้ายจะเป็นอย่างไร การทำนายจะตรงมากแค่ไหน เชิญผู้อ่านทุกท่านรับชมไปพร้อมกันเลยครับ

ขั้นตอนในการทำ Machine Learning & Predictive Model ในเบื้องต้น

Image for post
Image for post

การทำ Machine Learning นั้นไม่ยากอย่างที่คิด !! เพียงขั้นตอนสั้นๆเพียง 6 ขั้นตอนเราก็สามารถสร้าง Machine Learning เพื่อนำไปใช้งานในเบื้องต้นได้แล้ว ต่อไปเป็นขั้นตอนที่สำคัญมากๆขั้นตอนหนึ่งที่ควรให้ความสำคัญ เชิญทำไปพร้อมกันเลยครับ

1. Get data

[Day 1] หลังจากที่เรียนจบบทเรียน Machine Learning เรียบร้อยแล้ว พวกเราทุกคนจึงแบ่งงานกันก่อน โดยการให้แต่ละคนลองเสนอหัวข้อที่สนใจ ซึ่งครั้งนี้พวกเราได้วางแผนงานอย่างเป็นระเรียบ ด้วยวิธีเขียน แผนงาน ก่อนที่จะเริ่มทำงานกันจริงๆ

Image for post
Image for post
ลายละเอียด Project Chapter และ Monitor & Update

[Day 2,3] วันนี้เป็นวันที่พวกเราจะนำหัวข้อต่างๆที่เสนอมา โดยหัวข้อทั้งหมดมีอยู่ 8 หัวข้อกันเลยทีเดียว แต่ละข้อมูลก็มีความน่าสนใจต่างกัน พวกเราในฐานะที่เป็นนักเรียนในคลาส Botnoi จึงต้องเลือกข้อมูลที่น่าสนใจ มีรายละเอียดที่ครบถ้วน สามารถสร้างออกมาเป็นผลงานที่ใช้ได้อย่างมีประสิทธิภาพ และนั้นก็คือ หัวข้อ การอนุมัติสินเชื่อ โดยใช้ Machine Learning นั่นเอง

Image for post
Image for post
หัวข้อทั้ง 8 หัวข้อที่เสนอกันเข้ามา

เมื่อรู้หัวข้อแล้วเรามาดู Data set ข้อข้อมูลเราก่อนว่ามีรายละเอียดอะไรกันบ้าง

Data Source :

https://drive.google.com/file/d/1i-jKfARVhL6DfejXrOi3pf2Hf9tJ5qF0/view

ปล. Data Source ชุดนี้เก็บข้อมูลจากคนในประเทศ USA เมื่อนำมาพัฒนาใช้กับคนในประเทศไทยหรือประเทศอื่นๆ อาจมีความคลาดเคลื่อนไปจากความเป็นจริงนะครับ

Image for post
Image for post
รายละเอียดหัวข้อต่างๆจากข้อมูลที่เลือก

ข้อมูลทั้งหมดของเราอยู่ใน google sheet ดังนั้นจึงควร transform ให้เป็น Data frame ก่อน เนื่องจากจะช่วยทำให้การวิเคราะห์ และประมวลผลสะดวกรวดเร็วขึ้น

Image for post
Image for post
โค้ดการแปลงจาก google sheet to Data frame
Image for post
Image for post
ข้อมูลหลังจาก Import เข้า Colab แล้ว

ขั้นต่อมาเราจะมาสร้างฟังชั่นการเรียกใช้งานกัน เพื่อครั้งต่อๆไปเราสามารถเรียก function มาใช้ใน Pipeline ของเรา

Image for post
Image for post
สร้าง function ชื่อ Load_data

2. Clean data

[Day 3,4,5] เมื่อเราได้สร้าง function เรียบร้อยแล้ว ขั้นต่อมาเราต้องนำ data มา clean ก่อน เนื่องจากเราไม่รู้เลยว่า data ที่เราได้มามีความผิดปกติอะไรอยู่บ้าง เช่น มี Messing data (ข้อมูลที่กรอกไม่ครบ) , Null เป็นต้น ความผิดปกติเหล่านี้จะทำให้ Model ของเราไม่มีประสิทธิภาพ ซึ่งเราสามารถเช็คความผิดปกติเหล่านี้ ได้โดย

Image for post
Image for post

จากข้อมูลที่ได้มา พบว่าข้อมูลส่วนมากมี Type เป็น Object มีข้อมูลเพียง 2 columns เท่านั้น คือ Applicant Income (รายได้ของผู้สมัคร) (int64) และ Coapplicant Income (รายได้ผู้ค้ำประกัน)(float64) ที่เป็นเพียงตัวเลข และไม่มีข้อมูลประเภท NULL

เนื่องจากมีข้อมูลประเภทตัวเลขเราควรเช็คความผิดปกติของข้อมูลอีกรอบนึงด้วยวิธีทางสถิติ เมื่อพูดถึงสถิติบางคนอาจจะฟังดูยาก !! แต่สำหรับนักเรียนของ Botnoi แล้วเราสามารถหาค่าโดยเขียนโค้ดเพียงบรรทัดเดียว นั่นก็คือ…..

Image for post
Image for post

เมื่อดูผลลัพธ์ที่ออกมาไม่มีค่าที่ผิดปกติ แต่ยังไม่หมดแค่นั้น… ยังเหลือ data ที่เป็นประเภท Object อยู่ เราต้องทำให้อยู่ในรูปตัวเลข เพื่อที่จะนำไป train ในโมเดลได้

Image for post
Image for post
function clean_data เพื่อเปลี่ยนข้อมูลเป็นตัวเลข

หลังจากที่ใช้คำสั่ง map ช่องว่างต่างๆจะกลายเป็น NaN เราจึงต้องกำจัด NaN ทิ้งไปด้วยคำสั่ง dropna

ส่วนตัวแปรบางตัวเช่น Loan Amount , Loan_Amount_Term , Credit_History นั้นมีค่าเป็นตัวเลขอยู่แล้วจึงไม่ต้องเป็นต้องทำการ map แต่จะใช้คำสั่ง replace เพื่อแปลงช่องว่างให้เป็น NaN แล้ว dropna ทีหลัง

Image for post
Image for post
โค้ดการเป็นช่องว่างเป็น NaN แล้วกำจัดทิ้งด้วยคำสั่ง dropna

มาลองเช็ค Data set อีกครั้งกันดีกว่าครับ

Image for post
Image for post
data set หลังจากลบช่องว่างและ NaN ทิ้งไปแล้ว

ยังไม่หมดแค่นั้น !!! พวกเราเห็นว่ายังมี data ที่ยังสามารถจัดเป็นกลุ่มๆได้อีก เห็นแบบนี้ก็ไม่รอช้า ลงมือ Clean data กันต่อ ซึ่งขั้นตอนการ Clean data นั้นเป็นขั้นตอนที่สำคัญ ต้องใช้ความถึกในการทำพอสมควรเลยทีเดียว แต่จะมีประโยชน์มากๆ ในการเรียกมาใช้งานหรือนำมาวิเคราะห์ค่าพารามิเตอร์ต่างๆ

Image for post
Image for post
การขัดกลุ่มตัวแปรต่างๆให้มีระเบียบและสะดวกในการเรียกใช้มากขึ้น

อีกทั้งยังสร้างตัวแปรอีกตัวขึ้นมาด้วยชื่อว่า DebtRatio (อัตราส่วนหนี้สิน) เพื่อใช้เป็นตัวแปรอีกตัวในการเลือก ว่าสามารถขอสินเชื่อผ่านไหม…

Image for post
Image for post
ตัวแปร DebtRatio ที่สร้างขึ้นมาจากการนำตัวแปรอื่นๆมาผสมกัน
Image for post
Image for post
ผลลัพธ์ที่ได้หลังจากผ่านกระบวนการ Clean data

เมื่อทำทุกกระบวนการในการ Clean data แล้ว นี่คือผลลัพธ์ที่ได้… ทีนี้ data set ของพวกเราก็พร้อมที่จะนำไป Train กันแล้ว

3. Train and test split

[Day 6,7,8] ใกล้จะหมดเวลาในสัปดาห์แรกแล้ว ทางกลุ่มเรามีการประชุมกันอยู่เป็นระยะ เพื่อติดตามงาน และอัพเดตข้อมูลอย่างสม่ำเสมอเพื่อให้ผลลัพธ์ออกมาดีที่สุดและในขั้นตอน Train and test split คือ การแบ่งข้อมูลออกเป็น 2 set เพื่อใช้ในการ Training Set(ทดสอบ) และ Evaluating Set (ประเมินผล) โดยที่ข้อมูลนั้นต้องมีคำตอบอยู่แล้ว ซึ่งจะต้องจัดแบ่งและใช้งานอย่างเหมาะสม

Training Set : เราจะใช้ข้อมูลชุดนี้ในการสอน Machine Learning model เพื่อให้ model เรียนรู้ parameter ที่เหมาะสม

Evaluating Set : หลังจากได้ model ที่ดีที่สุดแล้ว เราจะใช้ Evaluating Set เพื่อวัดประสิทธิภาพในการทำนายของโมเดล

Image for post
Image for post
ตัวอย่าง Model การ Train and Test split

สัดส่วนของข้อมูลที่จะแบ่ง ควรเป็นเท่าไรดี ?

ในการแบ่งข้อมูลออกมาใช้ Train ควรจะแบ่งออกมาให้มีปริมาณที่เยอะ เพราะว่าเราต้องใช้ข้อมูลชุดนี้ในการสอน Model เปรียบเสมือนการอ่านหนังสือเพื่อไปสอบ ยิ่งอ่านเยอะเท่าไร โอกาสที่จะตอบถูกก็มีมากขึ้นตาม ส่วนการแบ่งข้อมูลไป Test ไม่จำเป็นต้องมีมาก แต่ควรที่มีมากพอที่จะสามารถนำมาวัด Error ที่มีความหมายจริงๆได้ ดังนั้นสัดส่วนของข้อมูลที่แบ่งต้องเหมาะสม และ เรามีข้อมูลเยอะแค่ไหน…

Image for post
Image for post
สัดส่วนในการแบ่งข้อมูล

ปล. ในการแบ่งชุดข้อมูลเราอาจแบ่งเป็น 3 set ก็ได้ โดยจะมี Dev Model เพิ่มเข้ามาเพื่อใช้ในการวัดค่า error เปรียบเทียบกับ Testing set ถ้าให้ยกตัวอย่างก็เหมือนกับการทำข้อสอบ คำถามที่ดีคือคำถามที่ไม่เหมือนกับตัวอย่างที่สอนในห้อง

คำถามในข้อสอบเหมือนกับตัวอย่าง = วัดความจำของนักเรียน

คำถามในข้อสอบคล้ายๆกับตัวอย่างแต่ไม่เหมือนกัน = วัดความเข้าใจของนักเรียน

เช่นเดียวกัน เราต้องการวัดว่า model เข้าใจปัญหาแค่ไหน ไม่ได้วัดว่า model จำตัวอย่างได้ดีแค่ไหน ดังนั้นเราต้องวัด error จากชุดข้อมูลที่ model ไม่เคยเห็นมาก่อน เราเรียกข้อมูลชุดนี้ว่า Development set (Dev set) สามารถอ่านเพิ่มเติมได้จาก Credit : http://codeonthehill.com/machine-learning-4-data-set/

Image for post
Image for post
โค้ดการแยก Data set ออกเป็น 2 ส่วน
Image for post
Image for post
แบ่งข้อมูลเป็นการ Train = 384 record และ Test = 96 record

4 . Extract Feature

[Day 9,10] มามากันเกินครึ่งทางแล้วนะครับ ช่วงนี้ก็จะมีการประชุมโดยใช้ zoom บ่อยขึ้นมาๆ เนื่องจากใกล้ถึงวันกำหมดส่งแล้ว มาลุยกันต่อเลย !!! ในส่วนของขั้นตอนที่ 4 จะเป็นการแยก Feature และ Label

Label : สิ่งที่สนใจ

Feature : คำตอบของสิ่งที่สนใจ

ซึ่งในโปรเจคนี้พวกเราสนใจเรื่องการอนุมัติสินเชื่อเราจึงนำคำถามคือ Loan_Status มาเป็น Label ส่วน Feature คือคำตอบของสิ่งที่เราสนใจ ในที่นี้คือทุกตัวแปรที่ไม่ใช่ Loan_Status สามารถเขียนโปรแกรมได้ดังนี้

Image for post
Image for post

เมื่อทำมาถึงตรงนี้แล้วพวกเราขออธิบายเพิ่มเติมในส่วนของ Data set ของพวกเรานะครับ หลังจากผ่านกระบวรการต่างๆจนมาถึงขั้นตอนที่ ต้อง Extract Feature แล้วพวกเราพบว่าข้อมูลของเรา Imbalance data set หรือก็คือ ข้อมูลคำตอบของแต่ละคลาสมีจำนวนไม่เท่ากัน แต่ไม่ต้องตกใจกันครับ พวกเราได้แก้ปัญหาตรงส่วนนั้นแล้ว แก้ด้วย การกำหนด Weighting ของแต่ละ Class ของ Label ว่าเราให้น้ำหนักสิ่งนี้ มากกว่าอีกสิ่งหนึ่ง ตั้งแต่ตอน train หรือทำให้มัน balance ก็ตัดข้อมูลให้ทุกคลาสเท่ากัน ซึ่ง Imbalance data set จะมีผลทำให้ Accuracy ออกมาดี การทำนายมีแนวโน้มจะให้ผลว่า อนุมัติ มากกว่าปกติ

Image for post
Image for post
ตัวอย่างข้อมูลที่เป็น Imbalance data set

5 . Train Model

[Day 11,12] ต่อมาเป็นการ Train Model กันแล้วนะครับ คราวนี้เราจะได้รู้สักทีว่าตัวแปรอะไรที่มีผลมากที่สุดในการขอสินเชื่อกันแน่ (แต่เป็นเพียงแค่การคาดการณ์นะครับการนำไปใช้จริงควรเพิ่มจำนวนข้อมูลให้มากกว่านี้)

การ Train Model ใน Machine Learning มีเยอะมากขึ้นอยู่กับ Algorithm ที่ใช้ในการเทรน เช่น Linear regression, SVM, Tree, Neural Network เป็นต้น ซึ่งเราแบ่งประเภทของ Machine Learning ออกเป็น 3 ประเภทใหญ่ๆ ดังนี้

1. Supervised : การเรียนรู้แบบมีคนสอน Machine Learning ถูกสอนด้วย data ที่มีคำตอบอยู่แล้ว

2. Unsupervised learning :การเรียนรู้ unlabel data โดย “จับกลุ่ม” ตามความเหมือนและต่าง จากลักษณะของข้อมูล(Feature) ซึ่ง วิธีนี้เรียกว่า “Clustering”

3. Reinforcement learning :จะเป็นตัวกำหนด Action ของบอท หลังจากเทรนไปเรื่อยๆ บอทจะค่อยๆ พัฒนาตัวเองจนสุดท้ายสามารถบรรลุเป้าหมายที่ตั้งไว้ได้

Image for post
Image for post
Credit :https://medium.com/@ankitgupta_974/introduction-to-machine-learning-c2cde23aded2

แต่ในครั้งนี้เราใช้เป็น Supervised เพื่อใช้เรียนรู้ในเบื้องต้นก่อนโดยใน Supervised สามารถแบ่งเป็น 2 ประเภทได้อีกคือ

Classification : คือการแบ่งกลุ่มหรือประเภทแยกของข้อมูล

Regression :คือ การทำนายผลเป็นตัวเลขต่อเนื่อง

ขอบคุณบทความดีๆจาก Credit: medium.com/@ankitgupta_974/introduction-to-machine-learning-c2cde23aded2

Image for post
Image for post
Credit : https://medium.com/@jorgesleonel/supervised-learning-c16823b00c13

หลังจากได้ทราบข้อมูลเบื้องต้นกันแล้ว เราลองมาดูของจริงกันเลยครับ !!!

Image for post
Image for post

โมเดลที่พวกเราใช้คือ RandomForestClassifier เพราะว่าเป็นโมเดลที่ประมวลผลออกมาได้เร็ว แต่ก็มีข้อเสียคือ โมเดลหรือผลลัพธ์จะมีความอ่อนแอกว่าโมเดลตัวอื่นๆ ปล. หลังคำว่า RandomForest_____ สามารถเปลี่ยนเป็น Regressor ได้ ถ้าต้องการประมวลผลแบบ Regression

ผลลัพธ์ที่ได้

Image for post
Image for post
ค่าที่ได้ออกมาบอกถึงน้ำหนักของข้อมูล
Image for post
Image for post
เปลี่ยนจากตัวเลขเป็นกราฟแท่งเพื่อความสะดวกในการดู

จากผลลัพธ์เรียงจากตัวแปรที่มีน้ำหนักมากที่สุดไปน้อยที่สุด 3 ลำดับแรกคือ

1. DebtRatio (อัตราส่วนหนี้สิน)

2. Credit_History_0.0 (เครดิต / ยังไม่เคยขอสินเชื่อ)

3. Credit_History_1.0 (เครดิต / เคยขอสินเชื่อมาแล้ว)

6 . Evaluation

[Day 13]และแล้วเราก็มาถึง…ขั้นสุดท้ายแต่ไม่ท้ายสุด ในขั้นตอนนี้เรามาประเมินผลลัพธ์กันดีกว่า ซึ่งข้อมูลของพวกเราเป็นแบบ Classification ซึ่งการวัดผลจะแตกต่างจาก แบบ Regression

classification :วัดผลด้วย accuracy, precision, recall, f-score

regression :วัดผลด้วย mse, rmse, r2, mae เป็นต้น

เราประเมินโมเดลเพื่ออะไร ?

เพื่อเช็คว่า Model ที่เรา Train สามารถนำไปใช้งานได้หรือยังซึ่งพิจรณาจาก accuracy , precision เป็นต้น เนื่องจาก Model ที่เราสร้างหรือใช้กัน เป็นหลักการหรือกระบวนการทาง คณิตศาสตร์และวิทยาศาสตร์ ซึ่งสามารถพิสูจน์ได้

Image for post
Image for post

โดยที่เราจะนำข้อสอบ(ข้อมูลที่เราได้ทำการแยกไว้)ส่งเข้าไปที่โมเดลที่พวกเราได้ Train หรือ สร้างกันไว้ ซึ่งเราจะดูผลลัพธ์อยู่ 4 อย่าง คือ

1. Accuracy : ดูว่าผลลัพธ์ใกล้เคียงกับคำตอบแค่ไหน [acc สูง = ผลลัพธ์ใกล้เคียงกับคำตอบ , acc ต่ำ = ผลลัพธ์ไม่ใกล้เคียงกับคำตอบหรือใกล้เคียงบางครั้ง]

2. Precision : เกิดจากการนำ ค่า True Positive มาเทียบกับ Actual Results

3. Recall : เกิดจากการนำค่า True Positiveมาเทียบกับ Predicted Results

4. F1 Score : ค่าเฉลี่ยของ Precision และ Recall

Image for post
Image for post
Credit : https://medium.com/datadriveninvestor/confusion-matric-tpr-fpr-fnr-tnr-precision-recall-f1-score-73efa162a25f
Image for post
Image for post
Credit : https://towardsdatascience.com/whats-the-deal-with-accuracy-precision-recall-and-f1-f5d8b4db1021

ผลลัพธ์ที่ได้นั่นก็คือ ….

Image for post
Image for post

จากผลลัพธ์ที่ออกมาบอกถึงโอกาสที่ Model ที่เราสร้างจะสามารถนำไปใช้ได้จริง

และแล้วก็มาถึงขั้นตอนสุดท้าย….

[Day 14]มาถึงตรงนี้ทางทีม DSEs_G6 ขอขอบพระคุณทุกท่านที่อ่านมาจนถึงตอนสุดท้าย และขอบคุณพี่ๆ เพื่อนๆ ในทีม G6 ที่ได้ร่วมมือกันจนเกิดเป็นผลงานชิ้นนี้ได้ ขั้นตอนสุดท้ายนี้คือการประกอบร่างทุกๆหัวข้อเข้าด้วยกัน โดยใช้ Pipeline หรือก็คือท่อร่วมกัน โดยเราจะนำกระบวนการแต่ละหัวข้อตั้งแต่หัวข้อที่ 1 จนถึง หัวข้อที่ 6 มาเรียงกันให้มีลำดับขั้นตอนการทำงานและสามารถนำมาใช้งานได้สะดวกขึ้นแสดงดังรูปด้านล่างนี้

Image for post
Image for post
Pipeline ทั้งหมด

ทดสอบกันสักหน่อย

Image for post
Image for post
สร้างข้อมูลเพื่อให้ Machine learning ทำนายผลลัพธ์
Image for post
Image for post
ผลลัพธ์ที่ได้

มาทำ host AI บน Heroku และ Botnoi API กันเถอะ

เมื่อเราทำ Machine Learning เราคงอยากเรียกใช้มันที่ไหนก็ได้โดยไม่ต้องมานั่งเขียนใหม่ สิ่งที่จะช่วยอำนวยความสะดวกให้พวกเราก็คือ API (Application Programming Interface) ทำหน้าที่ช่วยในการเข้าถึงข้อมูลต่าง ๆหรือจะเป็นการนำข้อมูลต่างๆเข้า / ออกจากเว็บไซต์ ทำให้เราสามารถเรียกใช้งานได้ทั่วทุกที่ ไม่ว่าจะเป็น บนเว็ปไซต์ บนคอมพิวเตอร์ บนโทรศัพท์มือถือ แล้วโค้ดเราอยู่ที่ไหนหล่ะ ? โค้ดของเราก็จะอยู่บน Server ที่ให้บริการ ในที่นี้ก็จะเป็น Heroku และ Botnoi API นั่นเองตัวอย่างวิธีการทำเป็นของเพจ Botnoi สามารถเข้าไปดูได้ที่นี่

Image for post
Image for post
Credit :https://www.bot.or.th/Thai/Statistics/EconomicAndFinancial/Pages/API.aspx

สามารถเข้าไปลอง API ของกลุ่มพวกเราได้ที่

API : https://openapi.botnoi.ai/dashboard/myapi/sa-loan-predict

เมื่อเข้ามาที่ API ของผวกเราก็จะเจอหน้าต่างแบบนี้เลยครับ ปล. อย่าลืม Login กันก่อนนะครับผม

Image for post
Image for post
API ชื่อว่า loan -predict นั่นเอง

เมื่อกดเข้ามาแล้วหน้าตาจะเป็นแบบนี้เลยครับ ลองใช้สักหน่อยแล้วกัน

Image for post
Image for post
พรารามิเตอร์ต่างๆที่ต้องกรองเพื่อใช้งาน

กรอกพารามิเตอร์ให้ครบ แล้วกดทำนายหัวข้อ รอดูผลลัพธ์ได้เลยครับผม….

Image for post
Image for post
กรอกพารามิเตอร์แล้วกดทำนายหัวข้อ

เพิ่มเติมนะครับ API loan -predict ของกลุ่มพวกเราสามารถนำไปประยุกต์ใช้หรือต่อยอดในงานหลายๆอย่าง เช่น นำไปบริหารจัดการความเสี่ยงสำหรับผู้ปล่อยสินเชื่อขนาดกลาง — รายย่อย เพราะปัจจุบันการทำงานด้านนี้ยังใช้คนในการตัดสินใจอยู่ หรือ หน่วยงานที่ต้องคัดเลือกผู้ขอสินเชื่อ และ คนที่ต้องการประเมินตนเองก่อนไปขอสินเชื่อ แต่ยังไม่มี Know how เป็นของตนเอง ต้องใช้ Vendor อยู่ ก็สามารถนำไปใช้ได้ฟรีๆกันเลย(ถ้ามีการเรียกใช้มากๆอาจขอเก็บค่าบริการนิดหน่อย ซึ่งคุ้มกับผู้ขอใช้บริการอย่างแน่นอนครับ)

Image for post
Image for post
ผลลัพธ์ คือ “ปฎิเสธ” หรือไม่ผ่านนั่นเอง

API นี้เป็น API แรกที่พวกเรา กลุ่ม 6 ได้พัฒนาขึ้นมาอาจไม่ได้ดีที่สุด ต้องมีการกรอกตัวหนังสือพิมพ์เล็ก-ใหญ่ให้ตรง และบัคต่างๆที่อาจเพิ่มขึ้นมาในภายหลังแต่พวกเราก็ร่วมกันทำอย่างสุดความสามารถ และจะนำข้อผิดพลาดไปพัฒนาให้ดียิ่งๆขึ้นไป ถ้าผิดพลาดประการใด พวกเรากลุ่ม 6 ขออภัยมา ณ ที่นี้ด้วยนะครับ

สรุปผล

กระบวนการในการสร้าง Machine Learning เบื้องต้น

  1. get data : เป็นขั้นตอนที่สำคัญมากยิ่งข้อมูลเรามีความสมบูรณ์ของข้อมูลมากเท่าไรผลลัพธ์ที่ได้จะมีโอกาสที่จะตรงกับคำตอบมากยิ่งขึ้น
  2. Clean data : ถ้าเป็น data ที่เรากำหนดหัวข้อเอง เช่น การกรอก google from , การกรอกเอกสาร เราอาจไม่จำเป็นต้อง Clean data ก็ได้ แต่ถ้าเรานำ data มาจากแหล่งอื่นๆ เราจำเป็นที่จะต้อง Clean data เพื่อให้ data ของเรามีความสมบูรณ์ พร้อมใช้งาน
  3. Train and Test split : การเรียรรู้ของเครื่องจักลอกเลียนแบบมากจากการเรียนรู้ของคน ดังนั้นเราจึงต้องสอนเครื่องจักรให้จำข้อมูล(input)ได้เสียก่อน ซึ่งเราต้องแบ่งข้อมูลที่มีออกเป็น 2 ชุด ชุดแรกเพื่อใช้ Train ชุดสองเพื่อใช้ Test โดยจำนวนข้อมูลในการแบ่งขึ้นอยู่กับว่าเรามีข้อมูลมากน้อยแค่ไหน แต่พื้นฐานในการ Train ก็ยังเหมือนคน คือ ถ้าเรา Train ด้วยข้อมูลที่มากๆ การที่จะนำไปทำนายก็มีโอกาสในการถูกมากกว่า
  4. Extract Feature : คือการกำหนดให้เครื่องจักรรู้ว่าสิ่งไหนคือคำถาม สิ่งไหนคือคำตอบ เพราะว่าเครื่องจักรหรือคอมพิวเตอร์ไม่สามารถรับรู้ได้ ดังนั้นสิ่งที่คนต้องทำคือบอกมันให้รู้นั่นเอง (แค่ครั้งแรก)
  5. Train Model : คือการนำข้อมูลของเรามาใส่ลงในกระบวนการทางคณิตศาสตร์และวิทยาศาสตร์เพื่อให้ได้เป็นผลลัพธ์ที่สามารถบอกหรือประเมินเป็นตัวเลขได้ซึ่งเราสามารถแบ่งประเภทของ Machine Learning ได้ 3 ประเภท คือ Supervised , Unsupervised learning , Reinforcement learning ซึ่งแต่ละแบบจะมีการเรียนรู้คนละอย่างกัน ในโปรเจคนี้เราจะใช้อันพื้นฐานที่สุดคือ Supervised โดยสามารถแบ่งออกได้เป็นอีก 2 ประเภท คือ Classification : จำแนกตามกลุ่ม และ Regression : การทำนายผลเป็นตัวเลข
  6. Evaluate : เมื่อเราสร้าง Machine Learning ได้เราควรต้องประเมินประสิทธิภาพของมันได้ด้วยเช่นกัน ซึ่งการประเมินจะใช้หลักการของคณิตศาสตร์และสถิติมาช่วยประเมิน ซึ่ง Model แต่ละประเภทก็ใช้ตัวชี้วัดที่ต่างกัน เช่นclassification วัดผลด้วย accuracy, precision, recall, f-score เป็นต้น
  7. Pipeline : เมื่อเราทำมาถึงขั้นตอนนี้แล้วขอแสดงความยินดีด้วยคุณได้สร้าง Machine Learning ขึ้นมาได้แล้ว แต่ยังไม่สมบูรณ์ 100 % เพราะว่า ทุกๆหัวข้อที่ทำผ่านมายังไม่ถูกรวมเป็นหนึ่งเดียว การทำ pipeline คือการนำโค้ดทุดอย่างมาสร้างเป็นฟังชั่นเพื่อสะดวกต่อการนำไปใช้งาน

เป็นยังไงกันบ้างครับและนี่ก็คือ บทความพี่พวกเรากลุ่ม G6 ได้ร่วมแรงร่วมใจเพื่อสร้างสรรค์ผลงานที่มีคุณภาพ ได้รวบรวมข้อมูลจากทั้ง Class DSEs , ข้อมูลจากพี่ๆ เพื่อนๆ , ข้อมูลจากพี่ๆทีมงาน Botnoi พวกเราขอขอบคุณคุณผู้อ่านทุกๆท่าน พี่ๆทีมงาน Botnoi และ พี่ๆเพื่อนๆทั้งกลุ่ม G6 และกลุ่มอื่นๆด้วยครับ

-thank you -

DSEs_G6

botnoi-classroom

This publication consists of articles related to Data…

Tew Aprirat

Written by

botnoi-classroom

This publication consists of articles related to Data science and AI written from Botnoi’s data scientists and students.

Tew Aprirat

Written by

botnoi-classroom

This publication consists of articles related to Data science and AI written from Botnoi’s data scientists and students.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app