มากเกินไป: ไม่มีกระสุนเงิน?


21

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

คำถามของฉันคือ: ความจริงเท่าไหร่ที่มีต่องบข้างต้น?

ผมมักจะได้ยิน practicioners ML กล่าวว่า " ใน บริษัท ของฉัน / ห้องปฏิบัติการเราพยายามทุกรูปแบบที่มีอยู่ (เช่นจากห้องสมุดเช่นเครื่องหมายหรือscikit เรียนรู้ ) เพื่อดูที่หนึ่งงานที่ดีที่สุด " ฉันมักจะเถียงว่าวิธีการนี้สามารถทำให้ได้อย่างง่ายดายแม้ว่าพวกเขาจะจริงจังเกี่ยวกับการตรวจสอบข้ามและเก็บชุดที่ค้างไว้ในทางที่พวกเขาต้องการ ยิ่งพวกเขาค้นหายากเท่าไหร่ก็จะยิ่งมีโอกาสมากขึ้นเท่านั้น ในคำอื่น ๆมากกว่าการเพิ่มประสิทธิภาพเป็นปัญหาที่แท้จริงและมีการวิเคราะห์พฤติกรรมที่ไม่สามารถช่วยให้คุณต่อสู้กับมันอย่างเป็นระบบ ฉันผิดที่คิดแบบนี้?


คุณกำลังถามเกี่ยวกับ ML โดยเฉพาะหรือโมเดลหลายตัวแปรโดยทั่วไปหรือไม่?
Rumtscho

@rumtscho ทุกอย่างเป็น ML
Amelio Vazquez-Reina

1
ขอบคุณ @CagdasOzgenc: "ที่มีขนาดใหญ่พื้นที่ค้นหา (รูปแบบการพิจารณา) ที่ยากจนผล" ไม่แน่ใจว่าคุณกำลังอ้างถึงที่นี่ในระดับนามธรรม แต่โดย "พยายามอย่างหนักพอ" แน่นอนว่าฉันหมายถึงการค้นหาผ่านแบบจำลองมากขึ้นเรื่อย ๆ ซึ่งจะเป็นการเพิ่มความซับซ้อน / การค้นหาพื้นที่ของ "meta-model" (ถ้าคุณต้องการ) ว่าเรากำลังพยายามที่จะพอดี
Amelio Vazquez-Reina

คำตอบ:


8

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

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

ดังนั้นพวกเขาควรใช้ CV ที่ซ้อนกัน และพวกเขาควรใช้ "Target Shuffling" (การทดสอบการเปลี่ยนรูป / การเปลี่ยนรูป) / รอบกระบวนการทั้งหมดของพวกเขาเพื่อดูว่ากระบวนการของพวกเขาจะทำอย่างไรถ้าคุณทำลายความสัมพันธ์ระหว่างตัวแปรตามและตัวแปรอิสระ - นั่นคือวิธีที่คุณทำได้ดีกว่าสุ่ม กำลังพิจารณากระบวนการทั้งหมดของคุณ?


