วิธีการแยกชุดข้อมูลสำหรับการตรวจสอบข้ามการเรียนรู้และการประเมินขั้นสุดท้าย?


69

กลยุทธ์ที่เหมาะสมสำหรับการแยกชุดข้อมูลคืออะไร?

ผมขอให้ความคิดเห็นเกี่ยวกับวิธีการดังต่อไปนี้ (ไม่ได้อยู่ในแต่ละพารามิเตอร์เหมือนtest_sizeหรือn_iterแต่ถ้าผมใช้X, y, X_train, y_train, X_testและy_testเหมาะสมและถ้าลำดับทำให้รู้สึก):

(ขยายตัวอย่างนี้จากเอกสาร scikit-Learn)

1. โหลดชุดข้อมูล

from sklearn.datasets import load_digits
digits = load_digits()
X, y = digits.data, digits.target

2. แบ่งออกเป็นชุดฝึกอบรมและทดสอบ (เช่น 80/20)

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

3. เลือกเครื่องมือประมาณ

from sklearn.svm import SVC
estimator = SVC(kernel='linear')

4. เลือกตัววนซ้ำการตรวจสอบความถูกต้องข้าม

from sklearn.cross_validation import ShuffleSplit
cv = ShuffleSplit(X_train.shape[0], n_iter=10, test_size=0.2, random_state=0)

5. ปรับพารามิเตอร์ไฮเปอร์

การใช้ตัววนซ้ำการตรวจสอบข้ามกับชุดฝึกอบรม

from sklearn.grid_search import GridSearchCV
import numpy as np
gammas = np.logspace(-6, -1, 10)
classifier = GridSearchCV(estimator=estimator, cv=cv, param_grid=dict(gamma=gammas))
classifier.fit(X_train, y_train)

6. แก้ไขอัลกอริทึมด้วยกราฟการเรียนรู้

X_trainจะถูกสุ่มแบ่งเป็นการฝึกอบรมและชุดทดสอบ 10 ครั้ง ( n_iter=10) แต่ละจุดบนเส้นโค้งคะแนนการฝึกอบรมมีค่าเฉลี่ย 10 คะแนนซึ่งแบบจำลองได้รับการฝึกอบรมและประเมินผลในตัวอย่างการฝึกอบรมi ตัวแรก แต่ละจุดบนเส้นโค้งคะแนนการตรวจสอบข้ามคือค่าเฉลี่ย 10 คะแนนซึ่งแบบจำลองได้รับการฝึกในตัวอย่างการฝึกอบรมi ตัวแรกและประเมินจากตัวอย่างทั้งหมดของชุดการทดสอบ

from sklearn.learning_curve import learning_curve
title = 'Learning Curves (SVM, linear kernel, $\gamma=%.6f$)' %classifier.best_estimator_.gamma
estimator = SVC(kernel='linear', gamma=classifier.best_estimator_.gamma)
plot_learning_curve(estimator, title, X_train, y_train, cv=cv)
plt.show()

โค้งการเรียนรู้

plot_learning_curve ()สามารถพบได้ในเวอร์ชัน dev ปัจจุบันของ scikit-Learn (0.15-git)

7. การประเมินขั้นสุดท้ายของชุดทดสอบ

classifier.score(X_test, y_test)

7a ทดสอบ over-fitting ในการเลือกแบบจำลองด้วยการตรวจสอบความถูกต้องแบบซ้อน (ใช้ชุดข้อมูลทั้งหมด)

from sklearn.cross_validation import cross_val_score
cross_val_score(classifier, X, y)

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

(ดูเหมือนว่ารหัสจะทำงานกับการตรวจสอบความถูกต้องข้ามของ k-fold ใน scikit-Learn แต่ไม่ใช่กับ shuffle & split ดังนั้นcvจะต้องมีการเปลี่ยนแปลงด้านบนเพื่อให้โค้ดทำงานได้)

8. ฝึกโมเดลสุดท้ายบนชุดข้อมูลทั้งหมด

