Data Scientist Interview Q/A

Data Scientist Interview Q/A
Photo by Anna Shvets: https://www.pexels.com/photo/woman-in-black-blazer-sitting-being-interview-4226118/

ตัวอย่าง 10 คำถามด้านเทคนิคเรื่อง Machine Learning ที่พบบ่อยในการสัมภาษณ์งานตำแหน่ง Data Scientist

1) อธิบาย Linear Regression Model และ สมมติฐานในการนำไปใช้งาน

Regression ถือเป็น Supervised Learning อันหนึ่ง โดยที่ Model ได้รับการ Train จาก Data ที่มี Target (หรือ Label) มีเป้าหมาย คือ ประมาณค่า Function f(x) ซึ่งแต่ละ Feature มีความสัมพันธ์เป็นเชิงเส้นกับตัวแปร Target y

โดยที่ y = X*beta และ X คือ Matrix ของ Predictor Variables และ beta เป็น Vector ของ Parameters ซึ่งกำหนด Weights ของตัวแปรแต่ละตัว เพื่อใช้ทำนายตัวแปร Target

เนื่องจากการ Linear Regression เป็นหนึ่งใน Model ที่ถูกนำไปใช้บ่อยที่สุด หลาย ๆ ครั้ง จึงถูกนำไปใช้ในทางที่ผิด ดังนั้นก่อนใช้งาน ต้องตรวจสอบสมมติฐานหลัก 4 ข้อ เพื่อป้องกันผลลัพธ์ที่ผิดพลาด

  • Linearity: ความสัมพันธ์ระหว่าง Feature และ ตัวแปร Target เป็นแบบเส้นตรง
  • Homoscedasticity: ความแปรปรวนของ Residuals เป็นค่าคงที่
  • Independence: Observations ทั้งหมดเป็นอิสระจากกัน
  • Normality: Distribution ของ Y ถูกสมมติว่าเป็น Normal

คำถามนี้ จำเป็นต้องรู้มากกว่า การ Import จาก Scikit-Learn และ นำมาใช้งาน ในการสัมภาษณ์ จะพิจารณาว่าผู้สมัครมีความเข้าใจอย่างลึกซึ้ง เกี่ยวกับวิธีการทำงานของ Model สมมติฐาน และ Evaluation Metrics ที่แตกต่างกัน อาจมีการพูดถึง Use Cases ที่ใช้งานจริง และการนำทฤษฎีไปประยุกต์ใช้ในทางปฏิบัติ

Photo by Pixabay: https://www.pexels.com/photo/person-drawing-line-2097/

2) อธิบายแรงบันดาลใจเบื้องหลังของ Random Forest และ บอกเหตุผลว่าทำไมถึงดีกว่า Decision Tree

เบื้องหลังของ Random Forest หรือ Ensemble Models สามารถอธิบายง่าย ๆ โดยใช้ตัวอย่างต่อไปนี้ สมมติว่ามีปัญหาที่ต้องแก้ไข เราถามปัญหานี้กับคน 100 คน หลังจากที่รวบรวมคำตอบทั้งหมด จะพบว่าความคิดเห็นโดยส่วนใหญ่ใกล้เคียงกับวิธีแก้ปัญหาที่แท้จริง เรียกว่า "Wisdom of the crowd" การใช้ Random Forest จึงเป็นการนำ Weak Learners (ML Models) คือ Decision Trees หลาย ๆ ต้น และ รวบรวมผลลัพธ์ เพื่อให้ได้การ Predict ที่ดี โดยลดการพึ่งพาชุด Features เฉพาะ

  • สำหรับ Regression จะใช้ค่าเฉลี่ย
  • สำหรับ Classification จะใช้ Majority Vote จาก Classifiers

