การปรับสเกลคุณลักษณะ: การทำให้เป็นบรรทัดฐานและมาตรฐาน
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 ~1MinMax เทียบกับแบบมาตรฐาน
ใช้ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตรวจจับและนำค่าผิดปกติออก
- การเข้ารหัสตัวแปรเชิงหมวดหมู่
- การปรับสเกลคุณลักษณะ: การทำให้เป็นบรรทัดฐานและมาตรฐาน
- การสร้างสายงานการเตรียมข้อมูล