classifier.fit(X, y)

แก้ไข: ตอนนี้ฉันเห็นด้วยกับ cbeleites ขั้นตอนที่ 7a ไม่สมเหตุสมผลในลำดับนี้ ดังนั้นฉันจะไม่ยอมรับสิ่งนั้น


คุณใช้กฎการให้คะแนนความแม่นยำใด หากเป็นความถูกต้องของการจัดหมวดหมู่กฎการให้คะแนนที่ไม่เหมาะสมเช่นนี้จะยกเลิกงานที่คุณทำไปมาก
Frank Harrell

ฉันใช้ค่าเริ่มต้นซึ่งแน่นอนความถูกต้องการจำแนกประเภท ฉันรู้ว่าเช่น F1 จะเหมาะสมกว่า แต่ที่นี่ฉันแค่สนใจว่าจะใช้การแยกตกลง
tobip

3
ฉันเกือบจะแน่ใจว่า F1 เป็นชื่อใหม่สำหรับแนวคิดเก่า ฉันคิดว่ามันเป็นการต่อต้านการประดิษฐ์ชื่อใหม่สำหรับสิ่งเก่า ที่สำคัญกว่านั้นคือกฎการให้คะแนนที่ไม่เหมาะสมซึ่งจะส่งผลให้มีการเลือกคุณสมบัติที่ไม่ถูกต้องรวมถึงการเพิ่มเสียงรบกวนในกระบวนการทั้งหมด
Frank Harrell

3
... ในกรณีใดก็ตาม F1 แบ่งปันปัญหาความถูกต้อง @FrankHarrell alludes ถึง: ต้นกำเนิดเหล่านี้จากการนับเศษส่วนของกรณีทดสอบของการจำแนกประเภทที่ยาก ในการรับกฎการให้คะแนนที่เหมาะสมของ Frank คุณจะต้องเปลี่ยนไปใช้เอาต์พุตความน่าจะเป็นของ SVM จากนั้นเช่นใช้คะแนน Brier (หมายถึงข้อผิดพลาดกำลังสอง) แทนความแม่นยำ ฉันเดาว่าคุณอาจได้รับ F1 ประเภท MSE มาตรการดังกล่าวน่าจะดีกว่าสำหรับขั้นตอนการปรับแต่ง สำหรับการสื่อสารการปฏิบัติงานขั้นสุดท้ายคุณอาจต้องใช้วิธีการทั่วไป (เช่นความถูกต้อง F1) ในการแสดงประสิทธิภาพสำหรับชุมชนของคุณ
cbeleites

1
@ ta.ft: ไม่ว่าวิธีนั้นจะผิดหรือไม่ขึ้นอยู่กับสิ่งที่คุณพิจารณาว่าผิด: การค้นหากริดตามสัดส่วนมีความเสี่ยงที่ร้ายแรงในการข้ามความแปรปรวนเว้นแต่ว่าคุณจะมีกรณีอิสระจำนวนมากอย่างน่าขัน ดังนั้นสำหรับหลาย ๆ สถานการณ์การอ้างว่าการค้นหากริดทำให้แบบจำลองที่ดีที่สุดนั้นผิด อย่างไรก็ตามหากคุณทำการตรวจสอบความถูกต้องแบบซ้อนที่เหมาะสมการตรวจสอบภายนอกจะให้การวัดที่เที่ยงตรงของประสิทธิภาพของโมเดล "ดีที่สุด" ที่เลือก ดังนั้นนั่นไม่ผิด คุณไม่มีการรับประกันว่าการค้นหากริดมีรูปแบบที่เหมาะสมที่สุด สำหรับวรรณกรรมฉันจะอัปเดตคำตอบของฉัน
cbeleites

คำตอบ:


41

ฉันไม่แน่ใจว่าคุณต้องการทำอะไรในขั้นตอนที่ 7 ก อย่างที่ฉันเข้าใจในตอนนี้มันไม่สมเหตุสมผลสำหรับฉัน

