แนวคิด AI ด้วย Python

การเตรียมข้อมูลสำหรับแมชชีนเลิร์นนิงใน Python

โมเดลแมชชีนเลิร์นนิงเรียนรู้จากตัวเลข และเรียนรู้ได้ดีขึ้นเมื่อฟีเจอร์มีสเกลใกล้เคียงกัน การทำ normalization และ standardization ช่วยปรับสเกลข้อมูล ส่วนการคูณเมทริกซ์คือวิธีที่โมเดลรวมฟีเจอร์จำนวนมากพร้อมกัน

แนวคิดแบบเข้าใจง่าย

โมเดลแมชชีนเลิร์นนิงเรียนรู้จากตัวเลข และเรียนรู้ได้ดีขึ้นเมื่อฟีเจอร์มีสเกลใกล้เคียงกัน การทำ normalization และ standardization ช่วยปรับสเกลข้อมูล ส่วนการคูณเมทริกซ์คือวิธีที่โมเดลรวมฟีเจอร์จำนวนมากพร้อมกัน

ปรับสเกลฟีเจอร์ด้วย min-max normalization และ z-score standardization และคูณเมทริกซ์ด้วยมือ

ประเด็นสำคัญ

  • ฟีเจอร์ที่มีสเกลต่างกันมากจะทำให้ตัวเลขใหญ่ครอบงำโมเดล
  • min-max เก็บค่าไว้ระหว่าง 0 ถึง 1 ส่วน z-score คงรูปการกระจายไว้แต่ย้ายจุดกึ่งกลางไปที่ 0
  • คำนวณค่าสำหรับปรับสเกลจากข้อมูลฝึก แล้วใช้ค่าเดิมกับข้อมูลใหม่
  • การคูณเมทริกซ์ A × B ต้องให้จำนวนคอลัมน์ของ A เท่ากับจำนวนแถวของ B

ควรใช้เมื่อใด?

  • เข้าใจสิ่งที่เกิดขึ้นภายในโครงข่ายประสาทเทียมและไลบรารี AI
  • เข้าใจแนวคิดก่อนลงมือเขียนเองในโจทย์ที่เกี่ยวข้อง
  • เตรียมตัวสำหรับคอร์สแมชชีนเลิร์นนิง การสัมภาษณ์งาน และโปรเจกต์

ลองดูการทำงานจริง

ลาก x5 เพื่อสร้างค่าผิดปกติ แล้วเปรียบเทียบว่า min-max และ z-score ตอบสนองอย่างไร ชี้ที่ช่องของ A·B เพื่อดูว่าใช้แถวและคอลัมน์ใด

โค้ดตัวอย่าง

รันโค้ด →
main.py
import statistics

heights = [150, 160, 170, 180, 190]

# Min-max scaling squeezes values into the range 0..1.
low, high = min(heights), max(heights)
print("min-max:", [round((h - low) / (high - low), 2) for h in heights])

# Z-score standardization centres values on 0 with a spread of 1.
mean = statistics.mean(heights)
std = statistics.pstdev(heights)
print("z-scores:", [round((h - mean) / std, 2) for h in heights])

# Matrix multiplication: each output is a row of A dotted with a column of B.
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
product = [[sum(A[i][k] * B[k][j] for k in range(2)) for j in range(2)] for i in range(2)]
print("A x B:", product)

ผลลัพธ์ที่คาดหวัง

min-max: [0.0, 0.25, 0.5, 0.75, 1.0]
z-scores: [-1.41, -0.71, 0.0, 0.71, 1.41]
A x B: [[19, 22], [43, 50]]

หลักการทำงาน

การปรับสเกลแบบ min-max ทำให้ส่วนสูงที่น้อยที่สุดเป็น 0 และมากที่สุดเป็น 1 ส่วน z-score ลบค่าเฉลี่ยแล้วหารด้วยส่วนเบี่ยงเบนมาตรฐาน ค่าจึงกระจายรอบ 0 ในผลคูณเมทริกซ์ แต่ละช่องคือแถวของ A คูณกับคอลัมน์ของ B ทีละตัวแล้วรวมกัน

เปลี่ยนค่าและรันโปรแกรมด้วย คอมไพเลอร์ Python ออนไลน์ของ CodeUtility โดยไม่ต้องติดตั้ง Python

แบบฝึกหัด

ลองเปลี่ยน input และทดสอบกรณีขอบก่อนใช้ชุดข้อมูลที่ใหญ่ขึ้น

  1. เปลี่ยนอินพุตหรือน้ำหนัก แล้วลองทายผลลัพธ์ก่อนรัน
  2. พิมพ์ค่าระหว่างทางออกมาเพื่อดูการคำนวณทีละขั้น
  3. แก้โจทย์ที่ลิงก์ไว้ด้านล่างเพื่อเขียนแนวคิดนี้ด้วยตัวเอง
รันใน Python IDE →

ฝึกด้วยโจทย์

ใช้สิ่งที่เรียนในบทนี้แก้ปัญหาจริง ทุกโจทย์รันในเบราว์เซอร์ พร้อมการทดสอบทันทีและรีวิวจาก AI

โจทย์ทั้งหมด