Những kỹ năng cần thiết để thực hiện phân tích thống kê quy mô lớn?


107

Nhiều công việc thống kê yêu cầu kinh nghiệm với dữ liệu quy mô lớn. Các loại kỹ năng thống kê và tính toán sẽ cần để làm việc với các tập dữ liệu lớn. Ví dụ, làm thế nào về việc xây dựng các mô hình hồi quy được cung cấp một bộ dữ liệu với 10 triệu mẫu?


1
Một số gợi ý tốt ở đây .
radek

Sẽ rất hữu ích nếu bạn tóm tắt những thứ bạn nghĩ là tốt nhất.
rolando2

Điều đáng quan tâm là các cuộc thảo luận liên quan về kiểm tra giả thuyết với các bộ dữ liệu lớn: stats.stackexchange.com/q/2516/919
whuber

Câu trả lời:


115

Câu trả lời tốt đã xuất hiện. Do đó tôi sẽ chỉ chia sẻ một số suy nghĩ dựa trên kinh nghiệm cá nhân: điều chỉnh những điều có liên quan với tình huống của bạn khi cần thiết.

Đối với nền và bối cảnh- vì bạn có thể giải thích cho bất kỳ sự thiên vị cá nhân nào có thể xuất hiện trong thông điệp này - phần lớn công việc của tôi là giúp mọi người đưa ra quyết định quan trọng dựa trên các bộ dữ liệu tương đối nhỏ. Chúng nhỏ vì dữ liệu có thể tốn kém để thu thập (ví dụ 10 nghìn đô la cho mẫu đầu tiên của giếng quan trắc nước ngầm, hoặc vài nghìn đô la để phân tích các hóa chất bất thường). Tôi đã quen với việc lấy càng nhiều càng tốt từ bất kỳ dữ liệu nào có sẵn, để khám phá chúng cho đến chết và phát minh ra các phương pháp mới để phân tích chúng nếu cần thiết. Tuy nhiên, trong vài năm qua, tôi đã tham gia vào một số cơ sở dữ liệu khá lớn, chẳng hạn như một trong những dữ liệu kinh tế xã hội và kỹ thuật bao trùm toàn bộ Hoa Kỳ ở cấp khối Điều tra dân số (8,5 triệu hồ sơ,

Với bộ dữ liệu rất lớn, toàn bộ cách tiếp cận và tư duy thay đổi . Hiện tại có quá nhiều dữ liệu để phân tích. Một số ý nghĩa rõ ràng ngay lập tức (và, khi nhìn lại) (nhấn mạnh vào mô hình hồi quy) bao gồm

  • Bất kỳ phân tích nào bạn nghĩ về việc làm có thể mất rất nhiều thời gian và tính toán. Bạn sẽ cần phát triển các phương pháp lấy mẫu con và làm việc trên các bộ dữ liệu một phần để bạn có thể lập kế hoạch cho quy trình làm việc của mình khi tính toán với toàn bộ tập dữ liệu. (Lấy mẫu con có thể phức tạp, vì bạn cần một tập hợp con đại diện của dữ liệu phong phú như toàn bộ tập dữ liệu. Và đừng quên xác thực chéo các mô hình của bạn với dữ liệu được giữ lại.)

    • Bởi vì điều này, bạn sẽ dành nhiều thời gian hơn để ghi lại những gì bạn làm và viết kịch bản mọi thứ (để nó có thể được lặp lại).

    • Như @dsimcha vừa lưu ý, kỹ năng lập trình tốt rất hữu ích. Trên thực tế, bạn không cần nhiều kinh nghiệm trong môi trường lập trình, nhưng bạn cần sẵn sàng lập trình, khả năng nhận biết khi lập trình sẽ giúp (thực sự là về mọi bước) và hiểu rõ về các yếu tố cơ bản của khoa học máy tính, chẳng hạn như thiết kế cấu trúc dữ liệu phù hợp và cách phân tích độ phức tạp tính toán của các thuật toán. Điều đó hữu ích để biết trước liệu mã bạn dự định viết sẽ mở rộng đến toàn bộ dữ liệu.

    • Một số bộ dữ liệu lớn vì chúng có nhiều biến số (hàng nghìn hoặc hàng chục nghìn, tất cả chúng đều khác nhau). Hy vọng sẽ dành rất nhiều thời gian chỉ để tóm tắt và hiểu dữ liệu . Một cuốn sách mã hoặc từ điển dữ liệu và các dạng siêu dữ liệu khác trở nên cần thiết.

  • Phần lớn thời gian của bạn chỉ dành cho việc di chuyển dữ liệu xung quanh và định dạng lại chúng. Bạn cần có kỹ năng xử lý cơ sở dữ liệu lớn và kỹ năng với việc tóm tắt và vẽ đồ thị lượng lớn dữ liệu. ( Nhiều bội số của Tufte trở nên nổi bật ở đây.)

  • Một số công cụ phần mềm yêu thích của bạn sẽ thất bại. Quên bảng tính, ví dụ. Rất nhiều phần mềm mã nguồn mở và học thuật sẽ không thể xử lý các bộ dữ liệu lớn: quá trình xử lý sẽ mất vĩnh viễn hoặc phần mềm sẽ bị sập. Mong đợi điều này và đảm bảo bạn có nhiều cách để hoàn thành các nhiệm vụ chính của mình.

  • Hầu như bất kỳ kiểm tra thống kê nào bạn chạy sẽ mạnh đến mức gần như chắc chắn sẽ xác định được hiệu ứng "đáng kể". Bạn phải tập trung nhiều hơn vào tầm quan trọng thống kê , chẳng hạn như kích thước hiệu ứng, thay vì tầm quan trọng.

  • Tương tự, lựa chọn mô hình là rắc rối bởi vì hầu hết mọi biến số và bất kỳ tương tác nào bạn có thể dự tính sẽ trông có vẻ quan trọng. Bạn phải tập trung nhiều hơn vào ý nghĩa của các biến bạn chọn để phân tích.

  • Sẽ có quá nhiều thông tin để xác định các phép biến đổi phi tuyến thích hợp của các biến. Biết làm thế nào để làm điều này.

  • Bạn sẽ có đủ dữ liệu để phát hiện các mối quan hệ phi tuyến tính, thay đổi xu hướng, không cố định, không đồng nhất , v.v.

  • Bạn sẽ không bao giờ được hoàn thành . Có rất nhiều dữ liệu bạn có thể nghiên cứu chúng mãi mãi. Do đó, điều quan trọng là phải thiết lập các mục tiêu phân tích của bạn ngay từ đầu và liên tục ghi nhớ chúng.

Tôi sẽ kết thúc bằng một giai thoại ngắn minh họa một sự khác biệt bất ngờ giữa mô hình hồi quy với một tập dữ liệu lớn so với dữ liệu nhỏ hơn. Vào cuối dự án với dữ liệu Điều tra dân số, một mô hình hồi quy mà tôi đã phát triển cần được triển khai trong hệ thống máy tính của khách hàng, có nghĩa là viết mã SQL trong cơ sở dữ liệu quan hệ. Đây là một bước thường quy nhưng mã được tạo bởi các lập trình viên cơ sở dữ liệu liên quan đến hàng ngàn dòng SQL. Điều này khiến cho gần như không thể đảm bảo nó không có lỗi - mặc dù chúng tôi có thể phát hiện ra các lỗi (nó cho kết quả khác nhau trên dữ liệu thử nghiệm), việc tìm ra chúng là một vấn đề khác. (Tất cả những gì bạn cần là một lỗi đánh máy trong một hệ số ...) Một phần của giải pháp là viết chương trình tạo các lệnh SQL trực tiếp từ các ước tính mô hình. Điều này đảm bảo rằng những gì được đưa ra từ gói thống kê chính xác là những gì đã đi vào RDBMS. Như một phần thưởng, một vài giờ dành cho việc viết kịch bản này đã thay thế có thể vài tuần mã hóa và thử nghiệm SQL. Đây là một phần nhỏ trong ý nghĩa của nhà thống kê để có thể truyền đạt kết quả của họ.


3
+1, tôi sẽ chia sẻ phản hồi tuyệt vời này (và in nó để có gần đó ^ _ ^)
Dmitrij Celov

1
+1, đây là điều tôi chắc chắn sẽ kể lại cho học sinh của mình trong nhiều năm tới.
mpiktas

2
giai thoại nhắc nhở tôi thời gian tôi phải chuyển mô hình từ Eview sang R. Mô hình ban đầu được thực hiện trong Eview, kết quả là khoảng 20 phương trình. Tôi đã phải trình bày kết quả trong trang web với giao diện tương tác. Do mô hình đang hoạt động, tôi đã viết một mã dịch đầu ra của Eview sang mã R với cùng mục đích là mô hình chính xác được sử dụng cả trong Eview và R. R hoạt động rất độc đáo, thậm chí tôi đã kết thúc bằng cách sử dụng mã khác biệt để tính toán độ dốc phân tích.
mpiktas

2
Nó thường được coi là mang tính xây dựng hơn (nếu không phải là phép lịch sự đơn giản) khi những lời khen ngợi được biện minh trong một bình luận, trừ khi có những lý do rõ ràng không làm như vậy (ví dụ, phản hồi mơ hồ một dòng, không có phản hồi để yêu cầu cập nhật câu trả lời sai, hành vi tấn công). Điều này góp phần nâng cao chất lượng của một phản hồi, khi các đối số hợp lệ được đưa ra. Trong trường hợp cụ thể này, tôi thấy không có lý do cho một downvote!
chl

2
+1 để tự động hóa giảm lỗi: " viết chương trình tạo các lệnh SQL trực tiếp từ các ước tính mô hình ".
Orion

18

Câu hỏi của bạn sẽ mang lại một số câu trả lời tốt. Dưới đây là một số điểm bắt đầu.

  1. Một khả năng làm việc với sự đánh đổi giữa độ chính xác và nhu cầu đặt ra cho sức mạnh tính toán.

  2. Cơ sở với các kỹ thuật khai thác dữ liệu có thể được sử dụng làm công cụ sàng lọc sơ bộ trước khi tiến hành hồi quy. Ví dụ, chaid, giỏ hàng, hoặc mạng lưới thần kinh.

  3. Một sự hiểu biết sâu sắc về mối quan hệ giữa ý nghĩa thống kê và ý nghĩa thực tiễn. Một loạt các phương pháp để lựa chọn biến.

  4. Bản năng của crossvalidate.


Tôi cũng sẽ kết hợp # 4 và # 1: điều quan trọng là phải biết cách xác thực chéo mà không áp đảo tài nguyên máy tính của bạn.
Zach

1
Bạn có thể giải thích điểm thứ 2 của bạn? Làm thế nào bạn sẽ sử dụng CHAID / GIỎ / mạng thần kinh làm công cụ sàng lọc để hồi quy?
raegtin

2
@raegtin - Tôi quen thuộc nhất với CHAID, xuất hiện cái gọi là "tương tác" thường là các hiệu ứng chính giả dạng là tương tác vì đó là cách duy nhất để quy trình này "cho phép họ tham gia". (Trong CHAID chỉ có thể có 1 hiệu ứng chính được xác định như vậy, vì vậy tất cả các hiệu ứng chính khác được nén vào các ô "tương tác".) Nhưng CHAID có lợi thế là có thể kiểm tra nhiều tương tác. Vì vậy, một khi một vài cái có triển vọng được xác định, chúng có thể được tích hợp vào hồi quy hoặc anova, với tất cả các thành phần bậc thấp hơn và người ta có thể kiểm tra xem cái nào thực sự hữu ích.
rolando2

1
+1 Tôi bị thu hút bởi khả năng sử dụng khai thác dữ liệu (đặc biệt là CHAID) để khám phá các hiệu ứng tiềm năng. Sẽ rất thú vị khi xem một ứng dụng, chẳng hạn như với bộ dữ liệu nhân tạo (và nhỏ) tại stats.stackexchange.com/q/10363/919
whuber

12

Kỹ năng lập trình tốt là phải. Bạn cần có khả năng viết mã hiệu quả, có thể xử lý lượng dữ liệu khổng lồ mà không bị nghẹt, và có thể có thể song song mã đã nói để chạy mã trong một khoảng thời gian hợp lý.


4
Mã hóa là điều bắt buộc, nhưng cũng biết cách làm việc với HĐH không chống lại nó là điều quan trọng. Bạn phải hiểu rằng đôi khi chia tách công việc có thêm chi phí liên quan đến nó, vì việc truy cập đĩa và mạng mang thêm chi phí. Bạn phải hiểu các cách khác nhau để chặn và chờ đợi và thực hiện giao tiếp giữa các quá trình. Tôi đã thấy mã khoa học tuyệt vời sẽ dành phần lớn thời gian để chờ một số cuộc gọi hệ thống kết thúc. Kết bạn với sysadmin trong hệ thống của bạn, bạn có thể nhận được rất nhiều sự giúp đỡ với việc tối ưu hóa hệ thống của bạn bằng cách mang cà phê cho họ;)
Marcin