โดยทั่วไป ควรทราบว่าไม่มี Algorithms ใดดีกว่ากัน ขึ้นอยู่กับ Use Cases และ Dataset ที่ใช้ (ดูเพิ่มเติมเรื่อง No Free Lunch Theorem) นอกจากนี้ยังมีเหตุผลว่าทำไม Random Forest มักจะให้การ Predict ที่ดีกว่า Decision Tree เพียงต้นเดียว

  • Decision Tree มีแนวโน้มที่จะ Overfitting มากกว่า ในขณะที่ Random Forest ทำงานกับ Unseen Data ได้ดีกว่า เนื่องจากใช้การสุ่มในการเลือก Features และ Sample Data ดังนั้น Random Forest จึงมีความแปรปรวนต่ำกว่าเมื่อเปรียบเทียบกับ Decision Tree และลดข้อผิดพลาดอันเนื่องมา Bias
  • โดยทั่วไป Ensemble Models เช่น Random Forest ทำงานได้ดีกว่า เนื่องจากเป็นการรวมกันของ Models ต่างๆ (เป็นการรวมของ Decision Trees ในกรณีของ Random Forest) โดยใช้แนวคิดของ "Wisdom of the crowd”
Photo by Min An: https://www.pexels.com/photo/people-silhouette-during-sunset-853168/

3) อธิบาย ความเหมือน และ ความแตกต่าง ระหว่าง Gradient Boosting และ Random Forest รวมไปถึง ข้อดี ข้อเสีย ของแต่ละแบบ

ความเหมือน คือ

  • ทั้ง 2 Algorithms อยู่บนพื้นฐานของ Decision Tree
  • ทั้ง 2 Algorithms เป็น Ensemble Approach

ความแตกต่าง คือ

  • Random Forest ถือเป็น Bagging คือ Decision Tree แต่ละอันจะทำงานแบบ Parallel และ ผลลัพธ์จะถูก Aggregate ใน ขั้นตอนสุดท้าย (Averaging หรือ Majority Vote) ในทางกลับกัน Gradient Boosting เป็นการทำงานแบบ Series Sequential โดยที่ Tree แต่ละอันจะพยายาม Minimized Error ของอันก่อนหน้า
  • สำหรับ Random Forest การสร้าง Tree แต่ละอัน เป็นอิสระจากกัน สำหรับ Gradient Boosting การสร้าง Tree จะขึ้นกับอันก่อนหน้า

ในส่วนของข้อดีและข้อเสีย อาจขึ้นกับ Use Cases ด้วยเช่นกัน แต่สามารถอธิบายคร่าว ๆ ดังนี้

ข้อดีของ Gradient Boosting คือ
  • อาจแม่นยำกว่า Random Forest เพราะในการ Train จะลด Error ของ Tree ก่อนหน้า
  • นอกจากนี้ยังสามารถจับ Patterns ที่ซับซ้อนในข้อมูล
  • ดีกว่า Random Forest เมื่อใช้กับ Imbalanced Dataset
ข้อดีของ Random Forest คือ
  • มีแนวโน้มที่จะ Overfitting น้อยกว่า เมื่อเทียบกับ Gradient Boosting
  • สามารถ Train ได้เร็วกว่า เนื่องจากเป็นรูปแบบ Parallel และ อิสระ ต่อกัน

ยิ่งไปกว่านั้น Gradient Boosting ยังมีจุดอ่อนดังนี้

  • เนื่องจากการมุ่งเน้นไปที่ Error ในระหว่างการ Train โดยการทำซ้ำ และ ขาดความเป็นอิสระในการสร้าง Tree จึงมีแนวโน้มที่จะ Overfitting หากข้อมูลมี Noise การทำ Boosted Trees อาจจะ Overfitting และ เริ่มที่จะ Model ค่า Noise แทน
  • การ Train อาจใช้เวลานานขึ้น เนื่องจาก Trees ถูกสร้างขึ้นตามลำดับ
  • การทำ Hyper-parameters Tuning ซับซ้อนกว่า Random Forest
Photo by Connor Danylenko: https://www.pexels.com/photo/forest-under-brown-sky-1414535/

4) อธิบายการทำงานของ K-Means Clustering และ วิธีการหา Optimal K

