0Pricing
Learn AI with Python · บทเรียน

การปรับสเกลคุณลักษณะ: การทำให้เป็นบรรทัดฐานและมาตรฐาน

MinMaxScaler, StandardScaler, RobustScaler — ควรใช้แต่ละแบบเมื่อใดและเหตุใดจึงสำคัญ

การปรับสเกลคุณลักษณะ: การทำให้เป็นบรรทัดฐานและมาตรฐาน เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงต้องปรับสเกลคุณลักษณะ

อัลกอริทึมจำนวนมากไวต่อ MAGNITUDE ของคุณลักษณะ คุณลักษณะที่มีช่วงตั้งแต่ 0 ถึง 1,000,000 จะครอบงำคุณลักษณะที่มีช่วงตั้งแต่ 0 ถึง 1 ในแบบจำลองที่อาศัยระยะทางหรือการไล่ระดับ การปรับสเกลทำให้คุณลักษณะต่าง ๆ อยู่ในช่วงที่เปรียบเทียบกันได้

กรณีที่จำเป็นต้องปรับสเกล

การปรับสเกลมีความสำคัญกับ KNN, SVM, การจัดกลุ่มแบบ k-มีนส์, PCA และแบบจำลองที่ใช้การไล่ระดับ เช่น การถดถอยเชิงเส้น/โลจิสติกและโครงข่ายประสาท แบบจำลองที่ใช้ต้นไม้ เช่น ป่าสุ่มและการเพิ่มพูนแบบไล่ระดับ ไม่ขึ้นกับสเกลและไม่จำเป็นต้องปรับสเกล

การทำให้เป็นมาตรฐานด้วย MinMaxScaler

การทำให้เป็นมาตรฐานแบบมิน-แมกซ์ปรับสเกลแต่ละคุณลักษณะให้อยู่ในช่วงคงที่ ซึ่งโดยทั่วไปคือ 0 ถึง 1 ด้วย (x - min) / (max - min) โดยรักษารูปร่างของการกระจายไว้

from sklearn.preprocessing import MinMaxScaler
import numpy as np
X = np.array([[10.0], [20.0], [30.0], [40.0]])
scaler = MinMaxScaler()
print(scaler.fit_transform(X).ravel())   # [0. 0.333 0.667 1.]

การทำให้เป็นมาตรฐานด้วย StandardScaler

การทำให้เป็นมาตรฐานทำให้แต่ละคุณลักษณะมีค่าเฉลี่ยเป็นศูนย์และมีความแปรปรวนหนึ่งหน่วยด้วย (x - mean) / std ผลลัพธ์คือคะแนน z โดยค่าจะถูกจัดให้อยู่กึ่งกลางแต่ไม่ได้ถูกจำกัดอยู่ในขอบเขต

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
Xs = scaler.fit_transform(X)
print(Xs.ravel())
print(Xs.mean(), Xs.std())   # ~0 and ~1

MinMax เทียบกับแบบมาตรฐาน

ใช้ MinMax เมื่อจำเป็นต้องมีช่วงที่มีขอบเขต เช่น พิกเซลภาพหรือข้อมูลป้อนเข้าโครงข่ายประสาท ใช้ แบบมาตรฐานเมื่ออัลกอริทึมสมมติว่าข้อมูลมีศูนย์กลางใกล้ศูนย์ เช่น PCA, SVM และแบบจำลองเชิงเส้น MinMax ไวต่อค่าผิดปกติมากกว่า

RobustScaler สำหรับค่าผิดปกติ

RobustScaler จัดศูนย์ข้อมูลโดยใช้ MEDIAN และปรับสเกลด้วย IQR เนื่องจากทั้งสองค่าทนต่อค่าผิดปกติ จึงเหมาะเมื่อค่าที่สุดขั้วอาจทำให้ตัวปรับสเกลแบบอื่นบิดเบือน