นี่คือวิธีที่ฉันเข้าใจคำอธิบายของคุณ: ในขั้นตอนที่ 7 คุณต้องการเปรียบเทียบประสิทธิภาพการรอสายกับผลลัพธ์ของการตรวจสอบความถูกต้องแบบไขว้ซึ่งครอบคลุมขั้นตอนที่ 4-6 (ใช่แล้วนั่นคือการตั้งค่าแบบซ้อน)

ประเด็นหลักที่ทำไมฉันไม่คิดว่าการเปรียบเทียบนี้สมเหตุสมผลมาก:

  • การเปรียบเทียบนี้ไม่สามารถตรวจสอบแหล่งที่มาหลักสองแห่งของผลลัพธ์การตรวจสอบความถูกต้องเกินที่ฉันพบในทางปฏิบัติ:

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

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

    สำหรับข้อมูลที่ฉันทำงานด้วยข้อผิดพลาดทั้งสองอย่างสามารถทำให้ส่วนย่อยของการจัดหมวดหมู่ต่ำไปตามลำดับความสำคัญ!

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

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

IMHO การวัดช่วงการเรียนรู้ยังเป็นปัญหาที่แตกต่าง ผมอาจจะจัดการกับที่แยกกันและผมคิดว่าคุณจำเป็นต้องกำหนดอย่างชัดเจนมากขึ้นสิ่งที่คุณต้องเรียนรู้โค้งสำหรับ (คุณไม่จำเป็นต้องโค้งการเรียนรู้สำหรับชุดข้อมูลของปัญหาที่ได้รับข้อมูลและวิธีการจัดหมวดหมู่หรือโค้งการเรียนรู้ สำหรับนี้ชุดข้อมูลที่ได้รับปัญหาข้อมูลและการจัดหมวดหมู่ mehtod) และพวงของการตัดสินใจต่อไป (เช่นวิธีการจัดการกับความซับซ้อนของรูปแบบเป็นหน้าที่ของขนาดของกลุ่มตัวอย่างฝึกอบรมหรือไม่เพิ่มประสิทธิภาพมากกว่าทุกครั้งใช้ hyperparameters คงตัดสินใจเกี่ยวกับ ฟังก์ชั่นเพื่อแก้ไขพารามิเตอร์หลายมิติขึ้นอยู่กับขนาดชุดฝึกอบรม?)

(ข้อมูลของฉันมักจะมีกรณีไม่กี่กรณีที่จะได้รับการวัดเส้นโค้งการเรียนรู้ที่แม่นยำเพียงพอที่จะใช้ในทางปฏิบัติ - แต่คุณอาจจะดีกว่าถ้า 1200 แถวของคุณเป็นอิสระจริง ๆ )


ปรับปรุง: "ผิด" กับตัวอย่าง scikit-Learn คืออะไร?

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

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

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

ฉันจะพยายามอธิบายอย่างชาญฉลาดว่าทำไมการเพิ่มประสิทธิภาพอาจมีปัญหา:

  • การพูดเชิงคณิตศาสตร์ / เชิงสถิติปัญหาที่เกิดกับสัดส่วนคือสัดส่วนที่วัดได้อาจมีความแปรปรวนขนาดใหญ่เนื่องจากขนาดตัวอย่างทดสอบที่ จำกัด (ขึ้นอยู่กับประสิทธิภาพที่แท้จริงของแบบจำลอง ):p^np
    Var(p^)=p(1p)n

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

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

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

วรรณกรรม:


Update II: ความแปรปรวนของการข้ามข้อมูล

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