K-Means เป็น Clustering Algorithm ที่รู้จักกันดีและนิยมใช้ เนื่องจากประยุกต์ใช้ในทางปฏิบัติได้ง่าย การทำงานของ Algorithm ดังนี้

  • เริ่มต้นด้วยการแบ่ง Data ออกเป็น K Clusters โดยการสุ่ม Centroid ของแต่ละ Cluster และกำหนดให้ Data Points ให้อยู่กับ Centroid ที่ใกล้ที่สุด
  • ในแต่ละ Iteration ของการคำนวณ จะทำการ Updates Centroids โดยพิจารณาจากค่า Mean ของ Data Points ที่อยู่ Cluster เดียวกัน
  • กระบวนการจะทำซ้ำ จนกว่าจะ Convergence (หรือ ถึงค่า Iterations สูงสุดที่กำหนด)

Elbow Method เป็นวิธีที่รู้จักกันดี เพื่อใช้หาค่า Optimal K เบื้องหลังเทคนิคนี้ คือ กรณีที่มี 1-2 Clusters จะมี Distortion ค่อนข้างมาก อย่างไรก็ตาม เมื่อเพิ่มค่า K จะค่อย ๆ ลดลง จากกราฟในรูป แกน y คือ Distortion และ แกน x คือ จำนวน Clusters ในรูปนี้ จุดที่เหมาะสม คือ K=3 เป็นจุดข้อศอก เมื่อเพิ่ม K จะลด Distortion ได้ไม่มากแล้ว แต่ก่อนหน้านี้จะลดลงอย่างมีนัยยะ

Line chart

Description automatically generated


5) Dimensionality Reduction คือ อะไร และ อธิบาย Method ที่ใช้ในการทำ

Dimensionality Reduction จะช่วยลดความซับซ้อน หรือ มิติของข้อมูล โดยเสียข้อมูลสำคัญเพียงเล็กน้อย การ Decomposite ข้อมูลออกเป็น Dataset ที่มีขนาดเล็กลง (ลด Dimensions หรือ Features) ยังมีประโยชน์ในการสรุป และ Visualization เช่น สามารถลด Dimensions เพื่อ Visualize ใน 2D หรือ 3D Space ได้

วิธีหนึ่งที่ใช้กันทั่วไป คือ Principal Component Analysis (PCA) ซึ่งจะรวมตัวแปรที่มี High Correlated ไปเป็นโครงสร้างชุดใหม่ที่มีขนาดเล็กกว่า เรียกว่า Principal Components ซึ่งจับความแปรปรวน (Variance) ส่วนใหญ่ในข้อมูล

  • Algorithm จะค้นหาจำนวนขนาดเล็กของ Independent Linear Combinations สำหรับแต่ละแถว เพื่ออธิบาย Variance
  • ดังนั้น Algorithm จะดำเนินการค้นหาส่วนประกอบที่มี Variance สูงสุด จากนั้น อันที่สองที่ไม่มีความสัมพันธ์กับอันแรก และ มีค่า Variance สูงสุดเป็นอันดับสอง เช่นนี้ไปเรื่อย ๆ โดยทั่วไป จำนวนจะขึ้นอยู่กับที่เรากำหนด เพื่อใช้บ่งบอกถึงเปอร์เซนต์ของ Variance ที่ Principal Components สามารถอธิบายได้

6) L1 และ L2 Regularization คืออะไร และ มีความแตกต่างกันอย่างไร

Regularization เป็นเทคนิคที่ใช้เพื่อหลีกเลี่ยง Overfitting โดยพยายามทำให้ Model ซับซ้อนน้อยลง วิธีหนึ่งในการทำ Regularization คือ การเพิ่ม Weight ไปที่ Loss Function เพื่อที่จะ Minimize Weight ที่ไม่สำคัญให้น้อยที่สุด

  • ใน L1 Regularization จะเพิ่ม Sum of the absolute of the weights ไปที่ Loss Function
  • ใน L2 Regularization จะเพิ่ม Sum of the squares of the weights ไปที่ Loss Function

ดังนั้น ทั้ง L1 และ L2 Regularization จึงเป็นวิธีการลด Overfitting แต่เพื่อให้เข้าใจความแตกต่าง สามารถดูจากสูตรการคำนวณ ดังนี้

Loss (L2): Cost Function + L * weight²

Loss (L1): Cost Function + L * | weight |

โดยที่ L คือ Regularization Parameter

7) ความแตกต่างของ Overfitting และ Underfitting คืออะไร และ สามารถหลีกเลี่ยงได้อย่างไร

