วิธีการวิเคราะห์ชุดข้อมูลขนาดใหญ่แบบสำรวจอย่างต่อเนื่อง?


22

เมื่อฉันเริ่มการวิเคราะห์เชิงสำรวจในชุดข้อมูลขนาดใหญ่ (ตัวอย่างจำนวนมากหลายตัวแปร) ฉันมักจะพบว่าตัวเองมีหลายร้อยตัวแปรที่ได้รับและตันของแปลงที่แตกต่างกันและไม่มีทางที่จะติดตามสิ่งที่เกิดขึ้นจริง รหัสจบลงเหมือนปาเก็ตตี้เพราะไม่มีทิศทางจากจุดเริ่มต้น ...

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


สำหรับการอ้างอิงฉันกำลังทำงานกับข้อมูลทางธรณีวิทยา (ตัวแปรหลายตัวตามเวลา ฉันมักจะทำงานร่วมกับ Python หรือ R และเก็บทุกอย่างไว้ในคอมไพล์และลองใช้ IPython Notebook เช่นกัน อย่างไรก็ตามมันจะดีถ้าคำตอบนั้นค่อนข้างกว้างและมีประโยชน์สำหรับคนในทุกสาขาพร้อมกับข้อมูล (ใหญ่?) ประเภทอื่น


1
ฉันคิดว่าคุณจะได้รับคำแนะนำมากมายพอ ๆ กับการศึกษาแบบจำลองที่ออกแบบมาเพื่อประเมินวิธีการแข่งขันของการประมาณค่าหรือการทำนาย
ความน่าจะเป็นทางการ

1
อ่านใช่คำตอบนี้อาจจำเป็นต้องใช้มากเกินไป: stats.stackexchange.com/questions/2910/... ฉันคิดว่าอาจมีคำแนะนำเฉพาะเจาะจงมากกว่านี้ แต่ฉันคิดว่าคงไม่มี
naught101

คำตอบ:


10

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

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

องค์กร WRT นักวิเคราะห์แต่ละคนต้องหาเวิร์กโฟลว์ที่เหมาะกับเขาหรือเธอ - การทำเช่นนั้นสำคัญกว่า IMO มากกว่าการพยายามติดตามเวิร์กโฟลว์ของคนอื่นอย่างเหนียวแน่น หากคุณทำงานโดยทางโปรแกรม (เช่นการเขียนโค้ดที่สามารถรันเพื่อสร้าง / สร้างชุดผลลัพธ์ใหม่) และตรวจสอบงานของคุณเป็น git คุณก็จะก้าวหน้าไปมากในเรื่องนี้ ฉันสงสัยว่าคุณอาจต้องใช้เวลาในการจัดระเบียบรหัสของคุณและสำหรับสิ่งนั้นฉันขอแนะนำให้คุณติดตามโครงร่างของคุณ ตัวอย่างเช่นเก็บไฟล์การวิเคราะห์ของคุณค่อนข้างสั้นและตรงเป้าหมายดังนั้นแต่ละคำตอบจะตอบคำถามหนึ่งข้อ (เช่นพล็อตการวินิจฉัยสำหรับโมเดลการถดถอยที่เฉพาะเจาะจง) จัดระเบียบสิ่งเหล่านี้เป็นไดเรกทอรีย่อยที่หนึ่งหรือสองระดับขึ้นอยู่กับขนาดและความซับซ้อนของโครงการ ด้วยวิธีนี้โครงการจะจัดทำเอกสารด้วยตนเอง มุมมองรายการของไดเรกทอรีไดเรกทอรีย่อยและไฟล์ (พร้อมกับความคิดเห็นที่ด้านบนของแต่ละไฟล์) ในทางทฤษฎีควรทำซ้ำโครงร่างของคุณ

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

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

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


4

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

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

ทีนี้มันก็ไม่ได้ช่วยอะไรนัก สำหรับ EDA ฉันใช้ (ส่วนใหญ่) R เป็น emacs ผ่าน ESS คุณต้องต้องการ REPL สำหรับ EDA เวิร์กโฟลว์ของฉันคือการเล่นกับพล็อตการประมาณและอื่น ๆ ใน ESS (ในexploratory.Rไฟล์ประเภท) ตัดสินใจเลือกสิ่งที่ฉันต้องการเก็บไว้จากนั้นจึงทำการเข้ารหัสใหม่เพื่อให้สามารถดำเนินการแบทช์ได้ Re: git ฉันไม่รู้ว่าคุณใช้มันอย่างไร แต่ฉันใช้ repository เดียวสำหรับแต่ละโปรเจ็กต์ (โดยปกติจะเป็นกระดาษแผ่นเดียว) และ rebase นรกออกจาก codebase ของฉันเพื่อเก็บประวัติที่สะอาด เช่นฉันใช้

$ git merge meandering-branch --squash
$ git add -p somefile
$ git rebase -i master
$ git reset HEAD --hard

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

เท่าที่สำรวจข้อมูลจริงฉันพบว่าหนังสือเหล่านี้มีประโยชน์และน่าสนใจและพวกเขาจัดการเฉพาะกับชุดข้อมูลขนาดใหญ่ (อย่างน้อยก็ในบางส่วน):

  • กราฟิกของชุดข้อมูลขนาดใหญ่แก้ไขโดย Unwin, Theus และ Hofmann ผ่าน springerlinkหากคุณมีการเข้าถึงมิฉะนั้นแต่ละบทอาจมีให้บริการโดย googling

  • คู่มือการสร้างภาพข้อมูลแก้ไขโดยเฉินHärdleและ Unwin ยังผ่านสปริงเกอร์ลิงค์

  • การวิเคราะห์ข้อมูลโดย Huber (2011) ..


3

สองคำ: แผนที่แนวคิด นั่นเป็นวิธีเดียวที่มีประสิทธิภาพที่ฉันได้พบเพื่อแบ่งและพิชิตชุดข้อมูลขนาดใหญ่หรือแนวคิดใด ๆ ที่ซับซ้อนมาก http://en.wikipedia.org/wiki/Concept_maps

โดยส่วนตัวแล้วฉันคิดว่าบนกระดาษดีกว่าบนหน้าจอดังนั้นฉันจึงคิดแผนที่สิ่งที่ฉันจัดการก่อนที่ฉันจะเริ่มทำการวิเคราะห์ขั้นพื้นฐาน สำหรับไดอะแกรมมืออาชีพที่มากขึ้นมีซอฟต์แวร์แผนที่ความคิดจำนวนมากhttp://en.wikipedia.org/wiki/List_of_concept-_and_mind-mapping_software

การทำแผนที่ความคิดมีข้อดีหลายประการ:

  • บอกสิ่งที่ฉันมีในแง่ของตัวแปร "แกนกลาง" และตัวแปรที่ได้รับ (ถ้ามี)
  • ช่วยให้องค์กร / การกำหนดรูปแบบขึ้นอยู่กับทฤษฎี / ตรรกะ
  • ชี้ไปที่ตัวแปรที่ฉันอาจหายไปและ / หรือสามารถเพิ่มได้หากความสัมพันธ์ระหว่างตัวแปรหลักไม่ได้เลื่อนออกไปอย่างที่ฉันคิดว่าควรจะเป็น

แก้ไข :

ตัวอย่างนี่คือแผนผังแนวคิดสำหรับการวิเคราะห์ปัจจัย: http://www.metacademy.org/graphs/concepts/factor_analysis#focus=factor_analysis&mode=exploreทีนี้นี่คือการเรียนรู้แนวคิดไม่ใช่การวิเคราะห์ แต่เป็นแนวคิด เหมือนกัน: เพื่อทำแผนที่ก่อนเวลาสิ่งที่เหมาะสมแล้วทำ

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


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

แผนผังแนวคิดถูกออกแบบมาเพื่อตรวจสอบเส้นทางที่ควรนำไปสู่ที่ไหนสักแห่งตามทฤษฎีเฉพาะเรื่อง - เรื่อง หากปรากฎว่าการสืบสวนโดยเฉพาะไม่ได้ไปที่ใดคุณต้องจดบันทึกไว้ในแผนที่แนวคิดเพราะนั่นคือรายการคู่มือ / สิ่งที่ต้องทำของคุณจากที่นั่นคุณจะเห็นทันทีว่าตัวแปรใดที่ได้รับจะได้รับผลกระทบ ลอง.
rocinante

3

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


1

ฉันจะพิจารณาเครื่องมือ Business Intelligence ... ที่มีปัญหาคล้ายกันเกิดขึ้น โดยเฉพาะอย่างยิ่ง (คลังข้อมูลการวิเคราะห์มิติ) ลำดับชั้นและดาวน์ดาวน์

แนวคิดพื้นฐานคือคุณพยายามแสดงข้อมูลพื้นฐานของคุณเป็นปริมาณที่รวมได้ (จำนวนรายได้ ฯลฯ แทนที่จะเป็นเปอร์เซ็นต์) จากนั้นคุณออกแบบลำดับชั้นเพื่อรวมรายละเอียดต่างๆ (เช่นเดือน / สัปดาห์ / ... ) สิ่งนี้ช่วยให้คุณสามารถดูภาพรวมข้อมูลทั้งหมดของคุณได้ง่าย ๆ จากนั้นซูมเข้าไปในพื้นที่เฉพาะ ดูเช่นhttp://cubes.databrewery.org/ (python) หรือ excel power pivot

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