ขั้นตอนการเลือกตัวแปรสำหรับการจำแนกไบนารี


29

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

เราสามารถแก้ไขข้อความเพื่อความมั่นคง: สำหรับให้เป็นชุดการเรียนรู้จากการสังเกตการณ์จากกลุ่มผมดังนั้นคือขนาดของชุดการเรียนรู้ เราตั้งค่าเป็นจำนวนคุณลักษณะ (เช่นมิติของพื้นที่คุณลักษณะ) ให้หมายถึง -th พิกัดของ Pi{0,1}{x1i,,xnii}in0+n1=npx[i]ixRp

โปรดให้ข้อมูลอ้างอิงแบบเต็มหากคุณไม่สามารถให้รายละเอียดได้

แก้ไข (ปรับปรุงอย่างต่อเนื่อง): ขั้นตอนที่เสนอในคำตอบด้านล่าง

เนื่องจากนี่คือวิกิชุมชนจึงสามารถมีการสนทนาและอัพเดตได้มากขึ้น

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


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

พูล ... มีหลายคุณสมบัติ 1,000 รายการหรือมากกว่าและน้อยกว่า 100 การสังเกต
robin girard

คำตอบ:


18

วิธีที่ได้รับความนิยมอย่างมากคือการลงโทษการถดถอยโลจิสติกซึ่งหนึ่งในนั้นจะเพิ่มผลรวมของบันทึกความน่าจะเป็นและการลงโทษระยะประกอบด้วย L1-norm ("Lasso"), L2-norm ("สัน") ซึ่งเป็นการรวมกันของทั้งสอง ("elastic") หรือบทลงโทษที่เกี่ยวข้องกับกลุ่มของตัวแปร ("group lasso") วิธีนี้มีข้อดีหลายประการ:

  1. มันมีคุณสมบัติทางทฤษฎีที่แข็งแกร่งเช่นดูกระดาษนี้โดย Candes & Planและการเชื่อมต่ออย่างใกล้ชิดกับการตรวจจับแบบบีบอัด
  2. มันมี expositions ที่สามารถเข้าถึงได้เช่นในองค์ประกอบของการเรียนรู้ทางสถิติโดย Friedman-Hastie-Tibshirani (มีออนไลน์);
  3. มีซอฟต์แวร์ที่พร้อมใช้งานเพื่อให้พอดีกับรุ่น R มีแพ็คเกจglmnetซึ่งทำงานได้เร็วมากและทำงานได้ดีกับชุดข้อมูลขนาดใหญ่ Python มีscikit-Learnซึ่งรวมถึงการถดถอยโลจิสติก L1 และ L2 ที่ถูกลงโทษ
  4. มันใช้งานได้ดีมากในทางปฏิบัติดังที่แสดงในเอกสารการสมัครจำนวนมากในการจดจำรูปภาพการประมวลผลสัญญาณชีวภาพและการเงิน

10

ฉันมีความชอบเล็กน้อยสำหรับป่าสุ่มโดย Leo Breiman & Adele Cutleer ด้วยเหตุผลหลายประการ:

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

ผู้เขียนบางคนแย้งว่ามันทำงานได้ดีเท่ากับ SVM หรือ Gradient Boosting Machines (ดูเช่น Cutler et al., 2009, สำหรับจุดหลัง)

ความครอบคลุมของแอปพลิเคชันหรือข้อได้เปรียบทั้งหมดอาจไม่ครอบคลุมดังนั้นฉันจึงแนะนำองค์ประกอบของการเรียนรู้ทางสถิติจาก Hastie et al (บทที่ 15) และ Sayes et al. (2007) สำหรับการอ่านเพิ่มเติม

สุดท้าย แต่ไม่ท้ายสุดมันมีการนำไปใช้ที่ดีใน R โดยใช้แพ็คเกจแบบสุ่มป่าไม้ แพ็คเกจ R อื่น ๆ ยังขยายหรือใช้งานเช่นปาร์ตี้และคาเร็

อ้างอิง:

