วิธีการเข้ารหัสคลาสที่มี 24,000 หมวดหมู่?


10

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

  • ถ้าฉันLabelEncoder()ยีน 24K เหล่านั้น
  • แล้วOneHotEncoder()พวกเขา ...

จะมี 24,000 คอลัมน์ที่จะทำให้การฝึกอบรมของฉันเร็วขึ้นสำหรับซีพียู quad-core i7 2.2 GHz หรือไม่?

ถ้าเป็นเช่นนั้นมีวิธีอื่นในการเข้ารหัสที่ฉันสามารถทำได้ด้วยหรือไม่

ฉันควรพยายามอุทิศเลเยอร์ของแบบจำลองของฉันกับคุณสมบัตินี้หรือไม่?

นี่หมายความว่าฉันต้องการโหนดอินพุต 24K หรือไม่


ทำไมไม่เรียนรู้การเป็นตัวแทนด้วย VAE ฉันคิดว่าในลำดับยีนการเรียนรู้การเป็นตัวแทน (เหมือนทำใน NLP) จะทำให้ความรู้สึกมากเมื่อเทียบกับเพียง PCA ง่าย ๆ ...
n1tk

คำตอบ:


10

ใช่การใช้การเข้ารหัสแบบร้อนในคุณลักษณะ 24k ต้องใช้โหนดอินพุต 24k อย่างไรก็ตามสิ่งนี้ไม่ควรเป็นปัญหาสำหรับ Keras (หรือห้องสมุดการเรียนรู้ลึกอื่น ๆ ) การประมวลผลภาษาธรรมชาติมักใช้การเข้ารหัสคำที่มีขนาดคำศัพท์ใน ballpark เดียวกัน

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

เวลาการฝึกอบรมไม่ควรไม่สมเหตุสมผล


ขอบคุณสำหรับการตรวจสุขภาพ
HashRocketSyntax

ฉันสังเกตเห็นว่าคุณพูดถึงเลเยอร์ไม่ใช่ PCA ใน sklearn คุณจะแนะนำ autoencoders เป็นรูปแบบของการลดขนาดหรือไม่?
HashRocketSyntax

2
คุณพูดถึงว่าคุณใช้ Keras ดังนั้นคุณจึงใช้เครือข่ายประสาทเทียมบางอย่างใช่มั้ย หากบางแห่งในเครือข่ายของคุณคุณมีเลเยอร์ที่มีจำนวนโหนดน้อยกว่าอินพุตของคุณเครือข่ายจะทำการลดขนาดโดยอัตโนมัติ ฉันสมมติว่าคุณมีผลลัพธ์การถดถอยเพียงหนึ่ง (หรือน้อย) วิธีง่าย ๆ อย่างหนึ่งคือการมีเลเยอร์อินพุต (d = 24k), เลเยอร์กลางอย่างน้อยหนึ่งเลเยอร์ (d = 1k หรืออะไรทำนองนั้น) และเลเยอร์เอาต์พุตของคุณ (d = 1)
C. Yduqoli

ในขณะที่เลเยอร์ขนาดใกล้เคียงกันนั้นเป็นเรื่องธรรมดาใน NLP แต่โดยทั่วไปแล้วมันไม่มีเหตุผลที่จะฝึกฝนโมเดล NLP ที่ทันสมัยบนซีพียู GPU ที่ทรงพลังจริงๆแล้วเป็นตารางเดิมพันใน NLP สำหรับทุกสิ่งที่นอกเหนือจากโมเดล 'ของเล่น' ขนาดเล็ก ในทางกลับกันมันไม่ได้เป็นอุปสรรคใหญ่เนื่องจากทั้ง GPU แบบกายภาพและแบบคลาวด์นั้นค่อนข้างง่าย
Peteris

6

การฝังเอนทิตีสำหรับตัวแปรหมวดหมู่ ( เพจเจอร์ดั้งเดิม ) จะเป็นวิธีการที่เหมาะสมมากที่นี่ อ่านต่อที่นี่หรือที่นี่ ฉันใส่รหัสลงไปจากที่นี่จริง ๆ และทำให้การใช้งานเสร็จสมบูรณ์ดูrepo คอมไพล์นี้. สิ่งนี้จัดการกับตัวแปรหมวดหมู่ที่สำคัญมากได้อย่างง่ายดายโดยใช้เครือข่ายประสาท ฉันจะไม่แสดงข้อดีข้อเสียของ OHE คุณเพียงแค่ Google แต่เป็นหนึ่งในข้อเสียเปรียบหลักของมัน เมื่อมีตัวแปรหมวดหมู่ที่สำคัญมากมันเพิ่มพื้นที่ของคุณอย่างมากโดยไม่จำเป็นซึ่งในความคิดของฉันไม่เหมาะ และที่สำคัญกว่าคือ OHE สำหรับความรู้ของฉันไม่ได้หมายถึงความสัมพันธ์เชิงความหมายระหว่างหมวดหมู่หากมีความสัมพันธ์เช่นนี้! อย่างไรก็ตาม Entity Embedding เป็นแนวคิดของ Word Embedding ใน NLP น้ำหนักที่เรียนรู้ที่จะเข้ารหัสหมวดหมู่สามารถจับภาพความสัมพันธ์ภายในหมวดหมู่ได้


3

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

" การเรียนรู้ของเครื่องสำหรับการบูรณาการข้อมูลในชีววิทยาและการแพทย์: หลักการการปฏิบัติและโอกาส"โดย Zitnika et al. ครอบคลุมเทคนิควิศวกรรมฟีเจอร์ที่หลากหลายสำหรับยีน


ขอบคุณที่ทำให้รู้สึก ลดพื้นที่ฟีเจอร์เป็นจำนวนยีนที่เกี่ยวข้อง (และโซนบังคับในหน่วย wgs)
HashRocketSyntax

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