Overfitting หมายถึง Model ทำงานได้ดีกับ ข้อมูล Train แต่ไม่ Generalize ดีพอ สำหรับ ข้อมูล Test/Validation สังเกตว่า ความผิดพลาด (Error) ที่ข้อมูล Train จะน้อย แต่ ความผิดพลาดที่ข้อมูล Test/Validation จะมาก

Overfitting เกิดขึ้นเมื่อ Model ซับซ้อนเกินไป เมื่อเทียบกับขนาด และ คุณภาพของข้อมูล ซึ่งจะส่งผลให้เกิดการเรียนรู้เกี่ยวกับ Pattern ใน Noise Data หรือ เรียนรู้ Patterns ที่เฉพาะเจาะจงเกินไป ทำให้ Model ไม่สามารถสรุปเกี่ยวกับ ข้อมูล (หรือ Instances) ใหม่ ๆ ที่เข้ามาได้

วิธีแก้ปัญหาสำหรับ Overfitting

  • ลดความซับซ้อนของ Model โดยการลดจำนวน Features หรือ ใช้ Regularization Parameters
  • รวบรวมข้อมูล Train เพิ่มเติม
  • ลด Noise ในข้อมูล Train โดยใช้ Cleaning Techniques
  • ลดข้อมูล Mismatch โดยใช้ Pre-processing Techniques
  • ใช้ Validation Data ในการ Detect เมื่อเริ่มต้นที่จะ Overfitting และ หยุดการ Train

Underfitting คือ ตรงข้ามกับ Overfitting กล่าวคือ Model มีความ Simple มากเกินไปในการที่จะเรียนรู้ Patterns จากข้อมูล Train สังเกตว่า ความผิดพลาด (Error) ที่ข้อมูล Train จะมาก และ ความผิดพลาดที่ข้อมูล Test/Validation จะมากเช่นกัน

วิธีแก้ปัญหาสำหรับ Underfitting

  • เลือก Model ที่ซับซ้อนมากขึ้น พร้อม Parameters ที่มากขึ้น
  • ลด Regularization Parameter หากกำลังใช้งานอยู่
  • ใส่ Features ที่ดีขึ้นให้กับ Learning Algorithm โดยการทำ Feature Engineering
Photo by Tima Miroshnichenko: https://www.pexels.com/photo/couturier-measuring-a-man-s-arm-6766286/

8) Bias และ Variance ใน Machine Learning Model คือ อะไร และ อธิบาย Bias-Variance Trade-off

เป้าหมายของ Supervised Machine Learning Model คือ การประมาณ Mapping Function (f) ที่ทำนายตัวแปร Target (y) เมื่อได้รับ Input (x) โดยที่ ข้อผิดพลาดในการทำนาย แบ่งได้เป็น 3 ส่วน

  • Bias คือ เป็นปรากฏการณ์ที่บิดเบือนผลลัพธ์ของ Algorithm ถือเป็นข้อผิดพลาดที่เกิดขึ้นใน Machine Learning Model เนื่องจากสมมติฐานที่ไม่ถูกต้องในกระบวนการ หาก Bias Error ต่ำเท่าใด Model ก็ยิ่งดีเท่านั้น อย่างไรก็ตาม แต่หาก Bias Error สูง แสดงว่า Model กำลัง Underfitting กับข้อมูล Train
  • Variance คือ ปริมาณที่ค่าประมาณของ Target Function จะเปลี่ยนแปลงหากใช้ข้อมูล Train ที่แตกต่างกัน โดยที่ Target Function ถูกประเมินจากข้อมูล Train ด้วย Machine Learning Model ดังนั้น เป็นไปได้ว่า Algorithm จะมีความแปรปรวน (Variance) บ้าง ตามหลักการแล้ว ไม่ควรเปลี่ยนมากเกินไป หากเปลี่ยนชุดข้อมูล Train ในกรณีนี้ หาก Variance Error สูง แสดงว่า Model กำลัง Overfitting กับข้อมูล Train
  • ข้อผิดพลาดที่ลดไม่ได้ (Irreducible Error) คือ ข้อผิดพลาดที่เกิดขึ้นจากการเลือกปัญหา และ อาจเกิดจากปัจจัยต่างๆ เช่น Unknow Variables ซึ่งส่งผลต่อ Mapping ระหว่าง Input และ Output Variables ทำให้ไม่สามารถลดข้อผิดพลาดนี้ได้ ไม่ว่าจะใช้ Algoritms ใดก็ตาม


