วิธีการคัดเลือกคุณลักษณะ
วิธีแบบกรอง (ความแปรปรวน สหสัมพันธ์) แบบครอบคลุม (RFE) และแบบฝังตัว (การทำให้เป็นปกติแบบ L1)
วิธีการคัดเลือกคุณลักษณะ เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องคัดเลือกคุณลักษณะ
การคัดเลือกคุณลักษณะจะเก็บไว้เฉพาะคอลัมน์ที่มีประโยชน์ที่สุด คุณลักษณะที่น้อยลงทำให้ฝึกโมเดลได้เร็วขึ้น ลดการปรับพอดีเกินไป และตีความได้ง่ายขึ้น การลบสัญญาณรบกวนมักช่วยเพิ่มความแม่นยำได้ด้วย
วิธีการสามตระกูล
วิธีการคัดเลือกแบ่งออกเป็นสามกลุ่ม:
- การกรองจัดอันดับคุณลักษณะตามสถิติ (รวดเร็ว ไม่ขึ้นกับโมเดล)
- แบบห่อหุ้มค้นหาชุดย่อยด้วยการฝึกโมเดล (ช้า แต่แม่นยำ)
- แบบฝังในตัวการคัดเลือกเกิดขึ้นระหว่างการฝึกโมเดล
VarianceThreshold
วิธีการกรองที่ง่ายที่สุด: VarianceThreshold จะลบคุณลักษณะที่มีความแปรปรวนต่ำกว่าค่าเกณฑ์ตัด คอลัมน์ที่แทบไม่เปลี่ยนแปลงไม่มีข้อมูลที่เป็นประโยชน์
from sklearn.feature_selection import VarianceThreshold
sel = VarianceThreshold(threshold=0.01)
X_reduced = sel.fit_transform(X)
print("Kept:", X_reduced.shape[1], "of", X.shape[1])SelectKBest พร้อม f_classif
SelectKBest จะเก็บคุณลักษณะที่มีคะแนนสูงสุดจำนวน K รายการ เมื่อใช้ร่วมกับ f_classif จะใช้การทดสอบ F แบบ ANOVA เพื่อวัดว่าคุณลักษณะแต่ละรายการสัมพันธ์กับป้ายกำกับคลาสมากเพียงใด
from sklearn.feature_selection import SelectKBest, f_classif
sel = SelectKBest(score_func=f_classif, k=10)
X_best = sel.fit_transform(X, y)
print(sel.get_support(indices=True))ข้อมูลร่วม
mutual_info_classif จะวัดการพึ่งพากันระหว่างคุณลักษณะกับตัวแปรเป้าหมายทุกรูปแบบ รวมถึงแบบไม่เป็นเชิงเส้น ต่างจากการทดสอบ F ตรงที่สามารถจับความสัมพันธ์แบบไม่เป็นเชิงเส้นซึ่ง ANOVA มองไม่เห็น
from sklearn.feature_selection import SelectKBest, mutual_info_classif
sel = SelectKBest(score_func=mutual_info_classif, k=10)
X_mi = sel.fit_transform(X, y)การเปรียบเทียบ f_classif กับ mutual_info
f_classif ทำงานรวดเร็วและตรวจจับความสัมพันธ์เชิงเส้น ส่วน mutual_info_classif ช้ากว่าแต่ตรวจจับความสัมพันธ์แบบไม่เป็นเชิงเส้นได้ หากคาดว่าความสัมพันธ์มีความซับซ้อน ให้เลือกใช้ข้อมูลร่วม
import numpy as np
from sklearn.feature_selection import f_classif, mutual_info_classif
f_scores, _ = f_classif(X, y)
mi_scores = mutual_info_classif(X, y)
print("F-test top:", np.argsort(f_scores)[::-1][:5])
print("MI top:", np.argsort(mi_scores)[::-1][:5])การตัดคุณลักษณะแบบวนซ้ำ
RFE เป็นวิธีแบบห่อหุ้ม โดยจะฝึกโมเดล ลบคุณลักษณะที่อ่อนแอที่สุด แล้วทำซ้ำ วิธีนี้ใช้สัญญาณความสำคัญจากโมเดลเองเพื่อจัดอันดับคุณลักษณะ
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
rfe = RFE(estimator=LogisticRegression(max_iter=1000), n_features_to_select=10)
rfe.fit(X, y)
print(rfe.support_)RFECV: การเลือกจำนวนโดยอัตโนมัติ
RFECV เพิ่มการตรวจสอบไขว้ให้กับ RFE เพื่อค้นหาจำนวนคุณลักษณะที่เหมาะสมที่สุดจากคะแนนการตรวจสอบ แทนการเดาจำนวนไว้ตายตัว
from sklearn.feature_selection import RFECV
from sklearn.ensemble import RandomForestClassifier
rfecv = RFECV(
estimator=RandomForestClassifier(),
cv=5,
scoring="accuracy",
)
rfecv.fit(X, y)
print("Optimal features:", rfecv.n_features_)SelectFromModel พร้อมแลสโซ
การคัดเลือกแบบฝังในตัว: แลสโซ (L1) จะลดค่าสัมประสิทธิ์ที่ไม่สำคัญให้เป็นศูนย์พอดี จากนั้น SelectFromModel จะเก็บไว้เฉพาะค่าสัมประสิทธิ์ที่ไม่เป็นศูนย์
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import Lasso
sel = SelectFromModel(Lasso(alpha=0.01))
sel.fit(X, y)
X_lasso = sel.transform(X)
print("Kept:", X_lasso.shape[1])SelectFromModel พร้อมค่าความสำคัญจากต้นไม้
SelectFromModel ยังทำงานร่วมกับตัวประมาณค่าใด ๆ ที่เปิดเผย feature_importances_ ได้ เช่น ป่าสุ่ม ตั้งค่า threshold เป็นค่าอย่างค่าเฉลี่ยหรือค่ามัธยฐาน
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestClassifier
sel = SelectFromModel(
RandomForestClassifier(n_estimators=200),
threshold="median",
)
sel.fit(X, y)การเลือกวิธีการ
เริ่มด้วยวิธีกรองที่มีต้นทุนต่ำ (VarianceThreshold, SelectKBest) เพื่อลบข้อมูลที่ไม่จำเป็นอย่างเห็นได้ชัด ใช้ SelectFromModel แบบฝังในตัวเพื่อให้ได้สมดุลที่ดี เลือกใช้ RFECV เมื่อความแม่นยำสำคัญที่สุดและมีทรัพยากรประมวลผลเพียงพอ
ตรวจสอบความเข้าใจ
ตรวจสอบความรู้เกี่ยวกับการคัดเลือกคุณลักษณะของคุณ
สรุป
สรุป: การคัดเลือกคุณลักษณะประกอบด้วยวิธีกรอง (VarianceThreshold, SelectKBest ร่วมกับ f_classif หรือ mutual_info_classif) วิธีแบบห่อหุ้ม (RFECV) และวิธีแบบฝังในตัว (SelectFromModel ร่วมกับแลสโซหรือค่าความสำคัญจากต้นไม้) วิธีกรองเร็วที่สุด ส่วน RFECV แม่นยำที่สุด ใช้ข้อมูลร่วมกับความสัมพันธ์แบบไม่เป็นเชิงเส้น
คำถามที่พบบ่อย
บทเรียน “วิธีการคัดเลือกคุณลักษณะ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “วิธีการคัดเลือกคุณลักษณะ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “วิธีการคัดเลือกคุณลักษณะ”
วิธีแบบกรอง (ความแปรปรวน สหสัมพันธ์) แบบครอบคลุม (RFE) และแบบฝังตัว (การทำให้เป็นปกติแบบ L1) คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “วิธีการคัดเลือกคุณลักษณะ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- วิธีการคัดเลือกคุณลักษณะ
- การสร้างคุณลักษณะปฏิสัมพันธ์และพหุนาม
- การเข้ารหัสเป้าหมายและการจัดการข้อมูลเชิงหมวดหมู่ขั้นสูง
- วิศวกรรมคุณลักษณะอัตโนมัติด้วย Featuretools