5 Python Libraries Every Data Scientist Should Know About

19-Apr-24

คัมภีร์เทพ IT

See the original english version Click here!

 

บทความนี้มีประโยชน์อย่างยิ่ง หากคุณเป็น Data Scientist หรือแม้แต่ Machine Learning Engineer ไม่ว่าจะในระดับเริ่มต้นหรือระดับกลางก็ตาม เพราะนี่คือ 5 Python Libraries ที่ Data Scientist ทุกคนควรรู้จักไว้ เพราะนอกจากมันช่วยให้คุณได้เปรียบคู่แข่งเวลาสมัครงานแล้ว ยังช่วยลดความซับซ้อนของ Machine Learning Development Process อีกด้วย

1. MLFlow — Experiment และ Model Tracking

Image by author, examples from https://mlflow.org

ลองนึกภาพคุณเป็น Machine Learning Developer ที่ทำงานใน Project เพื่อสร้าง Model ที่คาดการณ์การเลิกใช้งานของลูกค้า คุณเริ่มต้นด้วยการสำรวจข้อมูลของคุณโดยใช้ Jupyter Notebooks, ทดลองกับ Algorithms กับ Hyperparameters ต่าง ๆ ในขณะที่คุณดำเนินการอยู่นั้น Notebooks ของคุณจะเต็มไปด้วย Code, Results และ Visualizations มากขึ้น ทำให้การติดตามความคืบหน้าของคุณ, การระบุว่าสิ่งใดที่ได้ผลหรือไม่ได้ผล หรือแม้แต่การทำซ้ำกับผลลัพธ์ที่ดีที่สุดของคุณ กลายเป็นเรื่องที่ทำได้ยากมากขึ้น

นี่ก็คือที่มาของ MLflow โดย MLflow เป็น Platform ที่ช่วยให้คุณสามารถจัดการกับ ML Experiments ตั้งแต่ต้นจนจบ, ทำให้มั่นใจได้ถึงความสามารถในการตรวจสอบย้อนกลับ (Traceability) และการทำซ้ำ (Reproducibility) โดยการมี Centralized Repository สำหรับจัดเก็บ Code, Data และ Model Artifacts, พร้อมด้วย Tracking System ที่จะบันทึก Experiments ทั้งหมดของคุณ รวมถึง Hyperparameters, Metrics และ Outputs

และนี่ก็คือ วิธีที่ MLflow จะช่วยคุณหลีกเลี่ยงข้อผิดพลาดของการใช้ Jupyter Notebooks เพียงอย่างเดียว:

  • Centralized Repository: MLflow ช่วยจัดระเบียบ Code, Data และ Model Artifacts ของคุณให้เป็นระเบียบและเข้าถึงได้ง่าย คุณสามารถค้นหา Resources ที่ต้องการได้อย่างรวดเร็วโดยที่ไม่ต้องหลงทางอยู่ในเขาวงกตของ Notebooks
  • Experiment Tracking: MLflow สามารถบันทึกทุก Experiment รวมถึง Code, Data และ Hyperparameters ที่ใช้ ซึ่งจะทำให้คุณสามารถเปรียบเทียบ Experiments ต่าง ๆ ได้อย่างง่ายดาย และระบุสิ่งที่นำไปสู่ผลลัพธ์ที่ดีที่สุด
  • Reproducibility: MLflow จะช่วยให้สามารถ Reproduce Models ของคุณให้ดีที่สุดด้วย Code, Data และ Environment ที่เหมือนกันทุกประการ ซึ่งเป็นสิ่งสำคัญในการรับรองเรื่อง ความสม่ำเสมอและความน่าเชื่อถือของผลลัพธ์ของคุณ

ดังนั้น หากคุณจริงจังกับการสร้าง Machine Learning Models ที่มีประสิทธิภาพ ให้ละทิ้งความวุ่นวายใน Jupyter Notebooks แล้วหันมาลองใช้ความสามารถของ MLflow ดู

2. Streamlit — Web Applications ที่รวดเร็วและสวยงาม