Supervised Machine Learning Algorithms มีเป้าหมายเพื่อให้เกิด Low Bias และ Low Variance เพื่อให้ Algorithm สามารถทำนายได้อย่างมีประสิทธิภาพ การกำหนด Parameters ของ ML Algorithms มักเป็นการ Balance ระหว่าง Bias และ Variance

เช่น หากต้องการทำนายราคาที่อยู่อาศัย

Model ที่มี Bias สูง แต่ Variance ต่ำ เช่น Linear Regression จะนำไปใช้ได้ง่าย อย่างไรก็ตาม มันจะ Oversimplify ปัญหา ในที่นี้ ราคาบ้านที่ทำนายจะห่างไกลจากมูลค่าตลาด แต่ค่า Variance ราคาที่ทำนายเหล่านี้จะต่ำ

ในทางกลับกัน Model ที่มี Bias ต่ำ แต่ Variance สูง เช่น Neural Network จะทำให้นำไปสู่การทำนายราคาบ้านที่ใกล้เคียงกับมูลค่าตลาดมากขึ้น แต่การทำนายจะแตกต่างกันไปตาม Input Features

9) อธิบาย Precision, Recall, F1 และ Trade-off ของสิ่งเหล่านี้

Precision และ Recall เป็น Evaluation Metrics ของ Classification ที่นอกเหนือจาก Accuracy

พิจารณา Classification ที่เป็น Multi-classes Metrics ทั้งสองถูกกำหนดไว้สำหรับ Class เฉพาะ ไม่ใช่ของ Model โดยทั่วไป

  • Precision คือ เปอร์เซ็นต์ของการทำนายได้อย่างถูกต้องของ Class A ต่อการทำนายทั้งหมดซึ่งถูกจัดเป็น Class A ซึ่งคล้ายกับ Accuracy แต่ใช้กับ Class เดียว ดังนั้น Precision อาจช่วยให้คุณตัดสินได้ว่าการทำนายที่เกิดขึ้นนั้นน่าจะถูกต้องเพียงใด
  • Recall คือ เปอร์เซ็นต์ของการทำนายที่ Classify ได้อย่างถูกต้องของ Class A จาก Class A ทั้งหมด (Sample) ที่มีอยู่ใน Test Set ซึ่งแสดงให้เห็นว่า Model สามารถตรวจจับ Class ที่เป็นปัญหาได้ดีเพียงใด

ในความเป็นจริง มักมี Trade-off ระหว่าง Precision และ Recall เสมอ เช่น

  • การ Classify ผู้ป่วยโรคมะเร็งจากคนที่มีสุขภาพดี การปรับ Model ให้มีการ Recall สูง จะทำให้ Model สามารถจับผู้ป่วยมะเร็งได้เกือบทั้งหมด แต่ในขณะเดียวกัน จำนวนผู้ป่วยมะเร็งที่วินิจฉัยผิดพลาดก็จะเพิ่มขึ้น ซึ่งทำให้คนที่มีสุขภาพดีได้รับการรักษาที่อันตรายและมีค่าใช้จ่ายสูง
  • ในทางกลับกัน การปรับ Model ให้มี Precision สูง จะทำให้ Model มีความมั่นใจในการวินิจฉัย และลดจำนวนผู้ที่เป็นโรคนี้อย่างแท้จริง แต่ก็จะนำไปสู่ผลลัพธ์ที่ร้ายแรงเนื่องจากคนป่วยจะไม่ได้รับการรักษา

ดังนั้น จึงเป็นเรื่องสำคัญที่จะต้องเพิ่มประสิทธิภาพทั้ง Precision และ Recall ซึ่งความสำคัญของแต่ละเรื่อง จะขึ้นอยู่กับ Applications ที่เรากำลังทำงานอยู่ นำไปสู่สิ่งที่เรียกว่า F1 Score คือ ค่าเฉลี่ย Harmonic ของ Precision และ Recall ทำการคำนวณโดยใช้สูตรดังนี้