scikit.learnกล่าวว่าพวกเขามี 1797 อยู่ในdigitsข้อมูล

  • สมมติว่ามีการเปรียบเทียบโมเดล 100 รายการเช่น grid สำหรับพารามิเตอร์ 2 ตัว10×10
  • สมมติว่าทั้งพารามิเตอร์ (พิสัย) ไม่ส่งผลกระทบต่อโมเดลเลย
  • นั่นคือทุกรุ่นมีประสิทธิภาพที่แท้จริงเหมือนกันพูด 97% (ประสิทธิภาพโดยทั่วไปสำหรับdigitsชุดข้อมูล)

  • เรียกใช้การจำลองแบบของ "การทดสอบโมเดลเหล่านี้" ด้วยขนาดตัวอย่าง = 1797 แถวในชุดข้อมูล104digits

    p.true = 0.97 # hypothetical true performance for all models
    n.models = 100 # 10 x 10 grid
    
    n.rows = 1797 # rows in scikit digits data
    
    sim.test <- replicate (expr= rbinom (n= nmodels, size= n.rows, prob= p.true), 
                           n = 1e4)
    sim.test <- colMaxs (sim.test) # take best model
    
    hist (sim.test / n.rows, 
          breaks = (round (p.true * n.rows) : n.rows) / n.rows + 1 / 2 / n.rows, 
          col = "black", main = 'Distribution max. observed performance',
          xlab = "max. observed performance", ylab = "n runs")
    abline (v = p.outer, col = "red")
    

นี่คือการกระจายเพื่อประสิทธิภาพที่ดีที่สุดที่สังเกตได้:

การจำลองการเปลี่ยนแปลงความแปรปรวน

เส้นสีแดงแสดงถึงประสิทธิภาพที่แท้จริงของตัวแบบสมมุติทั้งหมดของเรา โดยเฉลี่ยเราสังเกตเพียง 2/3 ของอัตราความผิดพลาดที่แท้จริงสำหรับรุ่นที่เปรียบเทียบได้ดีที่สุด 100 รูปแบบ (สำหรับการจำลองที่เรารู้ว่าพวกเขาทุกคนทำงานอย่างเท่าเทียมกันด้วยการคาดการณ์ที่ถูกต้อง 97%)

เห็นได้ชัดว่าการจำลองนี้ง่ายขึ้นมาก:

  • นอกจากการทดสอบความแปรปรวนขนาดตัวอย่างแล้วอย่างน้อยก็มีความแปรปรวนเนื่องจากความไม่แน่นอนของแบบจำลองดังนั้นเราจึงประเมินค่าความแปรปรวนต่ำกว่าที่นี่
  • การปรับพารามิเตอร์ที่มีผลต่อความซับซ้อนของโมเดลโดยทั่วไปจะครอบคลุมชุดพารามิเตอร์ที่โมเดลไม่เสถียรจึงมีความแปรปรวนสูง
  • สำหรับตัวเลข UCI จากตัวอย่างฐานข้อมูลดั้งเดิมมีประมาณ ตัวเลข 11,000 หลักเขียนโดย 44 คน เกิดอะไรขึ้นถ้าข้อมูลเป็นกลุ่มตามบุคคลที่เขียน? (นั่นคือการรู้จักใครสักคนที่เขียนโดยคนที่ 8 ถ้าคุณรู้ว่าบุคคลนั้นเขียนว่า 3 เป็นอย่างไร) ขนาดตัวอย่างที่มีประสิทธิภาพอาจต่ำถึง 44
  • การปรับรูปแบบพารามิเตอร์ไฮเปอร์พารามิเตอร์อาจนำไปสู่ความสัมพันธ์ระหว่างโมเดล เป็นการยากที่จะทำนายอิทธิพลของสิ่งนั้น (และฉันสงสัยว่าสิ่งนี้เป็นไปไม่ได้โดยไม่คำนึงถึงประเภทของตัวจําแนกที่แท้จริง)

โดยทั่วไปอย่างไรก็ตามทั้งสองกรณีทดสอบอิสระต่ำและรุ่นเปรียบเทียบจำนวนมากจะเพิ่มความเอนเอียง นอกจากนี้กระดาษ Cawley และทัลบอตยังแสดงพฤติกรรมเชิงประจักษ์


@cbleites: หากการค้นหากริดอาจไม่ใช่วิธีที่เหมาะสมสำหรับการค้นหาโมเดลที่ดีที่สุดฉันควรเลือกวิธีการแบบใด
tobip