from sklearn.preprocessing import RobustScaler
Xo = np.array([[1.0], [2.0], [3.0], [4.0], [100.0]])
print(RobustScaler().fit_transform(Xo).ravel())

fit เทียบกับ transform

ตัวปรับสเกลจะ LEARN พารามิเตอร์ใน fit (ค่าต่ำสุด/ค่าสูงสุด หรือ mean/std) และ APPLY พารามิเตอร์เหล่านั้นใน transform ส่วน fit_transform ทำทั้งสองอย่างภายในการเรียกครั้งเดียว

scaler = StandardScaler()
scaler.fit(X)          # learns mean and std
Xs = scaler.transform(X)   # applies them

กฎทอง: ใช้ fit กับชุดฝึกเท่านั้น

ใช้ fit กับชุด TRAINING เสมอ จากนั้นใช้เพียง transform กับชุดทดสอบโดยใช้พารามิเตอร์ที่เรียนรู้ไว้ การใช้ fit กับข้อมูลทดสอบทำให้ข้อมูลเกี่ยวกับชุดทดสอบรั่วไหลเข้าสู่แบบจำลอง

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)   # transform only!

เหตุใดจึงไม่ใช้ fit กับชุดทดสอบ

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

การแปลงย้อนกลับ

ตัวปรับสเกลสามารถย้อนการดำเนินการได้ด้วย inverse_transform ซึ่งมีประโยชน์สำหรับแปลงค่าพยากรณ์ที่ปรับสเกลแล้วกลับเป็นหน่วยเดิมเพื่อรายงานผล

original = scaler.inverse_transform(X_train_scaled)
# recovers the pre-scaled values

การปรับสเกลตัวแปรเป้าหมาย

โดยทั่วไปในการจำแนกประเภท คุณจะปรับสเกล FEATURES ไม่ใช่ตัวแปรเป้าหมาย ส่วนการถดถอยอาจปรับสเกลตัวแปรเป้าหมายด้วยก็ได้ แต่ต้องอย่าลืมแปลงค่าพยากรณ์กลับก่อนรายงานข้อผิดพลาด

ตรวจสอบอย่างรวดเร็ว

ทดสอบความรู้เรื่องการปรับสเกลของคุณ

ทบทวน

ชุดเครื่องมือการปรับสเกล:

  • การปรับสเกลมีความสำคัญกับแบบจำลองที่อาศัยระยะทางหรือการไล่ระดับ ส่วนต้นไม้ไม่สนใจการปรับสเกล
  • MinMaxScaler -> ช่วงที่มีขอบเขต 0..1; StandardScaler -> ค่าเฉลี่ยเป็นศูนย์ ความแปรปรวนหนึ่งหน่วย
  • RobustScaler ใช้ median และ IQR จึงทนต่อค่าผิดปกติ
  • ใช้ fit_transform กับข้อมูลฝึกเสมอ และใช้ transform กับข้อมูลทดสอบเท่านั้น เพื่อหลีกเลี่ยงข้อมูลรั่วไหล

คำถามที่พบบ่อย

บทเรียน “การปรับสเกลคุณลักษณะ: การทำให้เป็นบรรทัดฐานและมาตรฐาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การปรับสเกลคุณลักษณะ: การทำให้เป็นบรรทัดฐานและมาตรฐาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การปรับสเกลคุณลักษณะ: การทำให้เป็นบรรทัดฐานและมาตรฐาน”

MinMaxScaler, StandardScaler, RobustScaler — ควรใช้แต่ละแบบเมื่อใดและเหตุใดจึงสำคัญ คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การปรับสเกลคุณลักษณะ: การทำให้เป็นบรรทัดฐานและมาตรฐาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตรวจจับและนำค่าผิดปกติออก
  2. การเข้ารหัสตัวแปรเชิงหมวดหมู่
  3. การปรับสเกลคุณลักษณะ: การทำให้เป็นบรรทัดฐานและมาตรฐาน
  4. การสร้างสายงานการเตรียมข้อมูล
← กลับไปที่ Learn AI with Python