1
+1 การเลือกรุ่นด้วยเลเยอร์ CV (หรือน้อยเกินไป) เลเยอร์ที่เรียกใช้การค้นหากริด (การเลือกรุ่น) สามารถนำไปสู่การ overfitting (สำหรับทุกคนที่สนใจฉันแนะนำเช่นนี้และแหล่งที่มาในนั้น) ฉันได้อ่านเกี่ยวกับ "Target Shuffling" (สำหรับผู้อ่านคนอื่นฉันขอแนะนำงานนี้ ) แต่ไม่เคยใช้มันเลย ฉันสงสัยว่าสามารถใช้งานในทางที่ผิดได้หรือไม่ (เช่นทำการทดสอบหลายครั้งซึ่งนำไปสู่ผลบวกปลอมในที่สุดและทำให้ค้นหา "ยากพอ" (?) อีกครั้ง
Amelio Vazquez-Reina

7

ในประสบการณ์ 4 ปีของฉันฉันพบว่าการทดลองใช้ทุกรุ่นที่มีใน caret (หรือ scikit-Learn) ไม่จำเป็นต้องนำไปสู่การ overfitting ฉันพบว่าหากคุณมีชุดข้อมูลที่มีขนาดใหญ่พอ (10,000+ แถว) และมีความสมดุลของคลาสมากขึ้นหรือน้อยลง (เช่นไม่มีความไม่สมดุลของคลาสเช่นในความเสี่ยงด้านเครดิตหรือปัญหาด้านการตลาด) เป็นที่น่าสังเกตว่าการค้นหากริดของฉันเกี่ยวกับพารามิเตอร์การปรับมีแนวโน้มที่จะมีการเปลี่ยนลำดับไม่เกิน 30 รายการต่อแบบจำลอง ในตอนท้ายสุดขีดหากคุณใช้การเปลี่ยนลำดับ 100 หรือ 1,000 ครั้งต่อแบบจำลอง

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

ถ้าฉันอยู่ในตำแหน่งที่ฉันติดอยู่กับชุดข้อมูลคงที่ของการสังเกตน้อยกว่า 2,000-3,000 (เช่น: ข้อมูลทางการแพทย์ที่ยากที่จะมา) ฉันมักจะใช้แบบจำลองเชิงเส้นเท่านั้นเพราะฉันเห็นการไล่ระดับสีบ่อยเกินไป การส่งเสริมและสนับสนุนเครื่องเวกเตอร์บนชุดข้อมูลขนาดเล็กเพียงพอ ในทางกลับกันฉันได้พูดคุยกับ Kaggler ชั้นนำ (5% สูงสุด) ที่กล่าวว่าเขาสร้างแบบจำลองหลายหมื่นรายการสำหรับการแข่งขันแต่ละครั้งจากนั้นจึงตระการตาพวกเขาโดยใช้แบบจำลองหลายพันแบบในชุดสุดท้ายของเขา เขากล่าวว่านี่เป็นเหตุผลหลักที่ทำให้เขาประสบความสำเร็จในกระดานผู้นำขั้นสุดท้าย


1
อ๋อ ฉันทำงานกับข้อมูลที่มีข้อสังเกตเป็นล้าน ๆ ไม่ว่าฉันจะลองใช้การตรวจสอบความถูกต้องแบบใด (kfold, bootstrapping และแม้แต่ holdout แบบธรรมดา) มีรูปแบบต่าง ๆ เล็กน้อย เมื่อข้อมูลของคุณเพิ่มขึ้นคุณจะต้องระมัดระวังน้อยลงในการตรวจสอบความถูกต้อง
Ricardo Cruz

กล่าวอีกนัยหนึ่งไม่มีแบบจำลองใดที่มีองศาอิสระพอที่จะ "จดจำ" การสังเกตได้นับล้านครั้ง
Ricardo Cruz

5

มากขึ้นอยู่กับขนาด ฉันหวังว่าฉันจะเชื่อได้ว่ามีมากกว่า 2,000-3,000 รายเช่น @RyanZotti โดยทั่วไปมี; ฉันไม่ค่อยมี 1 / 10th ที่มาก นั่นเป็นความแตกต่างอย่างมากในมุมมองระหว่าง "การเรียนรู้ข้อมูลขนาดใหญ่" กับกลไกการเรียนรู้พื้นบ้านและผู้ที่ทำงานในสาขาต่าง ๆ เช่น biomedicine ซึ่งอาจอธิบายถึงมุมมองที่แตกต่างบางประการที่คุณจะพบในเว็บไซต์นี้

ฉันจะนำเสนอคำอธิบายแบบฮิวริสติกเกี่ยวกับปัญหานี้ ปัญหาพื้นฐานในการ overfitting ดังที่อธิบายไว้ในหน้า Wikipediaคือความสัมพันธ์ระหว่างจำนวนเคสและจำนวนพารามิเตอร์ที่คุณกำลังประเมิน ดังนั้นเริ่มต้นด้วยแนวคิดคร่าว ๆ ว่าถ้าคุณมีโมเดลM ที่คุณกำลังเลือกระหว่างและพารามิเตอร์pต่อแบบจำลองคุณจะประเมินบางสิ่งตามลำดับพารามิเตอร์Mpโดยรวม

หากมีอันตรายจากการ overfitting มีวิธีการทั่วไปสองวิธีในการดึงกลับไปยังโมเดล generalizable เพิ่มเติม: ลดจำนวนพารามิเตอร์หรือลงโทษพวกเขาในบางวิธี

ด้วยชุดข้อมูลขนาดใหญ่เพียงพอคุณอาจไม่เคยเข้าใกล้การ overfitting หากคุณมี 20,000 เคสและ 20 โมเดลที่แตกต่างกันพร้อมพารามิเตอร์ 100 ตัวต่อโมเดลคุณอาจไม่ประสบปัญหาแม้จะไม่มีการลงโทษเนื่องจากคุณยังมี 10 เคสต่อพารามิเตอร์ที่มีประสิทธิภาพ อย่าลองใช้กลยุทธ์การสร้างแบบจำลองที่มีเพียง 200 ราย

ค่าเฉลี่ยของแบบจำลองอาจถูกมองว่าเป็นรูปแบบของการลงโทษ ในตัวอย่างของ Kaggler ที่อ้างถึงโดย @RyanZotti จำนวนคดีมีขนาดใหญ่มากและแต่ละโมเดล "หลายพัน" ในชุดสุดท้ายจะมีส่วนย่อยเพียงเล็กน้อยเท่านั้น การกำหนดให้เฉพาะเจาะจงกับโมเดลที่มีส่วนร่วมโดยเฉพาะนั้นจะไม่ได้มีอิทธิพลอย่างมากต่อผลลัพธ์สุดท้ายและกรณีที่มีจำนวนมากในการแข่งขัน Kaggler จะช่วยลดความเสี่ยงของการ overfitting

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


2

ฉันคิดว่านี่เป็นคำถามที่ดีมาก ฉันต้องการสังเกตเส้นโค้งรูปร่าง "U" ในการทดสอบการตรวจสอบข้ามด้วยข้อมูลจริง อย่างไรก็ตามประสบการณ์ของฉันกับข้อมูลในโลกแห่งความเป็นจริง (~ 5 ปีในการทำธุรกรรมบัตรเครดิตและข้อมูลการศึกษา) ไม่ได้บอกฉันเกี่ยวกับการกระชับสามารถเกิดขึ้นได้ง่ายในข้อมูลจำนวนมาก (พันล้านแถว) ข้อมูลโลกแห่งความจริงข้อมูลที่โลกแห่งความจริง

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

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

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

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


1

ฉันเห็นด้วยกับ @ ryan-zotti ว่าการค้นหาหนักพอไม่จำเป็นต้องนำไปสู่การล้นเกิน - หรืออย่างน้อยก็ไม่ถึงจำนวนเพื่อที่เราจะเรียกมันว่าการล้น ให้ฉันพยายามระบุมุมมองของฉันเกี่ยวกับเรื่องนี้:

กล่องเคยพูดว่า:

จำไว้ว่าทุกรุ่นผิด คำถามเชิงปฏิบัติคือพวกเขาผิดอย่างไรที่จะไม่มีประโยชน์

(ความสมบูรณ์แบบจะต้องใช้ข้อมูลทั้งหมดซึ่งจะช่วยลดความต้องการโมเดลในตอนแรก)

แบบจำลองที่ไม่ถูกต้องยังประกอบด้วยส่วนเกินและส่วนล่าง1. แต่เราไม่จำเป็นต้องใส่ใจหรือแจ้งให้ทราบล่วงหน้า คำถามคือซึ่งจำนวนของรูปแบบเบี่ยงเบนไปจากความเป็นจริงที่เราสามารถก) ตัวชี้วัดที่ทุกคนและข) พบว่าได้รับการยอมรับไม่เรียกว่าเกินหรือ underfitting - เพราะทั้งสองจะเสมอใช้เล็ก ๆ น้อย ๆ กับรูปแบบทั้งหมดที่เราเคยจะสร้าง ถ้าแบบจำลองของเราในท้ายที่สุดตอบสนองความต้องการของเรา แต่เช่นเกิน / underfit เพียงน้อยที่สุดหรือเกิน / underfit ในส่วนของข้อมูล (เป็นไปได้) ที่ไม่ได้รับการพิจารณาในกรณีที่แอพลิเคชันของเราที่เราจะยอมรับมัน - มันไม่จำเป็นต้องเกี่ยวกับการป้องกันทั้งหมดมากกว่า - / underfitting

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

เพราะ: ในที่สุดเราจะมีโมเดลข้อผิดพลาด / over- / underfitting อยู่เสมอ - มันเป็นความสามารถในการตรวจจับ / วัดข้อผิดพลาดนี้ภายในจุดสนใจของเราเพื่อเลือกตัวเลือกที่เหมาะสมที่สำคัญ


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

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