ขั้นตอนแรกสำหรับข้อมูลขนาดใหญ่ ( , )


21

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

ติดตั้งโมเดลการทำนายบางอย่างกับกลุ่มตัวอย่างย่อยที่มีขนาดใหญ่ขึ้นและใหญ่ขึ้น (สุ่ม) จนกระทั่ง:

  1. การติดตั้งและตรวจสอบความถูกต้องของโมเดลกลายเป็นเรื่องยากในการคำนวณ (เช่นการใช้แล็ปท็อปของฉันช้าไม่มีเหตุผล R ไม่มีหน่วยความจำเหลือ ฯลฯ ) หรือ

  2. การฝึกอบรมและทดสอบ RMSE หรือค่าความแม่นยำ / การเรียกคืนมีความเสถียร

หากข้อผิดพลาดในการฝึกอบรมและการทดสอบไม่คงที่ (1. ) ให้ใช้โมเดลที่ง่ายกว่าและ / หรือใช้โมเดลรุ่นมัลติคอร์หรือมัลติโหนดและรีสตาร์ทตั้งแต่ต้น

หากการฝึกอบรมและการทดสอบข้อผิดพลาดเสถียร (2. ):

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

  • หากเป็น 'ใหญ่' และการดำเนินการวิเคราะห์เพิ่มเติมนั้นมีค่าใช้จ่ายสูงให้วิเคราะห์ความสำคัญและสิ้นสุดของตัวแปรยังไม่มีข้อความsยูsอีเสื้อ

ฉันวางแผนจะใช้แพคเกจเช่นbiglm, speedglm, multicoreและffในการวิจัยครั้งแรกและต่อมาใช้กลไกที่ซับซ้อนมากขึ้นและ / หรือหลายโหนด (บน EC2) เท่าที่จำเป็น

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


1
ฟังดูเหมือนเป็นวิธีที่สมเหตุสมผล ผมพบว่าการพูดคุยเกี่ยวกับวิธีการที่คล้ายกัน: youtube.com/watch?v=X9YVSDWQokQ
อัลฟ่า

2
jmlr.csail.mit.edu/proceedings/papers/v7/miller09/miller09.pdfสิ่งนี้อาจมีประโยชน์ รายละเอียดเพิ่มเติมเกี่ยวกับคณิตศาสตร์ได้ที่นี่: ms.unimelb.edu.au/~millerh/papers/gencor_JCGS.pdf
dcl

@dcl: ขอบคุณ - ความคิดเป็นวิธีการเลือกตัวแปรที่ดีและราคาไม่แพงและไม่เชิงเส้นซึ่งจะทำให้คู่ขนานได้ดี (แม้ว่าจะเป็นแบบไม่แปร) ฉันอาจจะลองเพราะมันรวดเร็วและง่ายต่อการเขียนโค้ด ผมได้ แต่เดิมคิดของการใช้อัลกอริทึมที่เย็นมากนี้: code.google.com/p/rf-ace
lockedoff

@alfa: ฉันชอบความคิดนี้จริงๆ! การใช้การทดสอบตามลำดับในชุดย่อยที่ใหญ่กว่าและใหญ่กว่าของข้อมูลเพื่อกำจัดเมตาดาต้าที่มีประสิทธิภาพต่ำที่สุด สิ่งนี้ควรสิ่งมากขึ้น ขอบคุณ! ป.ล. ที่นี่เป็นรุ่นกระดาษของการพูดคุย: biglearn.org/files/papers/biglearn2011_submission_2.pdf
lockedoff

คำตอบ:


2

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

คุณอาจลองดู Vowpal Wabbit (VW):

https://github.com/JohnLangford/vowpal_wabbit/wiki

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


2

ฉันขอแนะนำให้ใช้ Hadoop และ RMR (แพ็คเกจเฉพาะสำหรับ Map Reduce in R) ด้วยกลยุทธ์นี้คุณสามารถเรียกใช้ชุดข้อมูลขนาดใหญ่บนคอมพิวเตอร์ comodity ด้วยการกำหนดค่าที่เหมาะสม (อาจใช้เวลาสองชั่วโมงในการติดตั้งและรันทั้ง Hadoop และ RMR (RHadoop))

ในความเป็นจริงถ้าคุณมีคอมพิวเตอร์มากกว่าหนึ่งเครื่องคุณสามารถสร้างคลัสเตอร์ลดเวลาในการประมวลผล

ฉันให้ลิงก์ที่สนับสนุนคำแนะนำของฉัน:

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

ดังนั้นคำแนะนำของฉันคือการปฏิบัติตามคำแนะนำเหล่านี้เพราะมันมีค่าหากข้อมูลของคุณมีขนาดใหญ่


0

นี่เป็นความคิดเห็นมากกว่าคำตอบ แต่ฉันไม่สามารถโพสต์เป็นความคิดเห็น (ต้องการ 50 ตัวแทน) ..

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

นอกจากนี้ฉันคิดว่าคุณกำลังใช้ R ด้วยเหตุผลหลายประการ (ฉันใช้ R ด้วย) แต่อาจใช้ซอฟต์แวร์เช่น SAS หรือ STATA ได้ง่ายขึ้น มันทำงานได้ดีกับข้อมูลขนาดใหญ่และคุณไม่ต้องจัดการกับการประมวลผลแบบมัลติคอร์และแบบขนาน

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

หวังว่านี่จะช่วยได้

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