การปรับพารามิเตอร์ไฮเปอร์พารามิเตอร์ในตัวอย่างของชุดข้อมูลเป็นแนวคิดที่ไม่ดีหรือไม่?


19

ฉันมีชุดข้อมูลของตัวอย่าง 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 นั้นต่ำมาก ในทางตรงกันข้ามการใช้วิธีการในภายหลังนำไปสู่การฝึกอบรมเป็นเวลาหลายชั่วโมง

ความกังวลของฉันคือ:

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


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

ดูคำถามที่อัปเดตของฉัน ฉันหวังว่ามันชัดเจนขึ้นตอนนี้
LetsPlayYahtzee

คำตอบ:


15

นอกเหนือจากคำตอบของ Jim (+1): สำหรับตัวแยกประเภทบางตัวค่าพารามิเตอร์หลายมิติจะขึ้นอยู่กับจำนวนของตัวอย่างการฝึกอบรมเช่นสำหรับ SVM เชิงเส้นปัญหาการปรับให้เหมาะสมเบื้องต้นคือ

ม.ผมn12W2+Σผม=1ξผม

ภายใต้

Yผม(xผมW)1-ξผม,andξผม0ผม

ξผม

การใช้งานบางส่วนของการซ่อมแซม SVM เป็น

ม.ผมn12W2+Σผม=1ξผม

เพื่อชดเชย แต่บางคนทำไม่ได้ ดังนั้นประเด็นเพิ่มเติมที่ควรพิจารณาคือพารามิเตอร์ไฮเปอร์ที่ดีที่สุดนั้นขึ้นอยู่กับจำนวนตัวอย่างการฝึกอบรมหรือไม่

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


11

การปรับพารามิเตอร์ไฮเปอร์พารามิเตอร์ในตัวอย่างของชุดข้อมูลเป็นแนวคิดที่ไม่ดีหรือไม่?

ตอบ: ใช่เนื่องจากคุณมีความเสี่ยงที่จะได้รับเกินพิกัด (ค่าพารามิเตอร์หลายมิติ) ในชุดทดสอบเฉพาะนั้นเป็นผลมาจากการแบ่งการทดสอบรถไฟที่คุณเลือก

ฉันจำกัดความแม่นยำในการจำแนกประเภทของฉันหรือไม่?

λ* * * *

ฉันจะหลีกเลี่ยงการใช้พลังการทำนายทั้งหมดที่ชุดข้อมูลของฉันสามารถเสนอได้โดยการจูนเฉพาะเซ็

ตอบ: ดูคำตอบก่อนหน้า

ถ้าอันตรายที่เกิดขึ้นกับการทำงานเกิดขึ้นมันมีข้อ จำกัด บางอย่างหรือไม่?

ตอบ: idem

ฉันวัดความแม่นยำของฉันโดยใช้กากบาท 10 เท่าตามที่ฉันใช้เพื่อประเมินพารามิเตอร์

ตอบ: โปรดทราบว่าสิ่งนี้แตกต่างจากสิ่งที่ขอไว้ในชื่อ CV แบบ 10 เท่าวนซ้ำกว่า 10 เสี้ยวของรถไฟทดสอบเพื่อมาถึงการประมาณค่าทั่วไปที่ไม่เอนเอียง (ไม่เอนเอียง) (วัดในกรณีนี้ด้วยความแม่นยำ) CV 10 เท่าจะแก้ไขปัญหาที่ฉันพูดถึงในคำตอบแรกได้อย่างแน่นอน

ความแม่นยำในการทำนายที่ฉันได้รับจากการฝึกอบรมในชุดข้อมูลทั้งหมดของฉัน

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

[ต่อเนื่อง] อยู่ใกล้กับการประเมินที่ฉันได้รับเสมอเมื่อทำการปรับพารามิเตอร์สำหรับชุดพารามิเตอร์ที่ดีที่สุด

ตอบ: ดูคำตอบก่อนหน้า ดูที่แผนการไฮเปอร์พารามิเตอร์: การปรับลดข้อผิดพลาดและเท่าไหร่? จากสิ่งที่คุณพูดการปรับแต่งไม่ได้ทำอะไรมาก

คุณสามารถทดสอบได้ดังนี้ แบ่งการทดสอบรถไฟ 70% -30% เปรียบเทียบประสิทธิภาพการทำนายของ:

  1. นางแบบที่ได้รับการฝึกฝนบนชุดขบวนรถไฟ
  2. โมเดลปรับจูน CV 10 เท่าที่ผ่านการฝึกฝนบนชุดรถไฟ

ให้ทั้งสองรุ่นทำนายชุดทดสอบ หากประสิทธิภาพอยู่ใกล้มากแสดงว่าการปรับไม่ได้ทำอะไรมาก หากประสิทธิภาพแตกต่างกันตามรุ่นที่ปรับแล้วให้ดำเนินการตามวิธีการปรับแต่ง


1

ฉันจะตอบเครือข่ายประสาทเทียม (ANNs)

พารามิเตอร์ไฮเปอร์พารามิเตอร์ของ ANN อาจกำหนดกระบวนการเรียนรู้ (เช่นอัตราการเรียนรู้หรือขนาดชุดเล็ก) หรือสถาปัตยกรรม (เช่นจำนวนหน่วยที่ซ่อนอยู่หรือเลเยอร์)

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

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


1

บทความนี้เกี่ยวกับหัวข้อของการใช้ชุดข้อมูลอื่น ๆ / เล็กลงสำหรับการปรับชุดข้อมูลที่มีขนาดใหญ่กว่า: https://papers.nips.cc/paper/5086-multi-task-bayesian-optimization.pdf

ฉันคิดว่ามันไม่ได้เป็นความคิดที่ดีในทางตรงกันข้ามกับสิ่งที่จิมกล่าวว่า


0

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


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