ฉันมีชุดข้อมูลของตัวอย่าง 140000 ตัวอย่างและคุณลักษณะ 30 อย่างที่ฉันกำลังฝึกอบรมตัวแยกประเภทหลายตัวสำหรับการจำแนกเลขฐานสอง (SVM, การถดถอยโลจิสติก, การสุ่มป่า ฯลฯ )
ในหลายกรณีการปรับพารามิเตอร์แบบหลายมิติบนชุดข้อมูลทั้งหมดโดยใช้การค้นหาแบบกริดหรือแบบสุ่มนั้นใช้เวลานานเกินไป
ฉันเริ่มใช้เทคนิคต่อไปนี้
- ตัวอย่างชุดย่อยของฉัน
- ใช้เศษส่วนที่ได้รับเพื่อปรับพารามิเตอร์หลายมิติบน
- ใช้พารามิเตอร์ที่ได้รับเพื่อฝึกฝนโมเดลโดยใช้ชุดข้อมูลทั้งหมด
เพื่อประเมินชุดของพารามิเตอร์แต่ละเกี่ยวกับการใช้ขั้นตอนที่สองผมsklearn
's GridSearchCV
กับพันธุ์ = 10 เพื่อประเมินรุ่นสุดท้ายที่ฉันจะสร้างในขั้นตอนที่สามผมใช้'ssklearn
cross_val_predict
ในแง่นั้นฉันประเมินแบบจำลองของฉันที่ทิ้งข้อมูล 10% ของข้อมูลออกไปฉันทำการฝึกอบรมส่วนที่เหลือและวัดความแม่นยำในการทำนาย 10% หรือ 10 เท่าแล้วจึงเฉลี่ยคะแนน
สิ่งที่ทำให้ฉันกังวลคือความแม่นยำในการทำนายที่ฉันได้รับจากการฝึกอบรมในชุดข้อมูลทั้งหมดของฉันใกล้เคียงกับการประเมินที่ฉันได้รับเมื่อทำการปรับพารามิเตอร์สำหรับชุดของพารามิเตอร์ที่ดีที่สุด (ชุดทดสอบแต่ละชุด ผลการตรวจสอบแบบพับข้าม)
เกือบทุกครั้งที่ความแม่นยำที่cross_val_predict
วัดได้โดยใช้ตัวอย่างการฝึกอบรมทั้งหมด (ชุดข้อมูลทั้งหมด) นั้นสูงกว่าการประเมินผลพารามิเตอร์ที่ดีที่สุดเล็กน้อย
เพื่ออธิบายสิ่งนี้นี่คือการประเมินชุดของพารามิเตอร์ (ในชุดข้อมูลขนาดเล็กกว่าที่ฉันอธิบายไว้ข้างต้น แต่ผลเหมือนกัน)
Best parameters set found on development set:
{'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
Scores for all sets of parameters
0.851 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.5}
0.852 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.1}
0.829 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.001}
0.853 (+/-0.006) for {'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
...
และนี่คือคะแนนเฉลี่ย (จากcross_val_predict
) ที่ฉันได้รับจากการฝึกอบรมในชุดข้อมูลทั้งหมดของฉันโดยใช้พารามิเตอร์ที่ดีที่สุด
precision recall f1-score support
0 0.86 0.85 0.86 15417
1 0.86 0.87 0.87 16561
avg / total 0.86 0.86 0.86 31978
acc score: 0.863750078179
roc au score: 0.863370490059
[[13147 2270]
[ 2087 14474]]
ในขณะที่คุณสามารถเห็นการฝึกอบรมในชุดข้อมูลทั้งหมดช่วยปรับปรุงผลลัพธ์ ฉันได้ตรวจสอบแล้วว่าโมเดลที่ปรับแบบไม่ดี (เช่นการใช้ค่าเริ่มต้นหรือค่าสุ่มสำหรับC
และgamma
) นำไปสู่ความแม่นยำในการทำนายที่แย่กว่านั้นมาก
โดยรวมแล้วฉันคิดว่าการปรับค่าพารามิเตอร์ในชุดย่อยไม่เหมาะ แต่อาจนำไปสู่ผลลัพธ์ที่ค่อนข้างดีโดยไม่ต้องรอนานเกินไป ฉันยกตัวอย่างเช่นก่อนที่จะใช้วิธีการที่ใช้optunity
แพคเกจสำหรับการปรับพารามิเตอร์ในชุดข้อมูลทั้งหมด ขั้นตอนนี้จะใช้เวลา 3-5 วันจึงจะเสร็จสมบูรณ์และจะให้ผลลัพธ์ที่มีความแม่นยำดีจริง ๆ หรือเรียกคืนได้ดี แต่ไม่ใช่ทั้งสองอย่างดังนั้นสำหรับแต่ละชั้นเรียนความแม่นยำหรือการเรียกคืนนั้นสูงมาก (สูงกว่าสิ่งอื่นใดของฉัน) ตัวแยกประเภทประสบความสำเร็จ) meassure f1 นั้นต่ำมาก ในทางตรงกันข้ามการใช้วิธีการในภายหลังนำไปสู่การฝึกอบรมเป็นเวลาหลายชั่วโมง
ความกังวลของฉันคือ:
ฉันจำกัดความแม่นยำในการจำแนกประเภทของฉันหรือไม่? ฉันจะหลีกเลี่ยงการใช้พลังการทำนายทั้งหมดที่ชุดข้อมูลของฉันสามารถเสนอได้โดยการจูนเฉพาะเซ็ ถ้าอันตรายที่เกิดขึ้นกับการทำงานเกิดขึ้นมันมีข้อ จำกัด บางอย่างหรือไม่?