ผสานข้อมูลที่เบาบางและหนาแน่นในการเรียนรู้ของเครื่องเพื่อปรับปรุงประสิทธิภาพ


17

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

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

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

ขอบคุณล่วงหน้าสำหรับความช่วยเหลือ

แก้ไข :

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

เกี่ยวกับข้อมูลโค้ดฉันได้ลองหลายสิ่งหลายอย่างแล้วซึ่งฉันไม่แน่ใจว่าจะแชร์สิ่งใดกันแน่ :(


คุณสมบัติของคุณเบาบางแค่ไหน? พวกเขาเติมเต็ม 1% หรือน้อยกว่า?
João Almeida

2
นอกจากนี้คุณควรทราบว่าหากคุณสมบัติของคุณกระจัดกระจายแล้วพวกเขาควรช่วยจำแนกชุดข้อมูลส่วนเล็ก ๆ ของคุณเท่านั้นซึ่งหมายความว่าความแม่นยำโดยรวมไม่ควรเปลี่ยนแปลงอย่างมีนัยสำคัญ นี่เป็นการคาดเดาเนื่องจากฉันไม่รู้ว่าชุดข้อมูลของคุณมีลักษณะอย่างไร
João Almeida

@ JoãoAlmeidaพวกเขาไม่กระจัดกระจาย พวกเขาเต็มไปประมาณ 5% ปัญหาคือเมื่อฉันดูความแตกต่างในการทำนายจากทั้งสองรุ่นซึ่งการทำนายแตกต่างกันโมเดลที่มีคุณสมบัติเบาบางมักจะทำงานได้ดีกว่านั่นคือสาเหตุที่ฉันคาดว่าจะเห็นการเพิ่มใน AUC เช่นกันเมื่อฉันรวมพวกมันเข้าด้วยกัน . ฉันได้รับการส่งเสริม แต่ดูเหมือนจะต่ำมาก
Sagar Waghmode

ฮืม ... ฉันไม่มีความคิดอะไรเลยสำหรับคุณแล้ว
João Almeida

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

คำตอบ:


6

ดูเหมือนว่างานสำหรับการวิเคราะห์องค์ประกอบหลัก ใน Scikit มีการนำPCAมาใช้อย่างดีและมันช่วยฉันได้หลายครั้ง

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

ลองพิจารณาตัวอย่างง่ายๆด้านล่าง

from sklearn.pipeline import Pipeline
pipe_rf = Pipeline([('pca', PCA(n_components=80)),
                    ('clf',RandomForestClassifier(n_estimators=100))])
pipe_rf.fit(X_train_s,y_train_s)

pred = pipe_rf.predict(X_test)

ทำไมฉันถึงเลือก 80 เมื่อฉันพล็อตความแปรปรวนแบบสะสมฉันได้สิ่งนี้ด้านล่างซึ่งบอกฉันว่าด้วยส่วนประกอบ ~ 80 ฉันถึงความแปรปรวนเกือบทั้งหมด cumulative variance

ดังนั้นฉันจะบอกว่าให้ลองใช้มันในแบบจำลองของคุณ มันควรจะช่วย


4

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


คุณช่วยแบ่งปันเอกสารที่เกี่ยวข้องได้ไหม? ไม่ได้รับสิ่งที่คุณหมายถึง?
ซาก้า Waghmode

คุณสามารถอ่านบทความเกี่ยวกับการปักหลัก "ปัญหาในเทคนิคการซ้อน, 1999" อ่านเกี่ยวกับการซ้อน C มันสำคัญมากที่จะรู้ว่าฉันกำลังพูดถึงเวกเตอร์ทั้งหมด (เช่น 1x36 ในกรณีของ Hog) เป็นคุณลักษณะหนึ่ง แต่ไม่ใช่มิติภายใน คุณต้องติดตามว่าคุณลักษณะใดที่ใช้กับผู้เรียนพื้นฐาน ระวังเกี่ยวกับปัญหา overfitting
Bashar Haddad

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

1

กลุ่มตัวแปรอาจเป็นหลายค่าหลายค่าหรือการแปลงระหว่างค่าเบาบางและหนาแน่นอาจผิดไป คุณเคยคิดที่จะใช้ตัวจําแนกประเภทลักษณนาม http://scikit-learn.org/stable/modules/ensemble.html วิธีที่คุณสามารถจัดการกับปัญหาทั้งสองข้างต้น


ฉันได้ลองใช้เทคนิคของวงดนตรีรวมถึงตัวแยกประเภทการลงคะแนนแล้ว ยังไม่มีโชค
Sagar Waghmode

แล้วคุณเห็นเหลื่อมกันมากมายระหว่างการทำนายจากชุดข้อมูลสองชุดหรือไม่ อาจจะไม่มีข้อมูลใหม่แน่นอน? คือข้อมูลบอกเล่าเรื่องราวเดียวกัน
Diego

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

คุณใช้อัลกอริธึมการทำนายแบบใด
Diego

ฉันได้ลองใช้อัลกอริธึมสักสองสามตัวและตั้งรกรากกับรุ่นไล่ระดับสีไล่ระดับนอกจากนี้ฉันยังใช้ป่าสุ่มสำหรับปัญหาของฉัน
Sagar Waghmode

1

นอกจากคำแนะนำข้างต้นบางส่วนแล้วฉันขอแนะนำให้ใช้วิธีการสร้างแบบจำลองสองขั้นตอน

  1. ใช้คุณสมบัติเบาบางก่อนและพัฒนาแบบจำลองที่ดีที่สุด
  2. คำนวณความน่าจะเป็นที่คาดการณ์จากแบบจำลองนั้น
  3. ฟีดการประมาณความน่าจะเป็นนั้นในโมเดลที่สอง (เป็นคุณลักษณะอินพุต) ซึ่งจะรวมคุณสมบัติที่หนาแน่น กล่าวอีกนัยหนึ่งให้ใช้คุณลักษณะที่หนาแน่นและการประเมินความน่าจะเป็นสำหรับการสร้างแบบจำลองที่สอง
  4. การจำแนกขั้นสุดท้ายจะขึ้นอยู่กับรุ่นที่สอง

0

ลอง PCA เฉพาะในคุณสมบัติเบาบางและรวมเอาท์พุท PCA กับคุณสมบัติที่หนาแน่น

ดังนั้นคุณจะได้รับชุดคุณสมบัติหนาแน่น (ดั้งเดิม) + ชุดคุณลักษณะหนาแน่น (ซึ่งเดิมเป็นเบาบาง)

+1 สำหรับคำถาม โปรดอัปเดตเราด้วยผลลัพธ์


ว้าวสิ่งนี้ได้ทำให้ AUC ลดลงจริง :( ไม่แน่ใจว่ามันหมายถึงอะไรจำเป็นต้องตรวจสอบความสำคัญของฟีเจอร์และทั้งหมด แต่ปรัชญาของฉันคือจากคุณสมบัติที่กระจัดกระจายประมาณ 2.3k ฉันใช้คุณลักษณะ 1k ซึ่งอธิบายอัตราส่วนความแปรปรวน 0.97 การสูญเสียข้อมูลนี้อาจทำให้ AUC ลดลง
Sagar Waghmode

น่าสนใจ ขอบคุณสำหรับการแบ่งปัน. เรามีชุดข้อมูลที่คล้ายคลึงกับของคุณมาก (มีคุณสมบัติเบาบางขนาด 1k-2k) แค่อยากรู้อยากเห็นคุณสร้างชุดหลักกี่ชุด? หากตัวเลขนั้นต่ำเกินไปอาจอธิบายได้ว่าทำไม AUC ถึงลง
Tagar

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