ทำไมต้องลดตัวอย่าง


42

สมมติว่าฉันต้องการเรียนรู้ลักษณนามที่ทำนายว่าอีเมลเป็นสแปมหรือไม่ และสมมติว่าอีเมลเพียง 1% เท่านั้นที่เป็นสแปม

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

เพื่อแก้ปัญหานี้ผู้คนบอกให้ฉัน "ตัวอย่าง" หรือเรียนรู้ในส่วนย่อยของข้อมูลที่ตัวอย่าง 50% เป็นสแปมและ 50% ไม่ใช่สแปม

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

แล้วเราจะแก้ไขปัญหานี้อย่างไร

("Upsampling" หรือทำซ้ำตัวอย่างการฝึกอบรมเชิงบวกหลาย ๆ ครั้งดังนั้นข้อมูล 50% เป็นตัวอย่างการฝึกอบรมเชิงบวกดูเหมือนว่าจะประสบปัญหาที่คล้ายกัน)

คำตอบ:


37

แบบจำลองการจำแนกส่วนใหญ่ในความเป็นจริงไม่ได้ให้ผลการตัดสินใจแบบไบนารี แต่เป็นค่าการตัดสินใจแบบต่อเนื่อง (ตัวอย่างเช่นแบบจำลองการถดถอยแบบโลจิสติกส่งออกความน่าจะเป็น, SVMs ส่งออกระยะทาง การใช้ค่าการตัดสินใจนั้นเราสามารถจัดอันดับตัวอย่างทดสอบจาก 'บวกเกือบแน่นอน' ถึง 'ลบเกือบแน่นอน'

ขึ้นอยู่กับมูลค่าการตัดสินใจคุณสามารถกำหนดทางลัดบางส่วนที่กำหนดค่าตัวจําแนกในลักษณะที่ว่าส่วนของข้อมูลบางส่วนจะถูกระบุว่าเป็นบวก การกำหนดขีด จำกัด ที่เหมาะสมสามารถทำได้ผ่านทางเส้นโค้งROCหรือ PR ของรุ่น คุณสามารถเล่นกับเกณฑ์การตัดสินใจโดยไม่คำนึงถึงยอดคงเหลือที่ใช้ในชุดฝึกอบรม กล่าวอีกนัยหนึ่งเทคนิคต่าง ๆ เช่น - หรือ downsampling คือ orthogonal นี่

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

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


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

2
@ เจสสิก้าดังที่ได้กล่าวไปแล้ววิธีที่สะดวกในการเลือกเกณฑ์คือผ่านทางเส้นโค้งลักษณะการทำงานของตัวรับ (ROC) ทุกขีด จำกัด สอดคล้องกับจุดในพื้นที่ ROC เมื่อคุณวางแผนเส้นโค้งคุณสามารถเลือกเกณฑ์ตามสิ่งที่เหมาะกับความต้องการเฉพาะของคุณ (คุณสามารถใช้เส้นโค้งเรียกคืนความแม่นยำเป็นทางเลือก)
Marc Claesen

ฉันไม่เห็นด้วยว่าระยะทางของจุดทดสอบไปยังไฮเปอร์เพลนที่เรียนรู้จาก SVM เป็นตัวชี้วัดความมั่นใจในการทำนาย มีความพยายามที่จะสร้างความมั่นใจในการทำนายผลลัพธ์ของ SVM เงยหน้าขึ้นมอง Platt มาตราส่วน แต่มันไม่ได้ทำเช่นเดียวกับการจำแนกกระบวนการเกาส์เซียน
Seeda

1
การปรับมาตราส่วน @Seeda Platt เป็นเรื่องของการตัดสินใจเกี่ยวกับความน่าจะเป็นของรองเท้า การปรับขนาดของแพลตนั้นง่ายเหมือนการรัน (ปรับขนาด) ค่าการตัดสินใจผ่านฟังก์ชั่นโลจิสติกซึ่งเป็นการเพิ่มความน่าเบื่อและไม่ส่งผลต่อการจัดอันดับใด ๆ (= ความมั่นใจ) ทั้งหมดก็จะเป็นแผนที่เอาท์พุทจากไป[0,1]R[0,1]
Marc Claesen

@MarcClaesen ฉันไม่แนะนำให้ใช้การปรับขนาดของแพลต มันเป็น "ความพยายาม" เพื่อสร้างความเชื่อมั่นในการทำนาย แต่มีทางเลือกที่ดีกว่า ทั้งหมดที่ฉันพูดคือการใช้ระยะห่างจากไฮเปอร์เพลนนั้นไม่ได้มีความหมายและทบทวนวรรณกรรมฉันไม่เคยเจอมันแม้ว่ามันจะเป็นสิ่งแรกที่อยู่ในใจของคนที่พยายามสร้างความมั่นใจจาก SVM
Seeda

14

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

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

คุณดีกว่าการปรับสมดุลความแม่นยำของตัวชี้วัดแทนที่จะปรับสมดุลข้อมูลของคุณ ตัวอย่างเช่นคุณสามารถใช้ความถูกต้องสมดุล(error for the positive class + error for the negative class)/2เมื่อมีการประเมินคุณรุ่น: หากคุณทำนายผลบวกหรือลบทั้งหมดตัวชี้วัดนี้จะ50%เป็นคุณสมบัติที่ดี

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


ฉันสามารถถามตัวแยกประเภทที่สามารถทำงานกับข้อมูลที่ไม่สมดุลได้อย่างไร บางทีมันอาจเป็นเพียงข้อมูลของฉัน แต่ฉันได้ลองการฝึกอบรมการถดถอยโลจิสติกการสุ่มฟอเรสต์และโมเดล C5.0 บนข้อมูลการฝึกอบรมของฉันทั้งที่ไม่สมดุลและมีความสมดุลโดยใช้การผสมเกิน แบบจำลองที่ได้รับการฝึกอบรมเกี่ยวกับข้อมูลที่ไม่สมดุลนั้นทำงานได้แย่กว่าชุดทดสอบของฉันมากกว่าที่ได้รับการฝึกอบรมเกี่ยวกับข้อมูลที่สมดุล
Seanosapien

13

เช่นเคย@Marc Claesenเป็นคำตอบที่ดี

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

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


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

8

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

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

ดังนั้นการใช้การถดถอยแบบโลจิสติกส์ซึ่งส่งกลับค่าความน่าจะเป็นที่คาดการณ์ไว้อย่างต่อเนื่องตามที่ Marc Claesen แนะนำไว้เป็นวิธีที่ดีกว่า หากคุณกำลังทำการถดถอยโลจิสติกกับข้อมูลค่าสัมประสิทธิ์ยังคงไม่เอนเอียงแม้จะมีระเบียนน้อยลง คุณจะต้องปรับการสกัดกั้นจากการถดถอยแบบของคุณตามสูตรจาก Hosmer และ Lemeshow, 2000:β0

βc=β0log(p+1p+)

โดยที่คือส่วนของกรณีที่เป็นบวกในประชากรกลุ่มตัวอย่างก่อนลงมาของคุณp+

การค้นหาเกณฑ์ ID สแปมที่คุณต้องการด้วย ROC สามารถทำได้โดยการให้คะแนนชุดข้อมูลที่สมบูรณ์ด้วยค่าสัมประสิทธิ์ของรูปแบบที่เริ่มต้นในชุดข้อมูลที่สุ่มตัวอย่างจากนั้นจัดอันดับระเบียนจากความน่าจะเป็นสูงสุดที่คาดการณ์ไว้ต่ำสุด ถัดไปจดบันทึกคะแนนสูงสุดอันดับโดยที่เป็นเกณฑ์อะไรก็ตามที่คุณต้องการตั้งค่า (100, 500, 1,000 ฯลฯ ) จากนั้นคำนวณเปอร์เซ็นต์ของคดีที่เป็นเท็จในกรณีอันดับสูงสุดและเปอร์เซ็นต์ของคดีลบปลอมใน ชั้นล่างที่เหลืออยู่ของคดี -เพื่อหาสมดุลที่เหมาะสมของความไว / ความจำเพาะที่ตอบสนองความต้องการของคุณnnnNn


3

แน่นอนว่าการจำแนกทุกอย่างเป็น 'ไม่ใช่สแปม' ช่วยให้คุณบอกว่าได้รับ 100 อีเมลมันจำแนกอย่างถูกต้อง 99 ในนั้น แต่มันยังจำแนกว่า 'ไม่ใช่สแปม' เพียงหนึ่งเดียวที่ระบุว่าเป็นสแปม (100% False Positive) ปรากฎว่าตัวชี้วัดที่คุณเลือกเพื่อประเมินอัลกอริทึมไม่ได้ปรับ วิดีโอนี้เป็นตัวอย่างแนวคิด

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


0

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

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