การลดขนาดอย่างมีประสิทธิภาพสำหรับชุดข้อมูลขนาดใหญ่


12

ฉันมีชุดข้อมูลที่มี ~ 1M แถวและ ~ 500K คุณสมบัติกระจัดกระจาย ฉันต้องการลดมิติข้อมูลลงที่ใดที่หนึ่งตามลำดับของคุณลักษณะที่หนาแน่น 1K-5K

sklearn.decomposition.PCAไม่ทำงานกับข้อมูลที่กระจัดกระจายและฉันพยายามใช้sklearn.decomposition.TruncatedSVDแต่ได้รับข้อผิดพลาดของหน่วยความจำอย่างรวดเร็ว ตัวเลือกของฉันในการลดมิติข้อมูลที่มีประสิทธิภาพในระดับนี้คืออะไร

คำตอบ:


11

คุณเคยได้ยินUniform Manifold Approximation and Projection (UMAP)บ้างไหม?

UMAP (Uniform Manifold Approximation and Projection) เป็นเทคนิคการเรียนรู้ที่หลากหลายสำหรับการลดมิติที่ไม่ใช่เชิงเส้น UMAP สร้างขึ้นจากกรอบทฤษฎีที่ใช้ในเรขาคณิต Riemannian และทอพอโลยีเชิงพีชคณิต ผลที่ได้คืออัลกอริทึมที่ปรับขนาดได้จริงที่ใช้กับข้อมูลโลกแห่งความจริง อัลกอริทึม UMAP สามารถแข่งขันกับ t-SNE สำหรับคุณภาพการสร้างภาพและเนื้อหาที่รักษาโครงสร้างระดับโลกมากขึ้นด้วยประสิทธิภาพการทำงานที่เหนือกว่า ยิ่งไปกว่านั้น UMAP ตามที่อธิบายไว้ไม่มีข้อ จำกัด ในการคำนวณเกี่ยวกับมิติการฝังทำให้สามารถใช้งานได้เป็นเทคนิคการลดขนาดทั่วไปสำหรับการเรียนรู้ของเครื่อง

ตรวจสอบรหัสและเอกสารต้นฉบับของพวกเขาสำหรับรายการข้อดีและข้อเสียมันใช้งานง่ายสุด ๆ

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

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


2
(+1) - UMAP ยอดเยี่ยมมาก! คุณอาจลองปรับโครงสร้างเล็กน้อย: ย่อหน้าของคุณอยู่ตรงกลางและกระสุนปืน follwing จะทำซ้ำข้อมูลเดิม นอกจากนี้คุณสามารถทำให้มันเป็นใบเสนอราคาเนื่องจากเป็น (มากหรือน้อย) คัดลอกวางจากเว็บไซต์ของพวกเขา
n1k31t4

2
แน่นอนว่าฉันสามารถลดมันได้อย่างแน่นอนฉันแค่อยากจะชี้ให้พวกเขาเห็นที่นี่ ขอบคุณ อย่างไรก็ตามฉันชอบ UMAP
TwinPenguins

1
ขอบคุณสำหรับคำแนะนำ! ฉันรู้ว่ามันเป็นทางเลือกแทน t-SNE สำหรับการสร้างภาพ แต่ไม่ได้ตระหนักว่ามันก็ดีสำหรับการลดขนาดทั่วไป
timleathart

1

ในกรณีที่ผู้คนที่มาโพสต์นี้พบว่า UMAP ไม่มีประสิทธิภาพเพียงพอต่อไปนี้เป็นเทคนิคอื่น ๆ ที่ฉันเจอซึ่งมีประสิทธิภาพมากกว่า (แต่ไม่ได้คุณภาพสูง):

  • การฉายแบบสุ่ม:โดยพื้นฐานแล้วจะทำการสุ่มเมทริกซ์ของรูปร่างd × ม. ที่ไหน d เป็นมิติเดิมและ ม.เป็นมิติข้อมูลที่ต้องการและคูณเมทริกซ์ข้อมูลกับเมทริกซ์ประมาณการเพื่อสร้างชุดข้อมูลที่ลดลง sklearn.random_projectionมีการนำไปใช้บางส่วนของสิ่งนี้ หากขนาดและการกระจายของเมทริกซ์การฉายภาพมีความเหมาะสมระยะทางคู่ระหว่างจุดจะถูกเก็บรักษาไว้ในพื้นที่ฉาย

  • การแฮ็คุณสมบัติ:ใช้แฮชของค่าคุณลักษณะและใช้มอดุลัสม. ที่ไหน ม.เป็นมิติข้อมูลที่ต้องการ การชนของแฮชจะได้รับการจัดการโดยการหาผลรวมของค่าที่ชนกัน คุณสามารถคิดว่ามันเป็นการสับตามลำดับของคุณสมบัติแยกเมทริกซ์ข้อมูลออกเป็นชุดของส่วนแนวตั้งและเพิ่มองค์ประกอบเข้าด้วยกันตามลำดับ สำหรับข้อมูลที่กระจัดกระจายการชนนั้นค่อนข้างหายาก sklearn.feature_extraction.FeatureHasherเป็นการใช้งานที่ (ฉันเชื่อ) ใช้งานได้กับอินพุตสตริงเท่านั้น ฉันคิดว่ามันมักจะใช้สำหรับข้อมูลรูปแบบตัวอักษรของคำ

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