Road Map Machine Learning PDF
Document Details
Uploaded by Deleted User
Tags
Summary
This document provides a roadmap for learning machine learning, covering basic Python, data structures, libraries, data cleaning, data exploration, data visualization, supervised and unsupervised learning, and deep learning. It also touches on related concepts such as matrices, projects, and competitions. The document is mainly educational, not an exam paper.
Full Transcript
ปัญญาประดิษฐ์ (AI : Artificial Intelligence) Road Map Machine Learning - Basic Python a. ไวยากรณ์พื้นฐาน: เหมือนเรียน ก-ฮ ก่อนเขียนหนังสือ ต้องแม่นนะคะ! b. Data Structures: - List: เก็บข้อมูลแบบเรียงลำดับ เปลี่ยนแปลงได้ เหมือนชั้นวางหนังสือ หยิบง่าย จัดง่าย...
ปัญญาประดิษฐ์ (AI : Artificial Intelligence) Road Map Machine Learning - Basic Python a. ไวยากรณ์พื้นฐาน: เหมือนเรียน ก-ฮ ก่อนเขียนหนังสือ ต้องแม่นนะคะ! b. Data Structures: - List: เก็บข้อมูลแบบเรียงลำดับ เปลี่ยนแปลงได้ เหมือนชั้นวางหนังสือ หยิบง่าย จัดง่าย - Tuple: เหมือน List แต่เปลี่ยนแปลงไม่ได้ ใช้เก็บข้อมูลที่ไม่ต้องการแก้ไข เช่น วันในสัปดาห์ - Dictionary: เก็บข้อมูลแบบ Key-Value เหมือนพจนานุกรม ค้นหาข้อมูลเร็วปานสายฟ้าแล่บ! c. Libraries (อาวุธลับคู่กาย) - NumPy: จัดการข้อมูลตัวเลขแบบ Array คำนวณเร็ว เหมาะกับงาน Machine Learning ที่ต้องคำนวณเยอะๆ - Pandas: จัดการข้อมูลแบบตาราง (Data Frame) วิเคราะห์ ทำความสะอาดข้อมูล ง่าย เหมือนปอกกล้วยเข้าปาก - Matplotlib & Seaborn: เนรมิตกราฟ แสดงข้อมูลแบบเห็นภาพ สื่อสารง่าย เข้าใจไว - Data d. Data Cleaning: กำจัดข้อมูลสกปรก เช่น ข้อมูลที่หายไป ข้อมูลผิดพลาด ข้อมูลซ้ำซ้อน เหมือนเรากำจัดวัชพืช ให้เหลือแต่ต้นไม้สวยๆ งามๆ e. Data Exploration: สำรวจ ทำความรู้จักกับข้อมูล หา Patterns หา Insights เหมือนเราวิเคราะห์คู่แข่งก่อนทำธุรกิจ f. Data Visualization: แปลงข้อมูลดิบๆ ให้เป็นภาพ เข้าใจง่าย สื่อสารได้ดี - Machine Learning Algorithms (ศาสตร์แห่งการทำนายอนาคต!) g. Supervised Learning (มีครูคอยสอน 👩🏫 สบายหน่อย) - Regression (ทำนายค่าต่อเนื่อง): - Linear Regression: หาความสัมพันธ์แบบเส้นตรง 📈 เช่น ทำนายราคาบ้านจากขนาด ทำนายยอดขายจากงบโฆษณา - Polynomial Regression: หาความสัมพันธ์แบบเส้นโค้ง เพิ่มความซับซ้อน แม่นยำขึ้น เช่น ทำนายการเติบโตของประชากร - Classification (แบ่งกลุ่มข้อมูล): - Logistic Regression: แบ่งกลุ่ม 2 กลุ่ม เช่น ทำนายว่าอีเมลเป็นสแปมหรือไม่ - Decision Tree: สร้างแบบจำลองเป็นต้นไม้ 🌳 เข้าใจง่าย อธิบายได้ เช่น ทำนายว่าลูกค้าจะซื้อสินค้าหรือไม่ - Support Vector Machine (SVM): แบ่งกลุ่มข้อมูลด้วย Hyperplane เหมาะกับข้อมูลที่มี Dimension สูงๆ - Unsupervised Learning (ไม่มีครู ต้องเรียนรู้เอง 💪) - Clustering (จัดกลุ่มข้อมูล): a. K-Means Clustering: แบ่งกลุ่มตามระยะทาง เช่น แบ่งกลุ่มลูกค้าตามพฤติกรรมการซื้อ 🛍️ b. Hierarchical Clustering: สร้างแผนผังต้นไม้ แสดงลำดับชั้นของข้อมูล เช่น จัดกลุ่มพืช สัตว์ ตามสายพันธุ์ - Dimensionality Reduction (ลดจำนวนตัวแปร): c. Principal Component Analysis (PCA): ลดจำนวนตัวแปร โดยคงข้อมูลสำคัญไว้ให้มากที่สุด เพิ่มประสิทธิภาพโมเดล 🚀 - Evaluation Metrics (วัดผล ประเมินความแม่นยำ 💯) - Regression: ใช้ RMSE, MAE, R-squared วัดความแม่นยำของโมเดล ยิ่งน้อยยิ่งดี 💖 - Classification: ใช้ Accuracy, Precision, Recall, F1-score วัดประสิทธิภาพ เลือกใช้ให้เหมาะสมกับปัญหา h. Deep Learning 🤖 (ศาสตร์ขั้นสูง สู่โลก AI เต็มรูปแบบ!) - Neural Networks (โครงข่ายประสาทเทียม เลียนแบบสมองมนุษย์ 🧠) - Multi-Layer Perceptron (MLP): โครงสร้างพื้นฐานของ Neural Network ประมวลผลข้อมูลแบบ Non-linear - Convolutional Neural Networks (CNNs): เหมาะกับการประมวลผลภาพ 🖼️ จดจำวัตถุ จำแนกใบหน้า แม่นยำสุดๆ - Recurrent Neural Networks (RNNs): ประมวลผลข้อมูลแบบลำดับ เช่น ข้อความ เสียง 🎶 ทำนายคำศัพท์ แปลภาษา สร้าง Chatbot ได้อย่างลื่นไหล i. ฝึก - Projects: ลงมือทำโปรเจค สร้างผลงาน เป็นใบเบิกทางสู่โลกแห่ง Data Science 🚀 - Kaggle Competitions: สนามประลอง Data Science ระดับโลก 💪 วัดฝีมือ เก็บเกี่ยวประสบการณ์ - Portfolio: รวบรวมผลงาน สร้าง Resume สุดปัง สมัครงานแบบสวยๆ **Matrix** - คือตารางสี่เหลี่ยมที่แต่ละช่องบรรจุจำนวนหรือโครงสร้างทางคณิตศาสตร์ที่สามารถนำมาบวกและคูณกับตัวเลขได้ หรือ ตารางของตัวเลข เรียงกันเป็นแถวและคอลัมน์ เหมือนตารางทั่วไป - Matrix เป็นแนวคิด ส่วน Array 2 มิติเป็นวิธีการนำแนวคิดนั้นไปใช้จริงในการเขียนโปรแกรม - ส่วนประกอบสำคัญของ Matrix: j. แถว (Row): คือ แนวของตัวเลขที่เรียงจากซ้ายไปขวา เหมือนบรรทัดในสมุดเลยค่ะ k. คอลัมน์ (Column): คือ แนวของตัวเลขที่เรียงจากบนลงล่าง เหมือนเสาของบ้านค่ะ - แล้ว Matrix เกี่ยวข้องกับ AI ยังไงนะ? 🤔 l. ข้อมูลหลายๆ อย่างในโลกของ AI มักถูกจัดเก็บในรูปแบบ Matrix ค่ะ เช่น - รูปภาพ: แต่ละ Pixel ในรูปภาพ จะถูกแทนด้วยตัวเลขใน Matrix - ตารางข้อมูล: ข้อมูลที่เรามี เช่น ราคาบ้าน, ขนาดพื้นที่, จำนวนห้องนอน สามารถจัดเก็บเป็น Matrix ได้ m. การใช้ Matrix ช่วยให้ AI ประมวลผลข้อมูลได้เร็วขึ้น และ มีประสิทธิภาพมากขึ้น ค่ะ รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ตัวอักษร คำอธิบายที่สร้างโดยอัตโนมัติ **ปัญญาประดิษฐ์ (AI : Artificial Intelligence) คือ** - เครื่องจักรที่มีฟังก์ชันที่มีความสามารถในการทำความเข้าใจ เรียนรู้องค์ความรู้ต่างๆ เช่น การรับรู้การเรียนรู้ การให้เหตุผล และการแก้ไขปัญหาต่างๆ **AI ถูกจำแนกเป็น 3 ระดับตามความสามารถหรือความฉลาดดังนี้** 1. **ปัญญาประดิษฐ์เชิงแคบ (Narrow AI)** (ANI) หรือ ปัญญาประดิษฐ์แบบอ่อน (Weak AI) : คือ AI ที่มีความสามารถเฉพาะทางได้ดีกว่ามนุษย์(เป็นที่มาของคำว่า Narrow(แคบ) ก็คือ AI ที่เก่งในเรื่องเเคบๆหรือเรื่องเฉพาะทางนั่นเอง) อาทิ เช่น AI ที่ช่วยในการผ่าตัด(AI-assisted robotic surgery) ที่อาจจะเชี่ยวชาญเรื่องการผ่าตัดกว่าคุณหมอยุคปัจจุบัน แต่แน่นอนว่า AI ตัวนี้ไม่สามารถที่จะทำอาหาร ร้องเพลง หรือทำสิ่งอื่นที่นอกเหนือจากการผ่าตัดได้นั่นเอง ซึ่งผลงานวิจัยด้าน AI ณ ปัจจุบัน ยังอยู่ที่ระดับนี้ 2. **ปัญญาประดิษฐ์ทั่วไป (General AI)** (AGI) : คือ AI ที่มีความสามารถระดับเดียวกับมนุษย์ สามารถทำทุกๆอย่างที่มนุษย์ทำได้และได้ประสิทธิภาพที่ใกล้เคียงกับมนุษย์ 3. **ปัญญาประดิษฐ์แบบเข้ม (Super AI)** (ASI) : คือ AI ที่มีความสามารถเหนือมนุษย์ในหลายๆด้าน **ประเภทของ Artificial intelligence (AI) มีอะไรบ้าง** 1. Machine Learning (ML): การเรียนรู้ของเครื่อง คือ สาขาวิชาหนึ่งในปัญญาประดิษฐ์ ที่มุ่งเน้นไปที่การพัฒนาอัลกอริทึมให้คอมพิวเตอร์สามารถเรียนรู้และพัฒนาการทำงานให้ดีขึ้นได้ด้วยตัวเอง โดยไม่ต้องเขียนโปรแกรมใหม่ หรือเป็นศาสตร์ที่สอนให้คอมพิวเตอร์เรียนรู้โดยที่เราไม่จะเป็นต้องไปกำหนด Logic เป็นกระบวนการที่ใช้ในการสร้าง Model 2. Deep Learning: รูปแบบของ AI ที่ใช้โครงข่ายประสาทเทียม (Neural Network) เพื่อเรียนรู้ และสร้างโมเดลการจำแนกหรือการทำนายที่มีความซับซ้อน เป็นหนึ่งในการเรียนรู้แบบ Supervised Learning (Machine Learning Algorithm) 3. การประมวลผลภาษาธรรมชาติ (Natural Language Processing - NLP): เทคโนโลยีที่ช่วยให้เครื่องคอมพิวเตอร์เข้าใจภาษาของมนุษย์ 4. คอมพิวเตอร์วิทัศน์ (Computer Vision): เทคโนโลยีที่ช่วยให้เครื่องคอมพิวเตอร์มองเห็นและเข้าใจโลก 5. วิทยาการหุ่นยนต์ (Robotics): การออกแบบ, ประกอบ, การควบคุม, การใช้งานหุ่นยนต์ **Dataset(ชุดข้อมูล)** - คือ การนำข้อมูลที่มีคุณสมบัติเหมือนกันมาจัดเป็นชุดให้ถูกต้องตามลักษณะโครงสร้างข้อมูล โดยชุดข้อมูลพื้นฐานที่ใช้กันอย่างแพร่หลายทางด้าน Machine Learning **การแสดงรูปภาพที่อยู่ใน Dataset ด้วย Pylab และ Matplotlib** - รูปแบบแสดงผล - gray\_r : แสดงรูปแบบ grayscale reversed (สีขาวเป็นพื้นหลัง, สีดำเป็นตัวเลข) - gray : แสดงรูปแบบ grayscale (สีดำเป็นพื้นหลัง, สีขาวเป็นตัวเลข) - Pylab : pylab.imshow(image\_dataset, cmap=pylab.cm.gray\_r) ![รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, แสดง, ซอฟต์แวร์ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image2.png) - Matplotlib : plt.imshow(image\_dataset, cmap=plt.get\_cmap(\'gray\')) รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, แสดง, ซอฟต์แวร์ คำอธิบายที่สร้างโดยอัตโนมัติ **การ import ไฟล์.mat** - loadmat("ตำแหน่งไฟล์ mat") ![รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ตัวอักษร, มัลติมีเดีย คำอธิบายที่สร้างโดยอัตโนมัติ](media/image4.png) **MNIST Dataset (ตัวอย่างการใช้งาน)** รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ซอฟต์แวร์, คอมพิวเตอร์ คำอธิบายที่สร้างโดยอัตโนมัติ **กระบวนการ Machine Learning จะแบ่งชุดข้อมูลสำคัญๆออกเป็น 2 ส่วน** 1. ข้อมูลชุดเรียนรู้ (Training Set) ถูกนำไปเรียนรู้ด้วยวิธีการเรียนรู้เครื่องจักรเพื่อสร้างเป็นโมเดล (Model) จะประกอบไปด้วย label / class เพื่อบอกว่าข้อมูลชุดนี้คืออะไร เช่น ชุดข้อมูลตัวเลข 0--9 , ข้อมูลสายพันธ์สุนัข เป็นต้น 2. ข้อมูลชุดทดสอบ (Test Set) ใช้ทดสอบโมเดลที่สร้างขึ้น หากโมเดลที่ทดสอบมีประสิทธิภาพดีจึงจะนำไปใช้งานจริง ![รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ไลน์, ตัวอักษร คำอธิบายที่สร้างโดยอัตโนมัติ](media/image6.png) \* ในกรณีที่ไม่มีการแบ่งข้อมูลเป็น 2 ส่วนสามารถเขียนโปรแกรมเพื่อแบ่งข้อมูลได้โดยแบ่งข้อมูลเป็น 75% สำหรับเรียนรู้และอีก 25% สำหรับทดสอบ **การเรียนรู้ของ Machine Learning แบ่งออกเป็น 3 ประเภทหลัก** 1. การเรียนรู้แบบมีผู้สอน (Supervised Machine Learning Algorithms) ข้อมูลที่ใช้ในการฝึกนั้นเรียกว่า ข้อมูลชุดเรียนรู้ (Training Data / Training Set) นำมาแยกประเภทผลลัพธ์ด้วยการติดป้ายกำกับ (Labels/Class) เป็นผลเฉลย จากนั้นนำข้อมูลที่ติดป้ายแล้วไปใช้ในการฝึกของเครื่องที่ทำงานผ่านอัลกอริทึมสำหรับสร้างโมเดลที่ใช้ในการทำนายผลลัพธ์ โดยนำข้อมูลใหม่หรือข้อมูลชุดทดสอบ (Test Set) ไปใช้ทดสอบประสิทธิภาพของโมเดล 2. การเรียนรู้แบบไม่มีผู้สอน (Unsupervised Machine Learning Algorithms) เป็นการเรียนรู้ด้วยข้อมูลที่ไม่ถูกจัดประเภท หรือติดป้ายกำกับข้อมูล วิธีนี้เครื่องจะคาดเดาข้อมูลที่ได้รับและทำความเข้าใจถึงโครงสร้างที่ซ่อนอยู่ไม่สามารถหาผลลัพธ์ที่ถูกต้องได้ แต่จะใช้วิธี สำรวจข้อมูลและใช้การประมาณการว่าข้อมูลนั้นคืออะไร **การวิเคราะห์การถดถอยเชิงเส้น** รูปภาพประกอบด้วย ไลน์, แผนภาพ, พล็อต, ภาพหน้าจอ คำอธิบายที่สร้างโดยอัตโนมัติ - การวิเคราะห์การถดถอยเชิงเส้น เป็นการคำนวณหาความสัมพันธ์ระหว่างตัวแปร 2 ตัวแปร คือ ตัวแปรที่เราทราบค่า (Predictor :x) และตัวแปรที่เราไม่ทราบค่า (Response :y) ซึ่งเป็นความสัมพันธ์แบบเชิงเส้น (Linear) โดยการคำนวณจากค่า x และ y ที่มีความสัมพันธ์กันจะใช้สมการของ Linear Regression คือ **สมการของ Linear Regression** - y = ax + b - x : ตัวแปรที่ทราบค่า \| ตัวประมาณการ \| ตัวแปรอิสระ (Predictor) (Independent Variable) - y : ตัวแปรที่เราไม่ทราบค่า \|ตัวตอบสนอง \| ตัวแปรตาม (Response) (Dependent Variable) - a : ความชันของเส้นตรง : คือค่าที่บอกว่า y เปลี่ยนแปลงเท่าไหร่เมื่อ x เปลี่ยนไป 1 หน่วย - b : ระยะตัดแกน y : คือตำแหน่งที่เส้นกราฟตัดแกน y เมื่อ x=0 **ประเภทของความสัมพันธ์แบ่งตามลักษณะการกระจายของจุดข้อมูลบนแผนภาพกระจาย (Scatter Plot) ได้ดังนี้** ![รูปภาพประกอบด้วย ภาพหน้าจอ, ไลน์, แผนภาพ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image10.png) 1. หมายถึงค่าของตัวแปร x , y มีทิศทางเดียวกันส่งผลให้เมื่อค่า x เพิ่มขึ้น ค่า y ก็เพิ่มตามไปด้วยหรือเรียกว่า การแปรผันตรง (Positive Linear Relationship) ตัวอย่างเช่น ความสัมพันธ์ระหว่างความสูงและน้ำหนักของคน รูปภาพประกอบด้วย ไลน์, แผนภาพ คำอธิบายที่สร้างโดยอัตโนมัติ 2. หมายถึงค่าของตัวแปร x , y มีทิศทางตรงข้ามกันส่งผลให้เมื่อค่า x ลดลง ค่า y เพิ่มขึ้นหรือค่า x เพิ่มขึ้นแต่ค่า y ลดลงเรียกว่า การแปรผกผัน (Negative Linear Relationship) ตัวอย่างเช่น ความสัมพันธ์ระหว่างราคาสินค้าและจำนวนสินค้าที่ขาย ![รูปภาพประกอบด้วย แผนภาพ, ภาพหน้าจอ, ออกแบบ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image12.png) 3. จุดข้อมูลจะกระจายตัวแบบสุ่ม ไม่มีรูปแบบที่ชัดเจน หมายความว่าไม่มีความสัมพันธ์เชิงเส้นระหว่างตัวแปร X และ Y เรียกว่า ไม่มีความสัมพันธ์เชิงเส้น (No Apparent Linear Relationship) ตัวอย่างเช่น ความสัมพันธ์ระหว่างสีตาและความชอบในการฟังเพลง รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ตัวอักษร คำอธิบายที่สร้างโดยอัตโนมัติ ![รูปภาพประกอบด้วย ภาพหน้าจอ, ข้อความ, ตัวอักษร คำอธิบายที่สร้างโดยอัตโนมัติ](media/image14.png) **ค่าความสัมพันธ์** - ค่าความสัมพันธ์ คือค่าทางสถิติที่ใช้วัดระดับความสัมพันธ์ระหว่างตัวแปรสองตัว บอกถึงทิศทางและความแรงของความสัมพันธ์ จะแบ่งออกเป็น 3 ประเภท 1. ค่าสัมประสิทธิ์สหสัมพันธ์ (Correlation Coefficient) : a. from scipy.stats import pearsonr b. pearsonr(x.flatten(), y) c. ค่าสหสัมพันธ์ (เช่น Pearson Correlation) ใช้วัดความสัมพันธ์เชิงเส้นระหว่างตัวแปร x และ y และค่าของมันมีช่วงตั้งแต่ -1 ถึง 1 i. 1 (0.7 ถึง 1) : ความสัมพันธ์ทางบวกที่แข็งแรง ii. -1 (-0.7 ถึง -1) : ความสัมพันธ์ทางลบที่แข็งแรง iii. 0 (-0.3 ถึง +0.3) : ความสัมพันธ์ที่อ่อนหรือไม่มีความสัมพันธ์เชิงเส้น d. รูปภาพประกอบด้วย ข้อความ, ตัวอักษร, วิชาการพิมพ์, จำนวน คำอธิบายที่สร้างโดยอัตโนมัติ 2. **ค่าจุดตัดแกน y ของเส้นถดถอย (Intercept)** : e. model.intercept\_ f. ใช้ในบริบทของสมการเชิงเส้น เช่น y=ax+b, โดยที่ model.intercept = b g. บอกค่าจุดตัดแกน y ของเส้นถดถอย หมายถึงค่าเฉลี่ยของตัวแปร y เมื่อตัวแปร x มีค่าเท่ากับ 0 3. **ค่า R-Squared (R\^2)** : h. model.score(x\_test, y\_test) i. R\^2 บอกถึง สัดส่วน ของความผันแปรของตัวแปร y ที่สามารถอธิบายได้โดยตัวแปร x iv. 0%: ผลลัพธ์ไม่สามารถอธิบายความผันแปรของตัวแปร y ได้เลย v. 100%: ผลลัพธ์อธิบายความผันแปรของตัวแปร y ได้อย่างสมบูรณ์ j. ![รูปภาพประกอบด้วย ข้อความ, ตัวอักษร, ภาพหน้าจอ, จำนวน คำอธิบายที่สร้างโดยอัตโนมัติ](media/image16.png) **การวัดประสิทธิภาพ** - y\_pred คือผลการทำนายผลลัพธ์จากโมเดล - y\_test คือ ข้อมูลจริงที่ใช้ทดสอบการทำนายผลโมเดล - **Loss Function :** การคำนวน Error ว่า y\_pred ที่โมเดลทำนายออกมา ต่างจาก y\_test อยู่เท่าไร แล้วหาค่าเฉลี่ย เพื่อที่จะนำมาหา Gradient(ความลาด) ของ Loss แล้วใช้อัลกอริทึม Gradient Descent เพื่อให้ Loss น้อยลงในการเทรนรอบถัดไป Loss Function ที่นิยมใช้ในงาน Regression ในปัจจุบัน มีหลายตัวได้แก่ - Mean Absolute Error (MAE) การคำนวน Error ว่า y\_pred ต่างจาก y\_test อยู่เท่าไร ด้วยการนำมาลบกันตรง ๆ แล้วหาค่าเฉลี่ย โดยไม่สนใจเครื่องหมาย (Absolute) เพื่อหาขนาดของ Error โดยไม่สนใจทิศทาง รูปภาพประกอบด้วย ตัวอักษร, ข้อความ, ขาว, แผนภาพ คำอธิบายที่สร้างโดยอัตโนมัติ - Mean Squared Error (MSE) การคำนวน Error ว่า y\_pred ต่างจาก y\_test อยู่เท่าไร ด้วยการนำมาลบกัน แล้วยกกำลังสอง (Squared) เพื่อไม่ต้องสนใจค่าติดลบ (ถ้ามี) แล้วหาค่าเฉลี่ย ![รูปภาพประกอบด้วย ตัวอักษร, ขาว, ข้อความ, สัญลักษณ์ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image18.png) - Root Mean Squared Error (RMSE) คือ นำ MSE มาหา Squared Root รูปภาพประกอบด้วย ข้อความ, ตัวอักษร, ขาว, จำนวน คำอธิบายที่สร้างโดยอัตโนมัติ ![รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ตัวอักษร คำอธิบายที่สร้างโดยอัตโนมัติ](media/image20.png) **โมเดลคืออะไร** - โมเดลในปัญญาประดิษฐ์ (Artificial Intelligence Model) คือ ระบบที่ถูกฝึกฝนมาเพื่อทำความเข้าใจ, ทำนาย, หรือตัดสินใจจากข้อมูลที่ได้รับ โดยใช้เทคนิคของ Machine Learning หรือ Deep Learning มันประกอบด้วยอัลกอริทึมที่สามารถวิเคราะห์และเรียนรู้จากข้อมูล เพื่อสร้างแบบจำลองที่สามารถทำนายผลลัพธ์หรือแสดงพฤติกรรมเฉพาะได้ - ความหมายของ Model AI คือโปรแกรมที่ถูกสร้างโดยใช้ Machine Learning ซึ่งหมายความว่าโปรแกรมนั้นสามารถเรียนรู้และพัฒนาตัวเองได้โดยไม่ต้องถูกเขียนโปรแกรมใหม่ โปรแกรม AI จะเรียนรู้จากข้อมูล input ที่ได้รับ และใช้ข้อมูลเหล่านั้นเพื่อทำนายผลลัพธ์ หรือตัดสินใจในสถานการณ์ต่างๆ **ข้อมูลที่เหมาะกับ Linear Regression** 1. ประเภทความสัมพันธ์มีแนวโน้มเชิงเส้น (ทั้งเพิ่มขึ้นหรือลดลง) 2. ค่าของตัวแปร y เปลี่ยนแปลงตาม x ในอัตราที่คงที่ 3. มีความกระจายตัวเล็กน้อยหรือใกล้เคียงเส้นตรง **ข้อมูลที่เหมาะกับ Multiple Linear Regression** 1. มีตัวแปรต้นหลายตัวที่อาจส่งผลต่อค่าของตัวแปรตาม 2. ความสัมพันธ์โดยรวมสามารถอธิบายได้ด้วยเส้นตรง **ตัวจำแนกแบบไบรารี่ (Binary Classifier)** รูปภาพประกอบด้วย ภาพหน้าจอ, มีสีสรร, การสร้างภาพ คำอธิบายที่สร้างโดยอัตโนมัติ - ตัวจำแนกแบบไบนารี (Binary Classifier) จะใช้เส้น Hyperplane ในการแบ่งแยกข้อมูลเป็น 2 กลุ่ม โดยใช้ Support Vector Machine (SVM) หรือ Gradient Descent Algorithm (GD) - เส้น Hyperplane จุดสีไหนควรอยู่กลุ่มไหน โดยดูจากตำแหน่งของจุดที่อยู่ เหนือเส้น หรือ ใต้เส้น - x : Array 1 มิติ, y : Array 2 มิติ **Gradient Descent Algorithm (GD)** ![รูปภาพประกอบด้วย แผนภาพ, มีสีสรร, พับ, ศิลปะ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image22.png) - Gradient Descent Algorithm หรือ GD เป็นอัลกอริทึมที่ใช้หาจุดต่ำสุด (หรือสูงสุด) ของฟังก์ชันที่กำหนด เปรียบเสมือนการเดินลงเขา โดยอาศัยการคำนวณความชัน (Gradient) จากจุดที่เราอยู่ และเดินไปทางตรงกันข้ามกับความชันนั้น ทำให้ค่า Error หรือ Loss Function ของโมเดลลดลง - ความแตกต่างระหว่าง Cross-validation และ Loss Function - Loss Function: ใช้วัด ความผิดพลาด ของโมเดล (ระหว่างฝึกฝน) - Cross-validation (cross\_val\_score): ใช้ประเมิน ประสิทธิภาพโดยรวม ของโมเดล (หลังฝึกฝน) - จากแผนภาพอธิบายได้ดังนี้ - Gradient: เปรียบเสมือนความชันของภูเขา บอกทิศทางที่เราควรเดินลงเขาได้เร็วที่สุด - Learning Rate: เปรียบเสมือนขนาดก้าวของเรา ก้าวเล็ก (Learning Rate ต่ำ) ลงเขาช้า ก้าวใหญ่ (Learning Rate สูง) อาจจะก้าวข้ามจุดต่ำสุดไปเลย - Local Minima: เปรียบเสมือนหลุมตื้นบนภูเขา GD จะหยุดทำงานเมื่อเจอหลุมนี้ คิดว่าเป็นจุดต่ำสุด แต่จริง ๆ อาจจะมีจุดต่ำกว่าอยู่ - Global Minima: เป้าหมายของเรา คือจุดต่ำสุดของฟังก์ชัน เปรียบเสมือนทะเลสาบที่อยู่ต่ำสุดของภูเขา - Best case: จำนวนรอบวนลูปที่ใช้ในการหาจุดต่ำสุด น้อย = ดี (เหมือนโค้ดที่ทำงานเร็ว) - Worst case: จำนวนรอบวนลูปที่ใช้ในการหาจุดต่ำสุด มาก = ไม่ดี (เหมือนโค้ดที่ทำงานช้า) - Full Batch: วิธีการปรับค่าพารามิเตอร์แบบละเอียดหรือทั้งหมด คำนวณแม่นยำ แต่ช้า - Stochastic: วิธีการปรับค่าพารามิเตอร์แบบสุ่มหรือบางส่วน อาจจะพลาดบ้าง แต่เร็วกว่ามาก **การทำงานของ Gradient Descent** 1. เริ่มต้นด้วยการสุ่มค่า a. สุ่มค่า slope (weight) และ intercept (bias) เริ่มต้น เช่น w~1~ และ w~0~ b. เส้นตรงที่ได้จากค่าเริ่มต้นนี้อาจยังไม่แม่นยำ 2. คำนวณ Loss Function c. นำค่าทำนาย (y\_pred) มาเปรียบเทียบกับค่าจริง (y\_true) d. หาความผิดพลาด (Loss) ด้วย Loss Function เช่น Mean Squared Error (MSE) 3. คำนวณ Gradient e. หาความลาด (Gradient) ของ Loss Function เพื่อบอกว่า ควรปรับ slope (weight) และ intercept (bias) ไปทางไหน f. ใช้อนุพันธ์ของ Loss Function g. รูปภาพประกอบด้วย ตัวอักษร, ภาพหน้าจอ, ข้อความ, จำนวน คำอธิบายที่สร้างโดยอัตโนมัติ 4. ปรับค่า slope และ intercept h. ใช้สมการ Gradient Descent: i. ![รูปภาพประกอบด้วย ตัวอักษร, ภาพหน้าจอ, ข้อความ, จำนวน คำอธิบายที่สร้างโดยอัตโนมัติ](media/image24.png) j. η: Learning Rate (กำหนดความเร็วในการปรับค่า) 5. ทำซ้ำ (Repeat) k. ทำซ้ำข้อ 2-4 จน Loss ลดลงเรื่อย ๆ และใกล้ค่าต่ำสุด (optimal solution) **สรุปการทำงานของ Gradient Descent สั้นๆ** 1. สุ่มค่า slope และ intercept เริ่มต้น 2. คำนวณ Loss เพื่อดูว่าผิดพลาดแค่ไหน 3. ใช้ Gradient ดูว่าควรปรับค่าไปทิศทางไหน 4. ปรับค่าและทำซ้ำจน Loss ต่ำที่สุด! **ความซับซ้อนของอัลกอริทึม** - Best case คือ จำนวนการวนรอบที่น้อยที่สุด - Worst case คือ จำนวนวนรอบที่มากที่สุด **รูปแบบการใช้งาน** - คำนวนข้อมูลทั้งหมดทีเดียว (Full Batch Gradient Descent Algorithm) (FBGD) - วิธีนี้จะอัปเดตพารามิเตอร์โดยพิจารณาจากข้อมูลทั้งหมดในทุกขั้นตอนการเรียนรู้ - เหมาะสำหรับชุดข้อมูลขนาดเล็กหรือการประมวลผลที่มีทรัพยากรเพียงพอ - คำนวนข้อมูลแค่บางส่วน (Stochastic Gradient Descent Algorithm) (SGD) - ฟังก์ชันที่รองรับใน SGD - SGDRegressor: ใช้สำหรับปัญหาการถดถอย (Regression) - SGDClassifier: ใช้สำหรับปัญหาการจำแนกประเภท (Classification) รูปภาพประกอบด้วย ข้อความ, แผนภาพ, แผนที่ คำอธิบายที่สร้างโดยอัตโนมัติ **SGDRegressor** - ใช้สำหรับปัญหา Regression ที่ต้องการพยากรณ์ค่าต่อเนื่อง เช่น ราคาบ้าน, น้ำหนัก, หรือค่าอุณหภูมิ - อัลกอริธึมอยู่ใน SGDClassifier - Linear Regression : ใช้ค่า Mean Squared Error (MSE) เป็น Loss Function สำหรับการพยากรณ์ค่าต่อเนื่องแบบเส้นตรง - Huber Regression : ทนทานต่อ Outliers โดยใช้ Huber Loss ซึ่งเป็นการผสมระหว่าง MSE และ MAE - Support Vector Regression (SVR) : ใช้ Epsilon-Insensitive Loss เพื่อสร้างขอบเขต ϵ ที่ไม่สนใจค่า error เล็ก ๆ - Support Vector Regression (SVR) : คล้ายกับ epsilon\_insensitive แต่ใช้ค่า Squared Loss เพื่อลงโทษค่า error ที่ใหญ่มาก ![รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ตัวอักษร คำอธิบายที่สร้างโดยอัตโนมัติ](media/image26.png) **SGDClassifier** - ใช้สำหรับปัญหา Classification ที่ต้องการแบ่งข้อมูลออกเป็นกลุ่มหรือหมวดหมู่ เช่น การบอกว่ารูปภาพเป็น \"แมว\" หรือ \"ไม่ใช่แมว\" - SGDClassifier ไม่ใช่อัลกอริธึมเดี่ยว แต่เป็น framework ที่ใช้ SGD ร่วมกับหลายอัลกอริธึม เช่น SVM, Logistic Regression, Perceptron และอื่นๆ - การเลือกอัลกอริธึมขึ้นอยู่กับ Loss Function ที่กำหนดในโมเดล - อัลกอริธึมอยู่ใน framework SGDClassifier - Support Vector Machine : ใช้สำหรับการแยกข้อมูลด้วยเส้นตรง (Linear SVM) - Logistic Regression : ใช้สำหรับจำแนกหมวดหมู่แบบ probabilistic - Perceptron : ใช้สำหรับปัญหาการจำแนกแบบง่าย (linear separable) - Smooth Classification : ผสม SVM และ Logistic Regression ช่วยลดผลกระทบจากข้อมูลที่ไม่สมดุลหรือ Outliers - Regression for Classification : ใช้สำหรับจำแนกหมวดหมู่ในเชิงทดลอง รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ตัวอักษร คำอธิบายที่สร้างโดยอัตโนมัติ **การวัดประสิทธิภาพ (Evaluation metrics)** - Cross Validation เป็นกระบวนการที่ใช้เพื่อประเมินประสิทธิภาพของโมเดลโดยแบ่งข้อมูลออกเป็นหลายส่วน (folds) แล้วทำการฝึกและทดสอบโมเดลหลายครั้งในลักษณะสลับชุดข้อมูล โดยในแต่ละรอบ จะใช้ส่วนหนึ่งของข้อมูลเป็นชุดทดสอบ และใช้ข้อมูลส่วนที่เหลือเป็นชุดฝึก ช่วยลด bias และ variance ที่อาจเกิดขึ้นจากการแบ่งข้อมูลแบบสุ่มเพียงครั้งเดียว จะแบ่งออกเป็น 2 ฟังก์ชัน - cross\_val\_score - จุดประสงค์: ใช้เพื่อประเมินประสิทธิภาพของโมเดลโดยการคำนวณค่าคะแนน (score) เช่น Accuracy, F1, MSE ฯลฯ จากการแบ่งข้อมูลด้วย cross-validation - ผลลัพธ์: คืนค่าเป็น รายการของคะแนน ที่ได้จากแต่ละ fold ในการทำ cross-validation - cross\_val\_predict - จุดประสงค์: ใช้เพื่อสร้าง ผลการพยากรณ์ (predictions) ของโมเดลสำหรับข้อมูลทั้งหมด โดยใช้วิธี cross-validation - ผลลัพธ์: คืนค่าเป็น ผลลัพธ์การพยากรณ์ (predicted values) ที่สร้างจากแต่ละ fold โดยไม่ใช้ข้อมูลของ fold นั้นในการ train โมเดล (เหมาะสำหรับการพยากรณ์ที่ไม่ bias) - เหตุผลที่ต้องฝึกหลายรอบใน Cross-Validation - การประเมินโมเดลที่เสถียร (Reliable Evaluation) - เมื่อฝึกโมเดลบนชุดข้อมูลที่แตกต่างกันในแต่ละรอบ (fold) จะทำให้ได้การประเมินที่ไม่ถูก bias จากการเลือกชุดข้อมูลเพียงชุดเดียว - ลดการ overfitting - เมื่อโมเดลจำข้อมูลการฝึกได้ดีเกินไป แต่ไม่สามารถทำงานได้ดีบนข้อมูลใหม่หรือข้อมูลที่ไม่เคยเห็น - การฝึกโมเดลหลายรอบด้วย ข้อมูลที่แตกต่างกัน ช่วยลดโอกาสที่โมเดลจะ ฝึกจำข้อมูลที่เฉพาะเจาะจง ซึ่งอาจทำให้โมเดลมีประสิทธิภาพต่ำเมื่อเจอกับข้อมูลใหม่ - ให้โมเดลเห็นข้อมูลมากขึ้น - เมื่อคุณฝึกโมเดลหลายรอบกับข้อมูลที่แตกต่างกันในแต่ละ fold โมเดลจะได้เรียนรู้จาก ข้อมูลที่หลากหลาย และ ตัวอย่างที่แตกต่างกัน นี่จะทำให้โมเดลมีการ generalize ที่ดีขึ้น - ทำให้การประเมินผลแม่นยำขึ้น - หากคุณใช้ แค่ชุดเดียวในการทดสอบ ผลลัพธ์ที่ได้อาจไม่แม่นยำหากข้อมูลชุดนั้นไม่เป็นตัวแทนที่ดีของข้อมูลทั้งหมด - ช่วยปรับพารามิเตอร์ - การใช้ หลายๆ รอบ ใน Cross-Validation ช่วยให้คุณมี ข้อมูลเชิงลึก เกี่ยวกับการทำงานของโมเดลในสภาพแวดล้อมที่ต่างกัน ซึ่งจะช่วยให้คุณปรับพารามิเตอร์ได้ดีขึ้น - สาเหตุที่ Cross-Validation ใช้ก่อน model.fit - เพื่อประเมินโมเดล: - cross\_val\_predict() หรือ cross\_val\_score() ใช้เพื่อดูว่าโมเดลของคุณทำงานได้ดีเพียงใดบนข้อมูลที่ไม่เคยเห็นมาก่อน (test folds) - ช่วยให้คุณรู้ว่าโมเดล overfit หรือ underfit หรือไม่ โดยยังไม่ต้องใช้ข้อมูลทั้งหมดใน model.fit() - เพื่อเลือกพารามิเตอร์ที่เหมาะสม: - ถ้าคุณต้องทำ Hyperparameter Tuning, คุณจะต้องใช้ Cross-Validation เพื่อทดลองค่าพารามิเตอร์หลายๆ ค่า และเลือกค่าที่ดีที่สุด ก่อนฝึกโมเดลจริงด้วยข้อมูลทั้งหมด - เพื่อป้องกันข้อมูลรั่วไหล (Data Leakage): - การใช้ model.fit() กับข้อมูลทั้งหมดก่อนการประเมิน อาจทำให้โมเดลเรียนรู้ข้อมูลที่ควรถูกใช้เฉพาะสำหรับการทดสอบ ส่งผลให้การประเมินผลไม่น่าเชื่อถือ - Cross-Validation ช่วยให้การประเมินเป็นไปอย่างยุติธรรม เพราะมันแยกข้อมูลสำหรับฝึกและทดสอบในแต่ละ fold - ค่า default ของพารามิเตอร์ scoring ใน cross\_val\_score จะขึ้นอยู่กับ ประเภทของ estimator (โมเดล) ที่คุณใช้งาน โดยสามารถแบ่งเป็น 2 กรณีหลัก - Estimator สำหรับ Regression : r2\_score (R²) ![รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, แสดง, ซอฟต์แวร์ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image28.png) - Estimator สำหรับ Classification : ใช้ accuracy (ความแม่นยำ) รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ซอฟต์แวร์, แสดง คำอธิบายที่สร้างโดยอัตโนมัติ - Confusion Matrix - ฟังก์ชันการใช้งาน - confusion\_matrix(y\_test, y\_pred) - pd.crosstab(y\_test, y\_pred,rownames=\[\'Actually\'\],colnames=\[\'Prediction\'\],margins=True) - แสดงรายละเอียดการจำแนกประเภทของโมเดล โดยแสดงจำนวนตัวอย่างที่จำแนกประเภทถูกต้องกี่จำนวนและไม่ถูกต้องกี่จำนวน - Confusion Matrix เหมาะสำหรับใช้ในปัญหาประเภท Classification หรือปัญหาการจำแนกประเภท (เช่น Binary Classification หรือ Multiclass Classification) ซึ่งมีวัตถุประสงค์เพื่อประเมินประสิทธิภาพของโมเดลที่ใช้ในการจำแนกข้อมูลออกเป็นกลุ่มต่าง ๆ - ฟังก์ชันจะส่งคืนเมทริกซ์สับสน ซึ่งประกอบด้วยเซลล์ 4 เซลล์: - TP (True Positive): ทายว่าถูกต้อง แล้วตอบตรงตามที่ทายไว้ - FN (False Negative): ทายว่าไม่ถูกต้อง แล้วตอบตรงตามที่ทายไว้ - FP (False Positive): ทายว่าถูกต้อง แต่คำตอบคือไม่ถูกต้อง - TN (True Negative): ทายว่าไม่ถูกต้อง แต่คำตอบคือถูกต้อง ![รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ตัวอักษร, ไลน์ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image30.png)รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, แผนภาพ, ออกแบบ คำอธิบายที่สร้างโดยอัตโนมัติ ![รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, แสดง, คอมพิวเตอร์ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image32.png) - Precision, Recall, และ F1-Score - Precision (ความแม่นยำเฉพาะเจาะจง) - ความแม่นยำของคำตอบที่โมเดลระบุว่าเป็น \"Positive\" ว่ามีความถูกต้องแค่ไหน - เป็นสัดส่วนของผลลัพธ์ที่ถูกต้อง (True Positives) จากผลลัพธ์ที่ระบบทำนายว่าเป็นบวกทั้งหมด (Predicted Positives) - ใช้ในกรณีที่ความผิดพลาดจากการทำนายว่า เป็นบวก (Positive) โดยผิดพลาด (False Positive) มีผลกระทบรุนแรง เช่น การตรวจโรคที่ไม่ควรมีผลบวกปลอม - รูปภาพประกอบด้วย ข้อความ, ตัวอักษร, ภาพหน้าจอ, กราฟิก คำอธิบายที่สร้างโดยอัตโนมัติ - Recall (ความครอบคลุม หรือ Sensitivity) - ความสามารถของโมเดลในการดึงตัวอย่าง \"Positive\" ออกมาจากข้อมูลทั้งหมด - เป็นสัดส่วนของผลลัพธ์ที่ถูกต้อง (True Positives) จากผลลัพธ์ทั้งหมดที่ควรจะเป็นบวก (Actual Positives) - ใช้ในกรณีที่การพลาดผลลัพธ์ที่ควรเป็นบวก (False Negative) มีผลเสียร้ายแรง เช่น การตรวจพบโรคร้ายแรง - ![รูปภาพประกอบด้วย ข้อความ, ตัวอักษร, ภาพหน้าจอ, ขาว คำอธิบายที่สร้างโดยอัตโนมัติ](media/image34.png) - F1-Score : ค่าเฉลี่ยถ่วงน้ำหนักของ Precision และ Recall - เป็นค่าเฉลี่ยเชิงฮาร์โมนิก (Harmonic Mean) ของ Precision และ Recall เพื่อประเมินสมดุลระหว่างทั้งสอง - ใช้เมื่อ Precision และ Recall มีความสำคัญพอๆ กัน เช่น งานที่ต้องรักษาสมดุลระหว่างการตรวจจับและลดข้อผิดพลาด - รูปภาพประกอบด้วย ข้อความ, ตัวอักษร, กราฟิก, วิชาการพิมพ์ คำอธิบายที่สร้างโดยอัตโนมัติ - Accuracy (ความถูกต้อง) - เป็นสัดส่วนของผลลัพธ์ที่ระบบทำนายถูกต้องจากทั้งหมด - ใช้ง่ายและเหมาะสำหรับข้อมูลที่สมดุลระหว่างบวกและลบ - ไม่เหมาะกับกรณีข้อมูลที่มีความไม่สมดุล (Class Imbalance) เช่น เมื่อข้อมูลบวกมีสัดส่วนเพียง 1% - ![รูปภาพประกอบด้วย ข้อความ, ตัวอักษร, ภาพหน้าจอ, สีดำ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image36.png) รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ตัวอักษร, ไลน์ คำอธิบายที่สร้างโดยอัตโนมัติ ![รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ตัวอักษร, จำนวน คำอธิบายที่สร้างโดยอัตโนมัติ](media/image38.png) รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ซอฟต์แวร์, แสดง คำอธิบายที่สร้างโดยอัตโนมัติ - classification\_report - ฟังก์ชัน classification\_report จะคำนวณ Precision, Recall, F1-Score และ Support สำหรับทุกคลาสในปัญหาการจำแนกประเภท (classification problem) ซึ่งช่วยให้สามารถประเมินประสิทธิภาพของโมเดลได้ง่ายขึ้นในครั้งเดียว - Support: จำนวนผลรวมในแต่ละคลาส (จำนวนของ 0 และ 1) ![รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, แสดง, ซอฟต์แวร์ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image40.png) รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, อิเล็กทรอนิกส์ คำอธิบายที่สร้างโดยอัตโนมัติ **ความแตกต่างระหว่าง Loss Function และ Evaluation Metrics:** - Loss Function ใช้ในการฝึกโมเดล (เพื่อให้โมเดลเรียนรู้และปรับพารามิเตอร์) เช่น Cross-Entropy Loss หรือ Mean Squared Error (MSE). - Evaluation Metrics ใช้ในการประเมินประสิทธิภาพของโมเดลหลังจากที่ได้การทำนายแล้ว เช่น Precision, Recall, F1-Score, Accuracy. **Ordinary Least Squares (OLS)** - OLS จะใช้ในการ หาค่าพารามิเตอร์ ของโมเดล Linear Regression โดยตรง ผ่าน Normal Equation (ไม่ใช่ Optimization Algorithm) - มันคือการหาค่าพารามิเตอร์ w (หรือ coefficient) ที่ทำให้ Sum of Squared Errors (SSE) ต่ำที่สุด - สูตร Loss Function ที่มัน Optimize: ![รูปภาพประกอบด้วย ตัวอักษร, ข้อความ, ลายมือ, สีดำ](media/image42.png) - ถ้าข้อมูลแม่งใหญ่มากจนเมทริกซ์มันใหญ่เกินจะ Inverse ได้ (เพราะกิน Ram เยอะ) ต้องเปลี่ยนไปใช้ Stochastic Gradient Descent โดยต้องเรียกใช้โมเดลที่ชื่อ SGDRegressor - ข้อดีของ OLS ใน Scikit-learn - เร็วมาก: เพราะมันแก้สมการได้ตรง ๆ ไม่ต้องวนลูป - ผลลัพธ์แม่นเป๊ะ: ตราบใดที่ข้อมูลมึงไม่มี Multicollinearity (Feature ซ้ำกันเกินไป) - รองรับได้หลาย Feature: ได้แบบง่าย ๆ - เหมาะกับปัญหา Regression เท่านั้น เพราะมันเน้นหาค่าพารามิเตอร์ที่ทำให้ ความคลาดเคลื่อน (Residual) ระหว่างค่าจริง (y\_true) กับค่าทำนาย (y\_pred) น้อยที่สุด - เหตุผลที่ไม่เวิร์คกับ Classification - Output เป็นตัวเลขต่อเนื่อง : OLS จะให้ค่าทำนายแบบต่อเนื่อง เช่น 0.7, -1.2 ซึ่งมันไม่มีความหมายใน Classification - Boundary(ขอบเขต) ไม่ชัดเจน : Classification ต้องการ Decision Boundary ที่แบ่งแยกได้ชัด แต่ OLS ไม่ให้สิ่งนี้ - ใน Scikit-learn ตัวที่ใช้ OLS โดยตรงคือ Linear Regression และ Ridge **ความแตกต่างระหว่าง OLS (Ordinary Least Squares) และ SGD (Stochastic Gradient Descent)** - SGD (Stochastic Gradient Descent) - SGD สามารถใช้ได้ทั้ง หาค่า และ Optimization ค่าพารามิเตอร์ในโมเดล! - มันไม่จำเป็นต้องมีการคำนวณค่า พารามิเตอร์ จาก Normal Equation หรือ OLS อย่างเดียว แต่ SGD จะ ปรับค่าพารามิเตอร์ทีละน้อย (ทีละตัวอย่างหรือชุดข้อมูล) จนทำให้ Loss Function ต่ำที่สุด - ดังนั้น SGD สามารถใช้ในการ หาค่าพารามิเตอร์ และ Optimize โมเดลได้ในการฝึกฝนโมเดลต่างๆ ไม่ว่าจะเป็น Linear Regression, Logistic Regression หรือโมเดลอื่นๆ ที่ใช้ Gradient Descent - OLS (Ordinary Least Squares) - OLS จะใช้ในการ หาค่าพารามิเตอร์ ของโมเดล Linear Regression โดยตรง ผ่าน Normal Equation - มันไม่ได้ทำการ Optimize ค่าพารามิเตอร์ในลักษณะเดียวกับ SGD เพราะมันใช้วิธีคำนวณทางคณิตศาสตร์ที่รวดเร็วในการหาค่าที่ดีที่สุดจากข้อมูลทั้งหมดในทีเดียว - แต่ OLS จะเหมาะมากกับข้อมูลที่ไม่ใหญ่มาก เพราะมันต้องใช้ข้อมูลทั้งหมดในการคำนวณ **การคำนวณเพื่อนบ้านใกล้สุด K-nearest Neighbors (KNN)** - KNN เป็น อัลกอริธึมที่ใช้ในการจำแนกประเภท (Classification) และ ถดถอย (Regression) ซึ่งทำงานโดยการพิจารณาจาก ข้อมูลที่ใกล้เคียงที่สุด (neighbors) และใช้ ค่าของข้อมูลใกล้เคียง ในการตัดสินใจว่าข้อมูลที่ต้องการทำนายจะอยู่ในกลุ่มไหน - การเลือกค่า K: - K เล็ก (เช่น K=1) จะทำให้โมเดลไวต่อข้อมูลที่ผิดปกติ (overfitting) - K ใหญ่ จะช่วยลดผลกระทบจากข้อมูลที่ผิดปกติ แต่ถ้า K ใหญ่เกินไป อาจทำให้โมเดลไม่แม่นยำ (underfitting) **หลักการทำงานของ KNN** รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, แผนภาพ, วงกลม คำอธิบายที่สร้างโดยอัตโนมัติ 1. กำหนดค่า K: a. K คือ จำนวนของเพื่อนบ้าน (neighbors) ที่จะใช้ในการตัดสินใจ b. ถ้า K = 3, อัลกอริธึมจะดูข้อมูลที่ใกล้ที่สุด 3 ตัวและใช้คำตอบที่เจอมาในการทำนาย i. ถ้ากำหนด K = 1 ผลลัพธ์จะเท่ากับ Class 1 ii. ถ้ากำหนด K = 3 ผลลัพธ์จะเท่ากับ Class 2 (เพราะจำนวน Class 2 ที่เจอเยอะกว่า) 2. คำนวณระยะห่าง (Distance) ระหว่างจุดข้อมูล: c. จะทำการเปรียบเทียบ จุดใหม่ (New Point) กับจุดทั้งหมด (Point) ใน Training Set เพื่อหาจุดใกล้เคียง (ซึ่งจะกิน Performance มากเพราะต้องคำนวณความคล้ายกับ Data ทั้งหมดใน Training Set) d. ใช้ ระยะห่าง เช่น Euclidean Distance (เป็นค่า Default ของ metric) (หรือ Manhattan Distance หรือ Cosine Similarity) เพื่อหาว่าจุดข้อมูลไหนใกล้ที่สุด 3. ตัดสินใจจาก K nearest neighbors e. หลังจากคำนวณระยะห่างแล้ว, KNN จะเลือก K ตัวอย่างที่ใกล้ที่สุด f. Classification: ถ้าใช้ KNN สำหรับการจำแนกประเภท (classification), ระบบจะดูว่ามี ประเภทไหนมากที่สุด ใน K ตัวอย่างใกล้เคียง แล้วตัดสินใจว่าให้ข้อมูลใหม่ไปอยู่ในประเภทนั้น g. Regression: ถ้าใช้ KNN สำหรับการถดถอย (regression), จะคำนวณค่าเฉลี่ย (หรือค่าเฉลี่ยถ่วงน้ำหนัก) ของค่าที่มีอยู่ใน K neighbors 4. **K-Nearest Neighbors (KNN)** h. **เหมาะสมที่สุดเมื่อ:** iii. ข้อมูลไม่ได้มีมิติสูงเกินไป (เพราะ KNN คำนวณระยะทางระหว่างตัวอย่าง) iv. ข้อมูลมีความสัมพันธ์เชิงพื้นที่ หรือ ความคล้ายคลึงกันระหว่างตัวอย่าง i. **ข้อดี:** v. **ไม่ต้องการการฝึกสอน** (ไม่ต้องมีการสร้างโมเดลล่วงหน้า) vi. สามารถจัดการกับข้อมูลที่มีความสัมพันธ์ระหว่างแอตทริบิวต์ได้ดีกว่า Naive Bayes vii. ใช้ได้กับงานที่ข้อมูลมีการกระจายหรือการจัดกลุ่มเป็นกลุ่ม ๆ j. **ข้อจำกัด:** viii. **ช้า**ในการทำนาย (คำนวณระยะทางทุกครั้งเมื่อทำนาย) ix. การเลือกค่า k*k* ที่เหมาะสมมีผลต่อประสิทธิภาพ x. ประสิทธิภาพจะลดลงถ้ามีจำนวนแอตทริบิวต์เยอะ (curse of dimensionality) **Operation ของ KNN** 1. Distance Function a. นี่คือขั้นตอนแรกและสำคัญมากใน KNN เพราะเราต้องรู้ว่า ข้อมูลใหม่ (New Data Point) อยู่ใกล้หรือไกลจากข้อมูลใน Training Set แค่ไหน เพื่อหาความคล้ายคลึง i. คำนวณระยะห่าง (Distance) 1. ฟังก์ชันระยะห่างจะวัดความใกล้เคียงระหว่างจุดข้อมูล x~1~ ,x~2~,..., x~n~ ในหลายมิติฟังก์ชันที่นิยมใช้ได้แก่: a. Euclidean Distance (ระยะทางตรง) b. Manhattan Distance (ระยะห่างแบบเส้นตรง) c. Minkowski Distance b. ความสำคัญ ii. เลือก Distance Function ให้เหมาะกับ ลักษณะข้อมูล ของมึง เช่น: 2. ข้อมูลที่เป็น ตัวเลขล้วน ให้ใช้ Euclidean Distance 3. ข้อมูลที่มี หมวดหมู่ หรือ Boolean ใช้ Hamming Distance c. ปัญหากับฟังก์ชันที่ใช้ iii. Regression: ส่วนใหญ่ใช้ Euclidean Distance และ Manhattan Distance 4. Euclidean Distance : นิยมใช้มากที่สุด เพราะวัดระยะห่างแบบเรขาคณิต เหมาะกับข้อมูลที่มีมิติหลายมิติ 5. Manhattan Distance : ใช้ในกรณีที่ระยะทางมีลักษณะเป็นเส้นตรงแนวตั้ง-แนวนอน เหมาะสำหรับข้อมูลที่คุณค่าของแต่ละมิติไม่ขึ้นอยู่กับกัน 6. Minkowski Distance : เป็นกรณีทั่วไปที่ปรับแต่งได้ด้วยพารามิเตอร์ p: d. โดย p = 1 คือ Manhattan และ p = 2 คือ Euclidean iv. Classification: ใช้ได้ทั้ง Euclidean Distance, Manhattan Distance, Hamming Distance (สำหรับข้อมูลหมวดหมู่), และ Cosine Similarity 7. Euclidean Distance : ใช้ได้เหมือนกัน ถ้าข้อมูลเป็นตัวเลข หรืออยู่ในพื้นที่เชิงเรขาคณิต 8. Manhattan Distance : ใช้ในกรณีที่ข้อมูลมีลักษณะของเส้นทางตรง หรือกรณีที่ค่าของมิติแต่ละอันไม่ได้เกี่ยวข้องกัน 9. Hamming Distance : ใช้สำหรับ ข้อมูลเชิงหมวดหมู่ (Categorical Data) หรือ ข้อมูล Boolean เช่น ถ้าข้อมูลมีค่า True/False หรือ Binary 10. Cosine Similarity : ใช้สำหรับข้อมูลเวกเตอร์ที่ต้องการวัด มุมระหว่างเวกเตอร์ แทนระยะห่าง เหมาะสำหรับ Text Classification หรือข้อมูลที่มีลักษณะเวกเตอร์ความน่าจะเป็น (probability vectors) 2. Combination Function d. หลังจากที่คำนวณระยะห่างได้แล้ว เราจะรวมค่า Distance โดยเรียงลำดับจากน้อยไปมาก หลังจากนั้นดูค่า K ว่ากำหนดเป็นเท่าใด แล้วนำลำดับที่เรียงได้มาเทียบกับ Class ข้อมูลที่เรียงแล้วนำมาตอบ e. ขั้นตอน v. เรียงลำดับระยะห่าง 11. หลังจากคำนวณระยะห่างระหว่าง ข้อมูลใหม่ กับ ทุกจุดใน Training Data เราจะเรียงข้อมูลจาก ใกล้ที่สุดไปหาไกลที่สุด vi. เลือก K เพื่อนบ้าน (K-nearest neighbors) 12. จากระยะห่างที่เรียงแล้ว เราจะเลือกเพื่อนบ้าน K ตัวที่ใกล้ที่สุด 13. ถ้า k = 3 เพื่อนบ้านที่เลือกคือ \[B, A, C\] vii. สรุปผลลัพธ์ (Vote) 14. Classification e. นับว่า Class ไหนใน K เพื่อนบ้าน เกิดซ้ำมากที่สุด f. ตัวอย่าง: จาก \[B, A, C\] =\> Class A, B, C มีคะแนนคนละ 1 คะแนน ถ้าเกิดกรณีเท่ากัน อาจเลือกแบบสุ่มหรือดูคะแนนเพิ่มเติม 15. Regression g. หาค่าเฉลี่ยของค่าใน K เพื่อนบ้านที่ใกล้ที่สุด **ตัวอย่างการหาหาค่า n\_neighbors ที่ดีที่สุด** - ฟังก์ชันในดีที่สุดก็จะมี 2 ฟังก์ชัน แต่ผลลัพธ์เหมือนกัน - accuracy\_score(y\_test, y\_pred) - model.score(x\_test, y\_test) - โค้ดนี้ มีวัตถุประสงค์เพื่อหาค่า k (จำนวนเพื่อนบ้าน) ที่เหมาะสมที่สุดสำหรับโมเดล K-Nearest Neighbors (KNN) โดยการทดสอบค่า k ตั้งแต่ 1 ถึง 20 และประเมินความแม่นยำของโมเดลที่แต่ละค่า k แล้วแสดงผลลัพธ์เป็นกราฟและค่าที่ดีที่สุด ![รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, แสดง, ซอฟต์แวร์ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image50.png) โค้ดการใช้งานโมเดล KNN รูปภาพประกอบด้วย ข้อความ, อิเล็กทรอนิกส์, ภาพหน้าจอ, คอมพิวเตอร์ คำอธิบายที่สร้างโดยอัตโนมัติ - ส่วนที่ 1: การนำเข้าไลบรารี (Import Libraries) - ส่วนที่ 2: อ่านข้อมูลและเตรียมข้อมูล (Data Loading and Preparation) - pd.read\_csv(\"diabetes.csv\") อ่านข้อมูลจากไฟล์ CSV ชื่อท \"diabetes.csv\" เข้ามาเก็บใน DataFrame ชื่อ df. - x=df.drop(\"Outcome\", axis=1).values สร้างตัวแปร x เก็บข้อมูล features โดยลบคอลัมน์ \"Outcome\" (ซึ่งเป็นผลลัพธ์ที่ต้องการทำนาย) ออก และแปลงเป็น NumPy array. - y=df\[\"Outcome\"\].values สร้างตัวแปร y เก็บข้อมูลผลลัพธ์ (Outcome) และแปลงเป็น NumPy array. - train\_test\_split(x,y,test\_size=0.2,random\_state=0) แบ่งข้อมูล x และ y ออกเป็นชุดฝึกฝน (x\_train, y\_train) และชุดทดสอบ (x\_test, y\_test) โดยกำหนดขนาดของชุดทดสอบเป็น 20% (test\_size=0.2) และ random\_state=0 เพื่อให้การแบ่งข้อมูลเหมือนเดิมทุกครั้งที่รัน. - ส่วนที่ 3: ฝึกโมเดลและทำนาย (Model Training and Prediction) - ส่วนที่ 4: ประเมินโมเดล (Model Evaluation) **การจัดหมวดหมู่ด้วย Naive Bayes** - Naive Bayes เป็นอัลกอริทึมการจำแนกประเภท (classification algorithm) ที่อาศัยทฤษฎีบทของเบย์ (Bayes\' Theorem) โดยอาศัยสมมติฐานที่สำคัญว่า แอตทริบิวต์ทั้งหมดเป็นอิสระจากกัน (independent) นั่นหมายความว่า ข้อมูลที่นำมาใช้สามารถไม่มีความสัมพันธ์ระหว่างแอตทริบิวต์ - เหตุผลที่ Naive Bayes ใช้ได้ดีเมื่อข้อมูลไม่มีความสัมพันธ์ - ความง่ายในการคำนวณ: Naive Bayes ช่วยให้การคำนวณง่ายขึ้นมาก เพราะมันสมมติว่าแอตทริบิวต์ทั้งหมดเป็นอิสระจากกัน นั่นหมายความว่าเราสามารถคำนวณความน่าจะเป็นของแต่ละแอตทริบิวต์แยกกันได้ โดยไม่ต้องคำนึงถึงความสัมพันธ์ระหว่างแอตทริบิวต์เหล่านั้น - การทำงานกับข้อมูลที่ซับซ้อนได้ดี: แม้ว่าในชีวิตจริงข้อมูลจะมีความสัมพันธ์กันบ้าง (เช่น คำบางคำอาจเกิดขึ้นพร้อมกันในข้อความ) แต่ Naive Bayes ยังสามารถทำงานได้ดีในหลายๆ กรณี เช่น การจำแนกประเภทอีเมลเป็นสแปม หรือไม่ใช่สแปม โดยไม่ต้องมีการพิจารณาความสัมพันธ์ระหว่างคำในอีเมล **สมการหลักของ Naive Bayes** ![รูปภาพประกอบด้วย ข้อความ, ตัวอักษร, ไลน์, ภาพหน้าจอ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image52.png) - P(c\|x): Posterior probability - ความน่าจะเป็นที่ข้อมูลที่มีแอตทริบิวต์ x จะมีคลาส c (เช่น ข้อมูล(x)ที่เรารวบรวมมาว่าควรอยู่ที่กลุ่ม(c)อะไร) - P(x\|c): Likelihood - ความน่าจะเป็นที่ข้อมูลในคลาส *c* จะมีแอตทริบิวต์ *x* (เช่น ข้อมูลที่เป็นคลาส c มักมีลักษณะ x อะไรบ้าง) - P(c): Prior probability - ความน่าจะเป็นที่คลาส c จะเกิดขึ้นในข้อมูลทั้งหมด (เช่น คลาสนี้เกิดขึ้นกี่ครั้งในชุดข้อมูลทั้งหมด) (Class ที่เกิดขึ้น / จำนวนClass ทั้งหมด) - P(x): Predictor prior probability - ความน่าจะเป็นที่แอตทริบิวต์ x จะเกิดขึ้นในข้อมูลทั้งหมด (เช่น แอตทริบิวต์แบบ x พบได้บ่อยแค่ไหน) (จำนวน Attribute ทั้งหมด) **ประเภทของ Naive Bayes** รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ตัวอักษร คำอธิบายที่สร้างโดยอัตโนมัติ 1. Gaussian Naive Bayes a. เหมาะกับข้อมูลแบบ: ตัวเลขต่อเนื่อง (Continuous features) เช่น ส่วนสูง น้ำหนัก อายุ เป็นต้น b. สมมติฐานสำคัญ: ค่าของแต่ละแอตทริบิวต์ในคลาสเดียวกันมีการแจกแจงแบบปกติ (Normal Distribution หรือ Gaussian Distribution) c. วิธีการคำนวณ P(x∣c)*P*(*x*∣*c*) i. คำนวณจากสมการของการแจกแจงแบบปกติ![รูปภาพประกอบด้วย ข้อความ, ตัวอักษร, ภาพหน้าจอ, สีดำ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image54.png) d. ตัวอย่าง: การจำแนกคนว่าเป็น \"เด็ก\", \"วัยรุ่น\" หรือ \"ผู้ใหญ่\" โดยใช้ข้อมูลส่วนสูงและน้ำหนัก 2. Multinomial Naive Bayes e. เหมาะกับข้อมูลแบบ: การนับ (Count data) เช่น จำนวนครั้งที่คำปรากฏในเอกสาร, จำนวนคลิกในเว็บไซต์ เป็นต้น f. สมมติฐานสำคัญ: ข้อมูลเป็นการแจกแจงแบบ multinomial (มีลักษณะการนับค่าที่เกิดขึ้นหลายค่า) g. วิธีการคำนวณ *P*(*x*∣*c*) ii. ใช้ความถี่สัมพัทธ์ (relative frequency) หรือโอกาสที่ค่าต่างๆ จะเกิดขึ้นในแต่ละคลาส *c*: รูปภาพประกอบด้วย ข้อความ, ตัวอักษร, ภาพหน้าจอ, สีดำ คำอธิบายที่สร้างโดยอัตโนมัติ iii. ตัวอย่าง: การจำแนกอีเมลว่าเป็น \"สแปม\" หรือ \"ไม่ใช่สแปม\" โดยนับจำนวนครั้งที่คำว่า \"ฟรี\", \"เงิน\", \"โปรโมชั่น\" ปรากฏในข้อความ 3. Bernoulli Naive Bayes h. เหมาะกับข้อมูลแบบ: ข้อมูลที่เป็นประเภท \"มี/ไม่มี\" หรือ \"ใช่/ไม่ใช่\" (Binary features) เช่น คำปรากฏในเอกสารหรือไม่, สมาชิกอยู่ใน EU หรือไม่ เป็นต้น i. สมมติฐานสำคัญ: ข้อมูลในแต่ละฟีเจอร์มีเพียงสองค่า (binary values) เช่น 0/1 หรือ True/False j. วิธีการคำนวณ *P*(*x*∣*c*) iv. คำนวณจากความน่าจะเป็นแบบ Bernoulli distribution![รูปภาพประกอบด้วย ข้อความ, ตัวอักษร, ภาพหน้าจอ, สีดำ คำอธิบายที่สร้างโดยอัตโนมัติ](media/image56.png) v. **ตัวอย่าง:** การพิจารณาว่าลูกค้าอยู่ในกลุ่มที่เป็นสมาชิก EU หรือไม่ ความแตกต่างระหว่าง Naive Bayes, KNN และ SVM รูปภาพประกอบด้วย ข้อความ, ภาพหน้าจอ, ตัวอักษร, จำนวน คำอธิบายที่สร้างโดยอัตโนมัติ 1. Naive Bayes (NB) a. **หลักการทำงาน:** ใช้ **ทฤษฎีบทของเบย์ (Bayes\' Theorem)** เพื่อคำนวณความน่าจะเป็นที่ตัวอย่างจะอยู่ในคลาสใด โดยสมมติว่าแอตทริบิวต์ทั้งหมดอิสระต่อกัน (Naive assumption) b. **ข้อดี:** i. ทำงานได้เร็วและมีประสิทธิภาพสูง โดยเฉพาะกับข้อมูลที่มีมิติสูง (high-dimensional data) เช่น การจัดการข้อความ ii. ต้องการข้อมูลน้อยในการเทรน (robust to small datasets) iii. ง่ายต่อการตีความผลลัพธ์ c. **ข้อเสีย:** iv. ประสิทธิภาพลดลงเมื่อแอตทริบิวต์มีความสัมพันธ์กัน (correlated features) v. มีข้อจำกัดในการประมาณค่าความน่าจะเป็น หากข้อมูลบางประเภทไม่เคยปรากฏในคลาสใด (Zero-frequency problem) d. **กรณีการใช้งาน:** vi. การจำแนกประเภทข้อความ เช่น การกรองอีเมลสแปม vii. การวิเคราะห์ความรู้สึก (Sentiment Analysis) viii. Real time Prediction: เนื่องจากอัลกอริทึม Naïve Bayes ทำงานได้เร็ว จะเหมาะกำงานที่ทำนายแบบ Real Time ix. การวิเคราะห์ Text: เช่นระบบคัดแยก Spam ระบบวิเคราะห์ความเห็นของประโยค (Sentiment Analysis) เช่น วิเคราะห์ความเห็นของลูกค้า (Feedback/comment) ว่าเป็นบวกหรือลบ 2. K-Nearest Neighbors (KNN) e. หลักการทำงาน: KNN เป็นอัลกอริทึม non-parametric และ instance-based learning ที่อาศัยระยะห่างระหว่างตัวอย่าง โดยพิจารณา k ตัวอย่างใกล้เคียงที่สุด (neighbors) เพื่อทำการลงคะแนนและจัดคลาสให้กับข้อมูลใหม่ x. ระยะทางที่ใช้ทั่วไป: Euclidean distance f. **ข้อดี:** xi. ตรงไปตรงมาและเข้าใจง่าย xii. ใช้ได้ดีกับข้อมูลที่มีขอบเขตคลาสซับซ้อน (complex decision boundaries) xiii. ไม่ต้องการกระบวนการเทรน (training-free) g. ข้อเสีย: xiv. ประสิทธิภาพลดลงเมื่อมีข้อมูลจำนวนมากหรือมีมิติสูง (computationally expensive) xv. มีความไวต่อค่าพารามิเตอร์ k และการเลือกระยะทาง (distance metric) xvi. อ่อนไหวต่อ noisy data h. กรณีการใช้งาน: xvii. การรู้จำลายมือเขียน (Handwriting recognition) xviii. การคาดการณ์ราคาบ้าน (Regression)