2
Đôi khi, tốt hơn là viết "Mã không hiệu quả" nếu điều này sẽ hỗ trợ trong việc tạo cấu trúc dữ liệu dự đoán các câu hỏi bổ sung có thể sẽ được hỏi.
Ralph Winters

1
@Ralph: +1, tôi hoàn toàn đồng ý và tự học điều này một cách khó khăn. Tôi không có ý áp dụng rằng bạn nên luôn luôn viết mã hiệu quả cho dù có sự đánh đổi nào, chỉ là bạn nên biết cách làm.
dsimcha

5

Tôi cũng sẽ nói thêm rằng dữ liệu quy mô lớn cũng giới thiệu vấn đề về "Dữ liệu xấu" tiềm năng. Không chỉ thiếu dữ liệu, mà còn có lỗi dữ liệu và định nghĩa không nhất quán được giới thiệu bởi mọi phần của hệ thống đã từng chạm vào dữ liệu. Vì vậy, ngoài các kỹ năng thống kê, bạn cần trở thành một chuyên gia dọn dẹp dữ liệu, trừ khi có người khác làm việc đó cho bạn.

Mùa đông -Ralph


3
Đây là những điểm tốt. Outliers và các vấn đề dữ liệu khác làm hỏng bất kỳ tập dữ liệu nào , bất kể lớn hay nhỏ. Theo kinh nghiệm của tôi, họ thực sự dễ dàng xác định và xử lý hơn trong các bộ dữ liệu lớn, bởi vì bạn có quyền phân biệt chúng với khối lượng dữ liệu và đặc biệt là nếu bạn sử dụng các phương pháp mạnh mẽ, chúng sẽ ít ảnh hưởng đến kết quả. BTW, bạn luôn thực hiện "làm sạch dữ liệu" trong mọi phân tích. Đây không phải là một cái gì đó có thể được tách riêng và được giới thiệu đến một chuyên gia để được xử lý một lần và mãi mãi. Một ngoại lệ chỉ là một ngoại lệ trong bối cảnh của một mô hình cụ thể.
whuber

