จัดการหมวดหมู่เล็ก ๆ ยิบย่อย รวมข้อมูลหมวดหมู่ Category เล็ก ๆ เป็นหมวดหมู่ Other ก่อนป้อนเทรน Machine Learning – Preprocessing ep.4

ในหลาย ๆ Dataset เราจะพบว่าข้อมูลแบบ Category มีการแตกยิบย่อยมากเกินไป เช่น บาง Category มีแค่ 1 หรือ 2 Record เท่านั้น หรือ Category เล็ก จำนวน Record แตกต่างกับ Category ใหญ่ ๆ หลายร้อย หลายพันเท่า ข้อมูล Category เล็ก ๆ ยิบย่อยเหล่านี้ อาจจะไม่ได้ช่วยโมเดล Machine Learning ในการเรียนรู้ก็ได้

ทางแก้คือ เราจะ Group รวม Category เล็ก ๆ เหล่านั้นรวมออกมาเป็น Category ใหม่ ตั้งชื่อว่า Other

Continue reading “จัดการหมวดหมู่เล็ก ๆ ยิบย่อย รวมข้อมูลหมวดหมู่ Category เล็ก ๆ เป็นหมวดหมู่ Other ก่อนป้อนเทรน Machine Learning – Preprocessing ep.4”

lr_find หา Learning Rate ที่ดีที่สุดในการเทรน Machine Learning โมเดล Deep Neural Network ด้วย Callback – Neural Network ep.12

จาก ep ก่อน เราได้รู้จัก Hyperparameter ที่สำคัญที่สุดในการเทรน Machine Learning ชื่อ Learning Rate แต่ปัญหาคือ ถ้าเรากำหนดค่า Learning น้อยไปก็ทำให้เทรนได้ช้า แต่ถ้ามากเกินไปก็ทำให้ไม่ Converge หรืออาจจะ Error ไปเลย

แล้วเราจะมีวิธีใด ที่จะหาค่า Learning Rate ที่ดีที่สุด มาใช้เทรน Deep Neural Network ของเรา

Continue reading “lr_find หา Learning Rate ที่ดีที่สุดในการเทรน Machine Learning โมเดล Deep Neural Network ด้วย Callback – Neural Network ep.12”

ตัวอย่าง Callback ในการเทรน Machine Learning คำนวน Metrics, Recorder บันทึก Loss, Learning Rate – Neural Network ep.11

จาก ep ที่แล้ว ที่เราประยุกต์ใช้ Callback กับ Training Loop ในการเทรน Machine Learning ด้วยอัลกอริทึม Gradient Descent สร้างเป็น Runner Class ที่มี Callback ในทุก ๆ Event ที่เป็นไปได้ ในการเทรน Deep Neural Network แล้วเราจะใช้ประโยชน์จาก ระบบ Callback อันแสนยืดหยุ่นนี้ อย่างไรได้บ้าง

ใน ep นี้เราจะมาดูตัวอย่างการสร้าง Callback แบบง่าย ๆ แต่มีประโยชน์ คือการ คำนวน Metrics และ บันทึกค่า Loss, Learning Rate

Continue reading “ตัวอย่าง Callback ในการเทรน Machine Learning คำนวน Metrics, Recorder บันทึก Loss, Learning Rate – Neural Network ep.11”

การประยุกต์ใช้ Callback เพิ่มความยืดหยุดให้ Training Loop รองรับการเทรนด้วย Algorithm ซับซ้อนขึ้น – Neural Network ep.10

จาก ep ก่อน ๆ เราจะได้ Training Loop ที่สามารถเทรน Neural Network ได้อย่างถูกต้อง สมบูรณ์ ได้ผลลัพธ์เป็นที่หน้าพอใจ แต่ถ้าเราต้องการเพิ่มเติม Logic การเทรนที่ซับซ้อนยิ่งขึ้น เราจะต้องแก้โค้ดนี้ แทรกตามบรรทัดต่าง ๆ เช่น ก่อนเริ่มเทรน, ก่อนเริ่ม Epoch, หลังจากจบ 1 Epoch, etc.

ข้อเสียของการแทรกโค้ดแบบนี้ คือ ทำให้โค้ดใน Loop นี้ก็จะบวมขึ้นเรื่อย ๆ ส่งผลให้มีปัญหาในการ Maintain แล้วเราจะแก้ปัญหานี้อย่างไรดี

Continue reading “การประยุกต์ใช้ Callback เพิ่มความยืดหยุดให้ Training Loop รองรับการเทรนด้วย Algorithm ซับซ้อนขึ้น – Neural Network ep.10”

Debug โปรแกรมภาษา Python บน Jupyter Notebook ด้วย %debug, set_trace – Jupyter Notebook ep.6

วิธีที่ง่ายที่สุดในการ Debug โปรแกรมด้วย Jupyter Notebook คือการใช้ Magic Command %debug เมื่อใดก็ตามที่เราเจอ Error ให้เราสร้าง cell ขึ้นมาใหม่ แล้วพิมพ์ว่า %debug แล้วสั่งรัน ระบบจะเปิด command line