Image by author

Streamlit เป็น Frontend Framework ที่ได้รับความนิยมมากที่สุดสำหรับ Data Science มันเป็น Open-Source Python Framework ที่ช่วยให้ Users สามารถสร้าง Interactive Data Apps ได้อย่างรวดเร็วและง่ายดาย ซึ่งทำให้มีประโยชน์อย่างยิ่งสำหรับ Data Scientists และ Machine Learning Engineers ที่ยังไม่มีความรู้ครอบคลุมทางด้าน Web Development มากนัก

ด้วย Streamlit ตัว Developers เองสามารถสร้างและแบ่งปัน User Interfaces ที่น่าสนใจ และ Deploy Models ต่าง ๆ ได้โดยที่ไม่ต้องอาศัยประสบการณ์หรือความรู้ด้าน Front-end ในเชิงลึกมากนัก Framework ตัวนี้เป็น Open-Source ซึ่งสามารถใช้งานได้ฟรี ซึ่งช่วยให้สามารถสร้าง Web Apps ที่สามารถแชร์ได้ภายในไม่กี่นาที

หากคุณมี Project ที่กำลังทดลองทำและเกี่ยวข้องกับ Machine Learning มันเป็นไอเดียที่ดีที่จะเพิ่ม Interface ให้กับ Project นั้นโดยใช้ Streamlit คุณเพียงใช้เวลากับมันไม่นาน จะมี Templates มากมายที่พร้อมใช้ และคุณก็สามารถทำให้ Frontend ของคุณเสร็จภายในไม่กี่นาที นอกจากนี้ยังแชร์ได้ง่ายมาก นั่นหมายความว่า มันจะดูดีในเรซูเม่ของคุณอย่างแน่นอน

3. FastAPI — Deploy Models ได้อย่างรวดเร็วและง่ายดาย

Image by author

เมื่อคุณทำการ Train และ Validate Model ของคุณแล้ว คุณจะต้อง Deploy พวกมันเพื่อให้ Applications อื่นสามารถใช้งานได้ จึงเป็นที่มาของ FastAPI

FastAPI เป็น Web Framework ที่มีประสิทธิภาพสูงสำหรับการสร้าง RESTful API มันมีจุดเด่นในด้านความเรียบง่าย ใช้งานง่าย และรวดเร็ว จึงทำให้ FastAPI เป็นตัวเลือกที่เหมาะอย่างยิ่งสำหรับการ Deploy Machine Learning Models ไปบน Production

นี่คือเหตุผลที่ Data Scientist และ Machine Learning Engineer ควรเรียนรู้ FastAPI:

  • ความรวดเร็ว: FastAPI นั้นเร็วอย่างเหลือเชื่อ มันใช้ Asynchronous Programming Model สมัยใหม่ที่ทำให้มีประสิทธิภาพในการจัดการ Requests หลายรายการพร้อมกัน นี่เป็นสิ่งจำเป็นสำหรับการ Deploy Machine Learning Models ที่ต้องประมวลผลข้อมูลในปริมาณมาก
  • ความเรียบง่าย: FastAPI นั้นง่ายต่อการเรียนรู้และใช้งาน มันมี Syntax ที่ชัดเจนและกระชับ ซึ่งทำให้ง่ายต่อการเขียน Code ที่ Clean และ Maintain ได้ ทำให้มันมีความสำคัญต่อ Data Scientists และ Machine Learning Engineers ที่ไม่จำเป็นต้องมีประสบการณ์ใน Web Development
  • ใช้งานง่าย: FastAPI มีคุณสมบัติมากมายที่ทำให้ง่ายต่อการสร้างและ Deploy APIs ตัวอย่างเช่น มี Built-in Support สำหรับการจัดทำ Document โดยอัตโนมัติ, Data Validation และ Error Handling ซึ่งจะช่วยประหยัดเวลาของคุณ อีกทั้งยังช่วยให้ Machine Learning Engineers สามารถ Focus ไปที่งานหลักของการสร้างและ Deploy Models ได้ 
  • พร้อมสำหรับ Production: FastAPI ได้รับการออกแบบมาเพื่อการใช้งานบน Production มันมี Features ต่าง ๆ เช่น การรองรับ Backends หลายรายการ, การรักษาความปลอดภัย และ Deployment Tools ซึ่งทำให้มันเป็นตัวเลือกที่เชื่อถือได้สำหรับการ Deploy Machine Learning Models