2
Kiểm tra google tinh chỉnh như một trình dọn dẹp dữ liệu bán tự động giúp tránh những cạm bẫy của chỉnh sửa tay.
mindless.panda

5
  1. Đóng khung vấn đề trong khung Map- less.
  2. Mặt kỹ thuật của vấn đề, ví dụ, việc sử dụng độ chính xác thấp hơn cho các tham số hoặc lựa chọn mô hình không chỉ dựa trên tổng quát mà còn cả chi phí lưu trữ và tính toán.

Bạn có thể cung cấp một liên kết có liên quan cho khung giảm bản đồ mà bạn đề cập không?
mindless.panda

@ sugar.panda, liên kết wiki được thêm vào!
highBandWidth

+1 để đề cập về độ chính xác thấp hơn, mặc dù nó không phải là một đặc quyền tham gia. Độ chính xác càng thấp, chúng ta càng có nhiều khả năng đưa ra quyết định tồi. Điều này được liên kết chặt chẽ với lỗi Loại I / II và kéo dài một số ngành nhưng chủ yếu liên quan đến thống kê, khoa học quyết định và kinh tế. Các chức năng tiện ích nên được nghĩ trước và một phần của quá trình suy nghĩ để xác định một phương pháp phù hợp.
Thomas Speidel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.