F1 = 2* (Precision*Recall) / (Precision + Recall)

F1 Score จะใช้เมื่อ Precision และ Recall มีความสำคัญเท่ากัน

Photo by Anna Shvets: https://www.pexels.com/photo/photo-of-doctor-holding-x-ray-result-4225880/

10) บอกถึง 3 วิธี ในการจัดการ Missing หรือ Corrupted Data ใน Dataset

โดยทั่วไป ข้อมูลจริงมักมี Missing Values มากมาย สาเหตุอาจเกิดจากข้อมูลเสียหายหรือไม่สามารถบันทึกข้อมูลได้ การจัดการ Missing Data ที่ขาดหายไปมีความสำคัญมากในระหว่างการทำ Pre-processing เนื่องจาก Machine Learning Algorithms จำนวนมาก ไม่สามารถรองรับ Missing Values ได้ มีหลายวิธีในการจัดการ แต่จะมุ่งเน้นไปที่ 3 วิธีที่พบบ่อย

(1) การลบ Row ที่มี Missing Values

วิธีนี้ คือ การลบ Row หรือ Column ที่มี Missing Values เป็นวิธีที่ง่ายและรวดเร็ว อย่างไรก็ตาม มันจะทำให้ข้อมูลสูญหายจำนวนมากขึ้นอยู่กับปริมาณข้อมูลที่ขาดหายไป ดังนั้น จึงเลือกใช้วิธีนี้เมื่อ Missing Values มีจำนวนเปอร์เซ็นต์เล็กน้อยเมื่อเทียบกับข้อมูลทั้งหมด

(2) ใช้ Machine Learning Algorithms ที่รองรับ Missing Values

Algorithms บางอัน ค่อนข้างมีประสิทธิภาพ เมื่อทำงานกับ Missing Values เช่น K-NN Algorithm สามารถละเว้น Column จากการวัดระยะทาง เมื่อมี Missing Values หรือ Naive Bayes สามารถรองรับ Missing Values เมื่อทำการทำนาย หรือ Algorithms อื่น ๆ ที่สามารถจัดการ Dataset ที่มี Missing Values หรือ ค่า Null ได้ คือ Random Forest เนื่องจากสามารถทำงานกับข้อมูลที่ไม่เป็นเชิงเส้น และ Categorical Data ได้ ปัญหา คือ การใช้งานใน Scikit-learn ไม่รองรับการจัดการค่า Missing Values ดังนั้น จะต้องทำการเขียน Code เอง

(3) Missing Value Imputation

Data Imputation หมายถึง การแทนที่ค่าโดยประมาณสำหรับ Missing Values หรือ Inconsistent Data ใน Dataset มีหลายวิธีในการ Imputation

วิธีที่ง่ายที่สุด คือ แทนที่ Missing Values ด้วยค่าที่ซ้ำกันมากที่สุด ใน Row หรือ Column

อีกวิธีหนึ่ง คือ การใช้ค่าเฉลี่ย (Mean), ค่ามัธยฐาน (Median), หรือ ฐานนิยม (Mode) ใน Row หรือ Column ข้อดี คือ สามารถทำได้ง่าย และ รวดเร็ว แต่อาจส่งผลให้เกิด Data Leakage และ ไม่คำนึงถึง Co-variance ระหว่าง Features ทางเลือกที่ดีกว่า คือ การ Machine Learning Model เพื่อเรียนรู้ Pattern ระหว่าง Data และ คาดการณ์ Missing Values โดยไม่มี Data Leakage และ พิจารณา Co-variance ระหว่าง Features ด้วย ข้อเสีย คือ ความซับซ้อนในการคำนวณ โดยเฉพาะสำหรับ Dataset ขนาดใหญ่

Photo by Pixabay: https://www.pexels.com/photo/white-jigsaw-puzzle-illustration-262488/

******

ข้อมูลอ้างอิง - https://365datascience.com/career-advice/job-interview-tips/machine-learning-interview-questions-and-answers/