ปรับปรุงความเร็วของการนำ t-sne ไปใช้ในไพ ธ อนสำหรับข้อมูลขนาดใหญ่


18

ฉันอยากจะลดมิติข้อมูลลงบนเวกเตอร์เกือบ 1 ล้านตัวที่มี 200 มิติ ( doc2vec) ฉันใช้TSNEการใช้งานจากsklearn.manifoldโมดูลสำหรับมันและปัญหาที่สำคัญคือความซับซ้อนของเวลา ถึงแม้จะมีmethod = barnes_hutความเร็วในการคำนวณยังต่ำ บางครั้งถึงแม้หน่วยความจำจะหมด

ฉันใช้งานบนโปรเซสเซอร์ 48 คอร์ที่มี RAM 130G มีวิธีเรียกใช้แบบขนานหรือใช้ประโยชน์จากทรัพยากรที่มีอยู่มากมายเพื่อเร่งกระบวนการให้เร็วขึ้น


คุณลอง map-reduc'ing ในกรอบอย่าง Spark หรือไม่?
Dawny33

ไม่ .. มันทำงานอย่างไรและคุณช่วยนำทางฉันได้ไหม ..
yazhi

โปรดอ่านเอกสารของ Sparkเพื่อทำความเข้าใจ :)
Dawny33

1
ดูว่าการใช้งาน Spark นี้ทำงานได้หรือไม่
เอ็ม

1
มันเป็นสกาล่าเพื่อจุดประกาย หากคุณต้องการใช้งาน python คุณอาจจะสามารถแปลได้ Spark ทำงานบนหลามด้วย
เอ็ม

คำตอบ:



7

ตรวจสอบ FFT เร่งแก้ไขตามเสื้อ SNE ( กระดาษ , รหัสและแพคเกจหลาม )

จากนามธรรม:

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

กระดาษยังมีตัวอย่างของชุดข้อมูลที่มีล้านคะแนนและ 100 มิติ (คล้ายกับการตั้งค่าของ OP) และดูเหมือนว่าจะใช้เวลาประมาณ 1 ชั่วโมง


5

เนื่องจากไม่มีคำตอบใน SO ฉันจึงถามตัวเองในหน้า Github และปัญหาถูกปิดโดยระบุคำตอบต่อไปนี้โดย GaelVaroquaux ..

หากคุณต้องการที่จะขนานการดำเนินการเวกเตอร์คุณควรใช้ build ของ numpy ที่คอมไพล์ด้วย MKL (อย่าพยายามทำด้วยตัวเองมันท้าทาย)

อาจมีวิธีการขนานในระดับสูงในอัลกอริทึมของตัวเองซึ่งอาจนำไปสู่การได้รับมากขึ้น อย่างไรก็ตามหลังจากดูรหัสอย่างรวดเร็วฉันไม่เห็นวิธีการทำเช่นนั้นที่ชัดเจน

ฉันจะไปข้างหน้าและปิดปัญหานี้เพราะมันเป็นรายการที่ท้องฟ้าสีฟ้า ฉันเห็นด้วยอย่างถ่องแท้ฉันอยากให้ TSNE ก้าวไปเร็วขึ้นและมันจะดีมาก ๆ แต่ในสถานะของกิจการปัจจุบันต้องทำงานมากขึ้นในสถานะที่เราสามารถจัดการรายการความปรารถนาดังกล่าว


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