ทักษะใดที่จำเป็นสำหรับการวิเคราะห์ทางสถิติขนาดใหญ่


107

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


1
บางตัวชี้ที่ดีที่นี่
radek

มันจะมีประโยชน์ถ้าคุณสรุปสิ่งที่คุณคิดว่าดีที่สุด
rolando2

สิ่งที่น่าสนใจคือการอภิปรายที่เกี่ยวข้องกับการทดสอบสมมติฐานด้วยชุดข้อมูลจำนวนมาก: stats.stackexchange.com/q/2516/919
whuber

คำตอบ:


115

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

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

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

  • การวิเคราะห์ใด ๆ ที่คุณคิดเกี่ยวกับการทำอาจใช้เวลาและการคำนวณมาก คุณจะต้องพัฒนาวิธีการย่อยตัวอย่างและทำงานกับชุดข้อมูลบางส่วนเพื่อให้คุณสามารถวางแผนเวิร์กโฟลว์ของคุณเมื่อคำนวณด้วยชุดข้อมูลทั้งหมด (การสุ่มตัวอย่างอาจซับซ้อนเนื่องจากคุณต้องการเซตย่อยของข้อมูลที่มีความสมบูรณ์เท่ากับชุดข้อมูลทั้งหมดและอย่าลืมตรวจสอบความถูกต้องของโมเดลของคุณด้วยข้อมูลที่ถูกระงับ)

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

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

    • ชุดข้อมูลบางชุดมีขนาดใหญ่เนื่องจากมีตัวแปรมากมาย (หลายพันหรือหลายหมื่นทั้งหมดแตกต่างกัน) คาดว่าจะใช้จ่ายมากเวลาเพียงสรุปและความเข้าใจข้อมูล codebookหรือพจนานุกรมข้อมูลและรูปแบบอื่น ๆ ของเมตาดาต้า , กลายเป็นสิ่งจำเป็น

  • เวลาส่วนใหญ่ของคุณใช้เวลาเพียงแค่ย้ายข้อมูลไปรอบ ๆ และจัดรูปแบบใหม่ คุณต้องการทักษะในการประมวลผลฐานข้อมูลขนาดใหญ่และทักษะด้วยการสรุปและแสดงกราฟข้อมูลจำนวนมาก (ตัวทวีคูณเล็ก ๆ ของ Tufteมาที่นี่ก่อน)

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

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

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

  • จะมีข้อมูลมากเกินพอที่จะระบุการเปลี่ยนแปลงแบบไม่เชิงเส้นที่เหมาะสมของตัวแปร รู้วิธีการทำ

  • คุณจะมีข้อมูลเพียงพอที่จะตรวจสอบความสัมพันธ์เชิงการเปลี่ยนแปลงในแนวโน้มความไม่คงตัว, heteroscedasticityฯลฯ

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

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


3
+1 ฉันจะแบ่งปันคำตอบที่ยอดเยี่ยมนี้ (และพิมพ์ให้ใกล้เคียง ^ _ ^)
Dmitrij Celov

1
+1 นี่คือสิ่งที่ฉันจะเล่าขานนักเรียนของฉันอย่างต่อเนื่องเป็นเวลาหลายปี
mpiktas

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

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

2
+1 สำหรับระบบอัตโนมัติช่วยลดข้อผิดพลาด: " เขียนโปรแกรมที่สร้างคำสั่ง SQL โดยตรงจากการประเมินโมเดล "
Orion

18

คำถามของคุณควรให้คำตอบที่ดี นี่คือจุดเริ่มต้นบางส่วน

  1. ความสามารถในการทำงานกับการแลกเปลี่ยนระหว่างความแม่นยำและความต้องการที่อยู่ในอำนาจการคำนวณ

  2. สิ่งอำนวยความสะดวกที่มีเทคนิคการขุดข้อมูลที่สามารถใช้เป็นเครื่องมือคัดกรองเบื้องต้นก่อนดำเนินการถดถอย เช่นเครือข่าย chaid, cart หรือ neural

  3. ความเข้าใจอย่างลึกซึ้งเกี่ยวกับความสัมพันธ์ระหว่างนัยสำคัญทางสถิติและความสำคัญเชิงปฏิบัติ เพลงที่หลากหลายของวิธีการสำหรับการเลือกตัวแปร

  4. สัญชาตญาณที่จะข้ามค่า


ฉันจะรวม # 4 และ # 1: สิ่งสำคัญคือการรู้วิธีการตรวจสอบความถูกต้องโดยไม่ต้องใช้ทรัพยากรคอมพิวเตอร์ของคุณมากเกินไป
Zach

