จะเปรียบเทียบประสิทธิภาพของวิธีการเลือกคุณสมบัติได้อย่างไร


10

มีวิธีการเลือกคุณสมบัติ / วิธีเลือกตัวแปรหลายวิธี (ดูตัวอย่างGuyon & Elisseeff, 2003 ; Liu et al., 2010 ):

  • วิธีการกรอง (เช่นความสัมพันธ์, อิงตามเอนโทรปี, อิงตามความสำคัญของป่าแบบสุ่ม),
  • วิธีการ wrapper (เช่นการค้นหาไปข้างหน้าการค้นหาการปีนเขา) และ
  • วิธีการฝังตัวที่การเลือกคุณสมบัติเป็นส่วนหนึ่งของการเรียนรู้รูปแบบ

อัลกอริทึมที่เผยแพร่จำนวนมากถูกนำไปใช้ในเครื่องมือการเรียนรู้ของเครื่องเช่น R, Python และอื่น ๆ

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

คำตอบ:


4

นี่เป็นปัญหาที่ยากและนักวิจัยกำลังก้าวหน้าไปมาก

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

ข้อแม้หลักสองประการของ LASSO คือ (1) ฟีเจอร์ที่เลือกจะไม่ตรวจจับการโต้ตอบโดยอัตโนมัติดังนั้นคุณต้องสร้างฟีเจอร์ทั้งหมดของคุณเป็นเบื้องต้น (เช่นก่อนที่จะเรียกใช้ผ่านโมเดล) และ (2) LASSO จะไม่ระบุตัวตนไม่ใช่ - ความสัมพันธ์แบบเชิงเส้น (เช่นความสัมพันธ์กำลังสอง )

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

หากคุณกำลังมองหาการเลือกคุณสมบัติที่ไม่ได้รับการสนับสนุนดูเหมือนว่าจะมีวิธีการทำให้เป็นมาตรฐานที่คล้ายกันซึ่งนักวิจัยเหล่านี้ใช้แต่การประเมินผลในกรณีนี้จะชัดเจนน้อยลง ผู้คนลองทำสิ่งต่าง ๆ มากมายเช่น PCA / SVD หรือ K-Means ซึ่งท้ายที่สุดแล้วจะพยายามหาค่าประมาณเชิงเส้นของข้อมูล

ในกรณีดังกล่าวการวัดประสิทธิภาพโดยทั่วไปคือข้อผิดพลาดในการสร้างใหม่หรือ RMSE ของกลุ่ม

ในแง่ของซอฟต์แวร์ R และ Python ทั้งสองมี GBM, LASSO, K-Means, SVD และ PCA GLMNET และ XGBoost ใน R และ Sklearn สำหรับ Python เป็นไลบรารี่ที่เกี่ยวข้อง


1

ฉันพิจารณาการเลือกคุณสมบัติเป็นขั้นตอนต่อผลลัพธ์สุดท้ายเสมอ

ต่อไปนี้ฉันจะผสมผสานการเลือกคุณลักษณะและการลดขนาดซึ่งอาจมีเป้าหมายและสับสน

การใช้งานทั่วไป:

  • การลดการคำนวณในการเรียนรู้ของเครื่อง: คุณภาพของการเลือกเป็นปัจจัยของผลการเรียนรู้ขั้นสุดท้ายและเห็นได้ชัดว่าความเร็วในการเรียนรู้ทำได้

  • การสร้างภาพ / ความเข้าใจของข้อมูลที่คุณรวมหลายมิติในที่สุด เป็นเรื่องที่ดีเมื่อไม่ซ่อนสิ่งที่น่าสนใจและเมื่อมันเข้าใจได้

  • ทำให้การเรียนรู้ง่ายขึ้นและยังทำให้พวกเขาเข้าใจได้ (เช่นการวิเคราะห์สาเหตุของปัญหา) ดีถ้าเรียบง่าย แต่ยังเพียงพอในด้านคุณภาพ

  • การควบคุมที่เหมาะสมดังที่คำตอบก่อนหน้านี้แนะนำ

  • ...

ดังนั้นฉันไม่คิดว่าจะมีกฎทั่วไป (เช่นเคยใน ML) แต่นี่เป็นกรณีปัญหา

เป็นเพียงความเชื่อส่วนตัว ...


0

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

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

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


0

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

เคล็ดลับที่ดีคือเก็บชุดของตัวแปรอินพุตแบบสุ่มด้วยการแจกแจงที่แตกต่างกันและตรวจสอบให้แน่ใจว่าคุณสมบัติการเลือกของคุณ algos แท็กแน่นอนว่าไม่เกี่ยวข้อง

เคล็ดลับก็คือเพื่อให้แน่ใจว่าหลังจากอนุญาตแถวตัวแปรที่ติดแท็กเป็นหยุดที่เกี่ยวข้องจะถูกจัดเป็นที่เกี่ยวข้อง

ดังกล่าวข้างต้นนำไปใช้กับทั้งวิธีการกรองและเสื้อคลุม

นอกจากนี้ต้องแน่ใจว่าจัดการกรณีเมื่อตัวแปรที่แยกจากกัน (หนึ่งต่อหนึ่ง) ไม่แสดงอิทธิพลใด ๆ ต่อเป้าหมาย แต่เมื่อนำมาร่วมกันเปิดเผยการพึ่งพาที่แข็งแกร่ง ตัวอย่างจะเป็นปัญหา XOR ที่รู้จักกันดี (ตรวจสอบรหัส Python):

import numpy as np
import matplotlib.pyplot as plt
from sklearn.feature_selection import f_regression, mutual_info_regression,mutual_info_classif

x=np.random.randn(5000,3)
y=np.where(np.logical_xor(x[:,0]>0,x[:,1]>0),1,0)

plt.scatter(x[y==1,0],x[y==1,1],c='r',marker='x')
plt.scatter(x[y==0,0],x[y==0,1],c='b',marker='o')
plt.show()
print(mutual_info_classif(x, y)) 

เอาท์พุท:

Python 3 XOR ภาพประกอบ

[0. 0. 0.00429746]

ดังนั้นวิธีการกรองที่ทรงพลัง (แต่ไม่มีตัวแปร) (การคำนวณข้อมูลร่วมกันระหว่างตัวแปรออกและอินพุต) ไม่สามารถตรวจจับความสัมพันธ์ใด ๆ ในชุดข้อมูลได้ ในขณะที่เรารู้แน่นอนว่ามันขึ้นอยู่กับการพึ่งพา 100% และเราสามารถทำนาย Y ด้วยความแม่นยำ 100% ที่รู้ว่า X

ความคิดที่ดีคือการสร้างเกณฑ์มาตรฐานสำหรับวิธีการเลือกคุณสมบัติทุกคนต้องการมีส่วนร่วมหรือไม่?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.