Cutler, A. , Cutler, DR, และ Stevens, JR (2009) วิธีการแบบต้นไม้ในการวิเคราะห์ข้อมูลมิติสูงในการวิจัยโรคมะเร็ง Li, X. และ Xu, R. (eds.), pp. 83-101, Springer

Saeys, Y. , Inza, I. และLarrañaga, P. (2007) การทบทวนเทคนิคการเลือกคุณสมบัติทางชีวสารสนเทศศาสตร์ ชีวสารสนเทศศาสตร์ , 23 (19) : 2507-2517


7

สแกนนคร / MCMC

  • เลือกคุณสมบัติไม่กี่แบบสุ่มสำหรับการเริ่มต้นอบรมตัวจําแนกเฉพาะกับพวกเขาและได้รับข้อผิดพลาด
  • ทำการเปลี่ยนแปลงแบบสุ่มกับชุดการทำงานนี้ - ลบคุณลักษณะหนึ่งเพิ่มอีกอย่างเป็นแบบสุ่มหรือแทนที่คุณลักษณะบางอย่างด้วยคุณสมบัติที่ไม่ได้ใช้งานในปัจจุบัน
  • ฝึกฝนลักษณนามใหม่และรับข้อผิดพลาด เก็บdEความแตกต่างข้อผิดพลาดในชุดใหม่ลบด้วยข้อผิดพลาดในชุดก่อนหน้า
  • ด้วยความน่าจะเป็นmin(1;exp(-beta*dE))ยอมรับการเปลี่ยนแปลงนี้มิฉะนั้นปฏิเสธและลองการเปลี่ยนแปลงแบบสุ่มอีกครั้ง
  • ทำซ้ำเป็นเวลานานและในที่สุดก็ส่งคืนชุดการทำงานที่มีข้อผิดพลาดน้อยที่สุดทั่วโลก

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


5

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


3

เลือกข้างหน้าโลภ

ขั้นตอนสำหรับวิธีนี้คือ:

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

คุณ "ฝึกอบรม" ตัวจําแนกของคุณอย่างไร? น่าจะเป็นสิ่งนี้ในชุดฝึกอบรม หากเป็น Support vector Machine (SVM) มีหลายพารามิเตอร์ที่ต้องลองระหว่างการฝึก มีการทดสอบแต่ละแบบกับการตรวจสอบความถูกต้อง (ทดสอบ) หรือไม่ หรือคุณกำลังใช้การตรวจสอบความถูกต้องข้ามแบบ k-fold? คุณใช้การตรวจสอบความถูกต้อง (ทดสอบ) กี่ครั้งเพื่อตรวจสอบประสิทธิภาพของคุณ - นี่น่าจะเป็นความแม่นยำ ขออภัยที่จะอวดความรู้ แต่นี่เป็นคำตอบและความเสี่ยงที่กำหนดไว้ไม่ดี
Thylacoleo

@Thylacoleo นี่เป็นวิธีพื้นฐานและโลภที่ดิบมาก บ่อยครั้งที่คุณทำการตรวจสอบความถูกต้องของคุณตั้งค่ามากกว่าวิ่ง แต่สิ่งที่คุณชอบก็โอเค
Peter Smit

2

กำจัดไปข้างหลัง

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

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


2
แต่คำถามบอกว่ามีตัวแปรมากกว่าการสังเกต ดังนั้นจึงเป็นไปไม่ได้ที่จะเริ่มต้นด้วยชุดเต็ม
Rob Hyndman

มีปัญหาอะไร?

2
คุณไม่สามารถจัดวางแบบจำลองที่มีตัวแปรได้มากกว่าการสังเกต เสรีภาพในการประมาณค่าพารามิเตอร์มีไม่เพียงพอ
Rob Hyndman

1
ในการคำนวณ F ของฟิชเชอร์คุณคำนวณ F เช่นเดียว(n - k - p) / (k - 1) * ...กับnจำนวนการสังเกตkจำนวนชั้น (2 ที่นี่) และpจำนวนตัวแปร n - 2 - p < 0เมื่อn < p + 2(ซึ่งเป็นกรณีที่นี่) F < 0ซึ่งนำไปสู่ นั่นจะไม่เป็นปัญหาหรือไม่
Matthieu

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