1
คุณช่วยอธิบายจุดที่ 2 ของคุณได้ไหม คุณจะใช้เครือข่าย CHAID / CART / neural เป็นเครื่องมือคัดกรองสำหรับการถดถอยอย่างไร
raegtin

2
@raegtin - ฉันคุ้นเคยกับ CHAID มากที่สุดซึ่งมาพร้อมกับสิ่งที่เรียกว่า "การโต้ตอบ" ซึ่งมักจะเป็นเอฟเฟกต์หลักที่ปลอมแปลงเป็นการโต้ตอบเพราะนั่นเป็นวิธีเดียวที่กระบวนการจะ "ปล่อยให้พวกเขาเข้ามา" (ใน CHAID สามารถระบุได้เพียง 1 เอฟเฟกต์หลักเท่านั้นดังนั้นเอฟเฟกต์หลักอื่น ๆ ทั้งหมดจึงถูกบีบเข้าสู่เซลล์ "ปฏิสัมพันธ์") แต่ CHAID มีข้อได้เปรียบในการตรวจสอบการมีปฏิสัมพันธ์มากมาย ดังนั้นเมื่อมีการระบุสัญญาที่มีอยู่สองสามข้อพวกมันสามารถรวมเข้ากับการถดถอยหรือโนวาได้ด้วยส่วนประกอบที่มีลำดับต่ำกว่าทั้งหมดและสามารถทดสอบว่าอันไหนมีประโยชน์อย่างแท้จริง
rolando2

1
+1 ฉันรู้สึกทึ่งกับความเป็นไปได้ของการใช้ data mining (โดยเฉพาะ CHAID) ในการสำรวจผลกระทบที่อาจเกิดขึ้น มันน่าสนใจที่จะเห็นแอปพลิเคชันเช่นชุดข้อมูล (และขนาดเล็ก) เทียมที่stats.stackexchange.com/q/10363/919
whuber

12

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


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

2
บางครั้งควรเขียน "รหัสที่ไม่มีประสิทธิภาพ" ถ้าสิ่งนี้จะช่วยในการสร้างโครงสร้างข้อมูลซึ่งคาดว่าจะมีคำถามเพิ่มเติมตามทางซึ่งอาจจะถูกถาม
Ralph Winters

1
@Ralph: +1 ฉันเห็นด้วยอย่างยิ่งและเรียนรู้สิ่งนี้ด้วยวิธีที่ยากด้วยตัวเอง ฉันไม่ได้ตั้งใจที่จะใช้ว่าคุณควรเขียนโค้ดที่มีประสิทธิภาพเสมอไม่ว่าอะไรจะเกิดขึ้นเพียงแค่คุณควรรู้วิธีการ
dsimcha

5

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

-Ralph Winters


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

2
ลองปรับแต่ง googleให้เป็นเครื่องมือทำความสะอาดข้อมูลแบบกึ่งอัตโนมัติซึ่งจะช่วยหลีกเลี่ยงข้อผิดพลาดในการแก้ไขด้วยมือ
mindless.panda

5
  1. การกำหนดกรอบปัญหาในกรอบการลดแผนที่
  2. วิศวกรรมด้านของปัญหาเช่น. เท่าไหร่เจ็บที่จะใช้ความแม่นยำที่ต่ำกว่าสำหรับพารามิเตอร์หรือการเลือกรูปแบบตามไม่เพียง แต่ในลักษณะทั่วไป แต่การจัดเก็บและค่าใช้จ่ายในการคำนวณเช่นกัน

คุณสามารถให้ลิงค์ที่เกี่ยวข้องสำหรับกรอบลดแผนที่ที่คุณพูดถึงได้หรือไม่?
mindless.panda

@ sugar.panda เพิ่มลิงก์วิกิ!
สูง

+1 สำหรับการพูดถึงความแม่นยำที่ต่ำกว่าแม้ว่ามันจะห่างไกลจากการเป็นผู้ปกครอง ความแม่นยำที่ต่ำกว่ายิ่งมีแนวโน้มที่เราจะตัดสินใจไม่ดี สิ่งนี้เชื่อมโยงอย่างใกล้ชิดกับข้อผิดพลาด Type I / II และครอบคลุมสาขาวิชาหลายแห่ง แต่ส่วนใหญ่เกี่ยวข้องกับสถิติวิทยาศาสตร์การตัดสินใจและเศรษฐศาสตร์ ฟังก์ชั่นยูทิลิตี้ควรจะคิดล่วงหน้าและเป็นส่วนหนึ่งของกระบวนการคิดเพื่อระบุวิธีการที่เหมาะสม
Thomas Speidel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.