1
@ ta.ft: สองวิธีคือ a) รวมความรู้ภายนอกเกี่ยวกับแอปพลิเคชันและข้อมูลของคุณลงในแบบจำลองเพื่อลดจำนวนโมเดลที่ต้องเปรียบเทียบเป็นอย่างมาก (= ตัดสินใจพารามิเตอร์ไฮเปอร์พารามิเตอร์แทนการปรับให้เหมาะสม) อาจเป็นการดีกว่าถ้าคุณเปลี่ยนเป็นลักษณนามที่มีไฮเปอร์พารามิเตอร์ที่มีความหมายเช่นที่คุณสามารถทราบได้จากแอปพลิเคชันและชนิดข้อมูลว่าพารามิเตอร์ใดควร (โดยประมาณ) b) เปรียบเทียบโมเดลที่เหลืออยู่สองสามตัวโดยกฎการให้คะแนนที่เหมาะสม คะแนนเช่น Briers มีคุณสมบัติความแปรปรวนที่ดีกว่าสำหรับตัวแยกประเภทจำนวนมาก
cbeleites

1
นอกจากนี้คุณยังสามารถปฏิเสธที่จะเพิ่มประสิทธิภาพเลย (ผ่านการตัดสินใจ (a)) หากคุณได้รับตัวจําแนกที่ดีพอและสามารถยืนยันได้ว่าคุณไม่มีโอกาสพิสูจน์ความเหนือกว่าของตัวจําแนกอื่นที่มีขนาดตัวอย่างที่มีอยู่ (เช่นการคํานวณการสาธิต McNemar ให้ค้นหาขนาดตัวอย่างที่จําเป็น เป็นโอกาสที่ดีที่สิ่งเหล่านี้จะมีขนาดใหญ่อย่างน่าขันแม้สำหรับการปรับปรุงสมมุติฐานที่มีขนาดใหญ่อย่างน่าขัน) คุณสามารถยืนยันว่าการปรับให้เหมาะสมไม่สมเหตุสมผลและเพียงแค่สร้างความเสี่ยงที่จะเกิดการล้น
cbeleites

ฉันไม่เห็นด้วยกับคุณเกี่ยวกับ "ความแปรปรวนการกระโดดข้าม" หากคุณมีจุดจำนวนมากในตารางสำหรับการเพิ่มประสิทธิภาพพารามิเตอร์มากเกินไปจุดหนึ่งอาจจะโชคดีใน CV หนึ่งเท่า แต่ถ้าคุณมีสมมุติว่า 10 เท่าของ CV ก็ยังไม่น่าเป็นไปได้ที่ชุดของพารามิเตอร์จะโชคดีโดยบังเอิญใน CV ทั้ง 10 เท่า
RNA

1
@RNA: ความน่าจะเป็นที่ "โชคดี" ในทุกเท่านั้นเชื่อมต่อโดยตรงกับจำนวนกรณีทั้งหมด (ใน 10 เท่า) และโดยทั่วไปจะพิจารณาเฉพาะค่าเฉลี่ยของจำนวนเท่าทั้งหมดนั้น ฉันอัปเดตคำตอบด้วยการจำลองการเลือกสมมุติของโมเดลที่ดีที่สุด 100 รูปแบบ (พูดพารามิเตอร์ไฮเปอร์พารามิเตอร์ 2 อันแต่ละขั้นตอน 10 ขั้น) ซึ่งเกี่ยวข้องกับอคติอย่างมากสำหรับสถานการณ์ตัวอย่างแล้ว (อัตราความผิดพลาดต่ำเกินไป 1/3) . หลายคนที่นี่ไม่ค่อยมีคดีอิสระสองสามพันตัวอย่างเช่นฉันไม่ค่อยมีแม้แต่ 44 คนที่เขียนตัวเลขสำหรับชุดข้อมูลหลัก UCI
cbeleites
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.