โดยสรุป FastAPI เป็นเครื่องมืออเนกประสงค์ที่ทรงพลัง ซึ่งสามารถใช้เพื่อ Deploy Machine Learning Models ไปบน Production ได้ จากการที่มันใช้งานได้สะดวก รวดเร็ว และพร้อมสำหรับการขึ้น Production จึงทำให้มันเป็นตัวเลือกที่ดีเยี่ยมสำหรับ Data Scientists และ Machine Learning Engineers ที่ต้องการให้ผู้อื่นสามารถเข้าถึง Models ของพวกเขาได้

4. XGBoost — วิธีที่เร็วและดีกว่าในการทำนายข้อมูลเชิงตาราง

Image by author, source 1 and source 2

XGBoost เป็น Machine Learning Algorithm ที่มีความสามารถยอดเยี่ยม โดนมันขึ้นชื่อในเรื่อง ความแม่นยำ, ความรวดเร็ว และความสามารถในการปรับ Scale มันใช้หลัก Gradient Boosting Framework ซึ่งพูดง่าย ๆ ก็คือ คุณใช้ Model ขนาดเล็กหลาย ๆ ตัว เช่น Random Forest คุณได้รวม Models เหล่านั้นให้เป็น Model ขนาดใหญ่ และในที่สุดคุณจะได้ Model ที่เร็วกว่า (ขอยกตัวอย่าง ในกรณีเมื่อเทียบกับ Neural Net) แต่ในขณะเดียวกัน มันก็สามารถปรับ Scale ได้และมีแนวโน้มที่เกิดปัญหา Overfit ไม่มากนัก

นี่คือเหตุผลที่ Data Scientists และ Machine Learning Engineers ควรเรียนรู้ XGBoost:

  • ความแม่นยำ: XGBoost เป็นหนึ่งใน Machine Learning Algorithms ที่แม่นยำที่สุด มันถูกใช้เพื่อเอาชนะการแข่งขัน Machine Learning หลายครั้ง และมันได้รับการจัดอันดับให้เป็นหนึ่งใน Algorithms อันดับต้นๆ สำหรับ Tasks ต่าง ๆ อย่างต่อเนื่อง
  • ความเร็ว: XGBoost ก็เร็วมากเช่นกัน มันสามารถ Train และคาดการณ์ Datasets ขนาดใหญ่ได้อย่างรวดเร็วและมีประสิทธิภาพ จึงทำให้มันเป็นตัวเลือกที่ดีสำหรับ Applications ที่ให้ความสำคัญกับเรื่องความรวดเร็ว เช่น Fraud Detection หรือ Financial Modeling แบบ Real-Time
  • ความสามารถในการปรับ Scale: XGBoost สามารถปรับ Scale ได้สูง มันสามารถรองรับ Datasets ขนาดใหญ่และ Models ที่ซับซ้อนได้โดยไม่ต้องลดความแม่นยำลง จึงทำให้มันเป็นตัวเลือกที่ดีสำหรับ Applications ที่กังวลในเรื่องปริมาณข้อมูลหรือความซับซ้อนของ Model

หากคุณมี Task ที่มีข้อมูลอยู่ในเชิงตาราง (เช่น ทำนายราคาบ้านตามจำนวนห้อง หรือคำนวณโอกาสที่ลูกค้าจะซื้อผลิตภัณฑ์ตาม ข้อมูลการซื้อ/ข้อมูล Account ครั้งล่าสุด) XGBoost คือสิ่งที่คุณควรลองทำก่อน ก่อนที่จะหันไปใช้ Nural Nets ด้วย Keras หรือ PyTorch