Continue reading “Debug โปรแกรมภาษา Python บน Jupyter Notebook ด้วย %debug, set_trace – Jupyter Notebook ep.6”

Refactor โค้ด Neural Network สร้าง DataBunch และ Learner ปรับปรุง Training Loop – Neural Network ep.9

ใน ep ที่แล้วเราได้ Neural Network และ Training Loop ที่ทำงานได้ดีพอสมควร มีการวัดผล Metrics กับข้อมูลใน Validation Set เพื่อให้แน่ใจว่าโมเดลทำงานได้ถูกต้องกับข้อมูลที่ไม่เคยเห็นมาก่อน

แต่โค้ด Training Loop ของเรายังมีความซับซ้อนเกินไป ใช้ Parameter จากภายนอกถึง 6 ตัว ซึ่งมากเกินไป ทำให้ยากต่อการต่อยอดเทรนในอัลกอริทึมที่ซับซ้อนยิ่งขึ้น แล้วเราจะแก้ไขอย่างไร

Continue reading “Refactor โค้ด Neural Network สร้าง DataBunch และ Learner ปรับปรุง Training Loop – Neural Network ep.9”

สำรวจข้อมูล Exploratory Data Analysis (EDA) ด้วย Pandas Profiling วิเคราะห์ Pandas DataFrame – Pandas ep.6

เมื่อเราได้ Dataset ใหม่มา สิ่งแรกที่เราควรทำ คือ Exploratory Data Analysis (EDA) ทำความเข้าใจข้อมูล ในแต่ละ Feaure เช่น ข้อมูลเป็นชนิดอะไร, ข้อมูลเป็นแบบต่อเนื่องหรือไม่ต่อเนื่อง, ช่วงของข้อมูลกว้างแค่ไหน, การกระจายของข้อมูลเป็นอย่างไร, มีข้อมูลขาดหายไปเยอะแค่ไหน, แต่ละ Feature เชื่อมโยงกันอย่างไร

การวิเคราะห์ทั้งหมดนี้ค่อนข้างซับซ้อน และซ้ำซ้อนเหมือนกันในทุก ๆ Dataset จะมีวิธีไหนที่จะทำให้งานซ้ำ ๆ เหล่านี้ง่ายขึ้น

Continue reading “สำรวจข้อมูล Exploratory Data Analysis (EDA) ด้วย Pandas Profiling วิเคราะห์ Pandas DataFrame – Pandas ep.6”

args, kwargs คืออะไร สอนเขียน Function ที่ใช้ args, kwargs ตัวอย่างการใช้งาน args, kwargs ในภาษา Python – Python ep.9

ในการประกาศฟังก์ชัน รายการ Parameter คือ การระบุว่า ฟังก์ชันนั้นจะรับ Argument อะไรบ้าง

ในการเขียนโปรแกรม เราอาจจะไม่ได้คิดครอบคลุมในทุกเคสที่เป็นไปได้ทั้งหมด ในบางครั้งเราอาจจะอยากเปิดช่องไว้สำหรับ Argument ที่จะถูกใช้ในอนาคต เราสามารถทำได้โดยใช้ args, kwargs

Continue reading “args, kwargs คืออะไร สอนเขียน Function ที่ใช้ args, kwargs ตัวอย่างการใช้งาน args, kwargs ในภาษา Python – Python ep.9”

Partial Function คืออะไร สอนเขียน Partial Function ตัวอย่างการใช้งาน functools.partial ในภาษา Python – Python ep.8

Partial Function คือ การสร้างฟังก์ชันใหม่ ขึ้นมาจากฟังก์ชันที่มีอยู่ โดย Fix Parameter ส่วนหนึ่งไว้ ทำให้เราได้ฟังก์ชันใหม่ที่ต้องการ Parameter น้อยลง ทำให้ Signature ของฟังก์ชันดูเรียบง่ายขึ้นกว่าเดิม

Continue reading “Partial Function คืออะไร สอนเขียน Partial Function ตัวอย่างการใช้งาน functools.partial ในภาษา Python – Python ep.8”

Lambda Expression คืออะไร สอนเขียน Anonymous Function ตัวอย่างการใช้งาน Lambda Function ในภาษา Python – Python ep.7

Lambda Expression คือ การประกาศฟังก์ชันเล็ก ๆ ที่สร้างขึ้นมาเฉพาะกิจ ในภาษา Python เป็น Anonymous Function คือ ฟังก์ชันนิรนาม ที่ประกาศโดยไม่ได้ตั้งชื่อ การไม่ได้ประกาศฟังก์ชันอย่างเต็มรูปแบบ ความกระชับของโค้ด และการไม่ได้ตั้งชื่อ ทำให้มีข้อดี เหมาะกับใช้ซ้อนในฟังก์ชั่นอื่น

Continue reading “Lambda Expression คืออะไร สอนเขียน Anonymous Function ตัวอย่างการใช้งาน Lambda Function ในภาษา Python – Python ep.7”