5. ELI5 — ทำให้ Model ของคุณสามารถตีความและมีความโปร่งใสมากขึ้น

Image by author and from source 1source 2

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

และจะเป็นอย่างไรหากลูกค้า/เจ้านายของคุณถามคุณว่า Model ของคุณได้รับคำตอบที่ต้องการได้อย่างไร และอีกครั้ง คุณก็ไม่รู้คำตอบ หรือบางทีคุณอาจต้องการทราบว่า Parameters ใดที่สำคัญที่สุดระหว่างการ Train และ Parameters ใดที่เพิ่มค่า Noise เข้าไป

คำถามเหล่านี้ทั้งหมด สามารถตอบได้โดยใช้ ELI5 ซึ่ง Library นี้จะช่วยให้คุณทำให้ Model ของคุณมีความโปร่งใส, สามารถตีความ และเข้าใจได้ง่ายขึ้น แต่คุณอาจได้รับข้อมูลเพิ่มเติมไม่เพียงแค่เกี่ยวกับ Model เท่านั้น แต่ยังรวมถึงData, Training process, Weights Distribution และ Input Parameters อีกด้วย นอกจากนั้น คุณยังสามารถ "Debug" Model ของคุณและรับข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับ Architecture ที่อาจทำงานได้ดีกว่า และ Model ปัจจุบันมีปัญหาอะไรบ้าง

ปัจจุบัน ELI5 มีการรองรับ Library เช่น Scikit-Learn, Keras, XGBoost และอื่น ๆ อีกมากมายแล้ว คุณสามารถ Debug Model ของคุณเพื่อจัดหมวดหมู่ของรูปภาพ, ข้อความ และข้อมูลเชิงตารางได้

สรุป

เราได้สำรวจ Data Science Frameworks ที่มีประโยชน์ทั้ง 5 ตัวแล้ว หากคุณเข้าใจทุก Libraries อย่างน้อยสักเพียงเล็กน้อย คุณจะได้รับประโยชน์หลายเรื่อง เช่น:

  1. เมื่อเปรียบเทียบกับ Data Scientist คนอื่น ๆ คุณจะมีโอกาสได้งานมากขึ้น เนื่องจากคุณมีทักษะที่หลากหลายในด้านต่าง ๆ ของ Machine Learning
  2. คุณจะสามารถทำงานบน Full-stack Projects ได้ เนื่องจากคุณไม่เพียงสามารถพัฒนา Model ของคุณได้เท่านั้น แต่ยัง Deploy มันด้วย FastAPI Backend และช่วยให้ User สามารถโต้ตอบกับ Model ใน Streamlit Frontend ได้
  3. คุณจะไม่หลงทางใน ความยุ่งเหยิงของ Jupyter Notebook เนื่องจาก Machine Learning Experiments ทั้งหมดของคุณจะสามารถติดตามและทำซ้ำได้ด้วย MLFlow และ Models ทั้งหมดจะถูกกำหนด Version ที่ถูกต้อง
  4. ข้อมูลเชิงตาราง จะไม่ใช่ปัญหาสำหรับคุณ เนื่องจากคุณรู้วิธี Train Model ที่ทั้ง สามารถปรับ Scale ได้, มีความรวดเร็วและแม่นยำ โดยใช้ XGBoost
  5. และ Models ส่วนใหญ่ก็ไม่ใช่ "กล่องดำ" สำหรับคุณอีกต่อไป เนื่องจากคุณสามารถเข้าใจ Models เหล่านี้ได้ลึกซึ้งยิ่งขึ้นด้วย ELI5 โดยแก้ไขกระบวนการคิดและอธิบายการคาดการณ์ของพวกมัน

ขอแนะนำให้คุณเพิ่มทักษะที่มีประโยชน์เหล่านี้ใน Skill Set ของคุณ เพราะ Libraries เหล่านี้จะช่วยทำให้ชีวิตของคุณง่ายขึ้นและ Coding อย่างมีความสุขมากขึ้น

ที่มา: https://python.plainenglish.io/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด