Máy học thực tiễn tốt nhất cho bộ dữ liệu lớn


9

Tôi sắp tốt nghiệp Thạc sĩ và đã học về học máy cũng như thực hiện các dự án nghiên cứu với nó. Tôi tự hỏi về các thực tiễn tốt nhất trong ngành khi thực hiện các tác vụ học máy với Bộ dữ liệu lớn (như 100 GB hoặc TB). Đánh giá cao nếu các nhà khoa học dữ liệu đồng nghiệp có thể chia sẻ kinh nghiệm của họ. Đây là câu hỏi của tôi:

  1. Rõ ràng, các bộ dữ liệu rất lớn mất nhiều thời gian hơn để đào tạo (có thể là ngày hoặc tuần). Nhiều lần chúng ta cần đào tạo các mô hình khác nhau (SVM, Mạng thần kinh, v.v.) để so sánh và tìm ra mô hình hiệu suất tốt hơn. Tôi nghi ngờ, trong các dự án công nghiệp, chúng tôi muốn kết quả nhanh nhất có thể nhưng tạo ra hiệu suất tốt nhất. Có bất cứ lời khuyên để giảm thời gian đào tạo và kiểm tra? Nếu bạn khuyên bạn nên đặt lại tập dữ liệu, tôi sẽ quan tâm tìm hiểu cách tốt nhất để tập hợp dữ liệu để bao gồm tất cả hoặc phần lớn các kịch bản từ tập dữ liệu.
  2. Chúng tôi biết rằng thực hiện xác nhận chéo là tốt hơn vì nó có thể làm giảm sự phù hợp quá mức. Tuy nhiên, xác thực chéo cũng cần có thời gian để đào tạo và mô hình được đào tạo với xác thực chéo có thể không được triển khai thẳng (nói từ kinh nghiệm sklearn của python: Tôi cần phải đào tạo lại mô hình với dữ liệu sau khi kiểm tra xác thực chéo để thực hiện). Bạn có thường thực hiện xác nhận chéo trong các dự án dữ liệu lớn của mình hoặc nhận được bằng cách phân tách kiểm tra tàu không?

Đánh giá cao các thông tin phản hồi.

Câu trả lời:


8

Tôi sẽ liệt kê một số thực tiễn tôi thấy hữu ích, hy vọng điều này sẽ giúp:

  1. Bất kể dữ liệu có lớn hay không, xác thực chéo là điều bắt buộc khi xây dựng bất kỳ mô hình nào. Nếu việc này mất nhiều thời gian hơn người tiêu dùng cuối sẵn sàng chờ đợi, bạn có thể cần đặt lại kỳ vọng của họ hoặc nhận phần cứng / phần mềm nhanh hơn để xây dựng mô hình; nhưng đừng bỏ qua xác nhận chéo. Vẽ các đường cong học tập và xác nhận chéo là các bước hiệu quả để giúp hướng dẫn chúng tôi để chúng tôi nhận ra và sửa chữa các lỗi trước đó trong quy trình. Tôi đã gặp các trường hợp khi một bộ kiểm tra tàu đơn giản không tiết lộ bất kỳ vấn đề nào cho đến khi tôi chạy các xác nhận hợp lệ chéo và tìm thấy một sự khác biệt lớn trong hiệu suất của thuật toán trên các nếp gấp khác nhau.

  2. Trước khi định cỡ bộ dữ liệu, hãy loại bỏ các bản ghi với các giá trị bị thiếu của các biến chính và ngoại lệ, các cột của các biến có tương quan cao và các biến phương sai gần bằng không. Điều này sẽ cung cấp cho bạn một ước tính tốt hơn nhiều về bộ dữ liệu có thể sử dụng thực sự. Đôi khi bạn có thể kết thúc chỉ với một phần của bộ dữ liệu có sẵn thực sự có thể được sử dụng để xây dựng một mô hình.

  3. Khi định cỡ bộ dữ liệu để xây dựng mô hình, việc ước tính tài nguyên tính toán sẽ dễ dàng hơn nếu bạn liệt kê tập dữ liệu theo hàng và cột và kích thước bộ nhớ của ma trận số cuối cùng. Vì mọi thuật toán học máy cuối cùng sẽ chuyển đổi tập dữ liệu thành ma trận số, nên việc liệt kê kích thước tập dữ liệu theo GB / TB của dữ liệu đầu vào thô (có thể chủ yếu là chuỗi / biến danh nghĩa văn bản / v.v.) thường gây hiểu nhầm và bộ dữ liệu có thể gây khó khăn và khổng lồ hơn để làm việc với nó.

  4. Khi bạn biết (hoặc ước tính) kích thước có thể sử dụng cuối cùng của tập dữ liệu của mình, hãy kiểm tra xem bạn có máy phù hợp để có thể tải nó vào bộ nhớ và huấn luyện mô hình không. Nếu kích thước tập dữ liệu của bạn nhỏ hơn bộ nhớ có sẵn / có thể sử dụng được bởi phần mềm, thì bạn không cần phải lo lắng về kích thước nữa.

  5. Nếu kích thước tập dữ liệu lớn hơn bộ nhớ có sẵn để huấn luyện một mô hình, thì bạn có thể thử các cách tiếp cận này (bắt đầu từ những cách đơn giản nhất trước):

    • Sử dụng máy có nhiều bộ nhớ hơn: Nếu bạn đang sử dụng nhà cung cấp dịch vụ đám mây thì cách tiếp cận đơn giản nhất có thể chỉ là cung cấp thêm bộ nhớ và tiếp tục xây dựng mô hình như bình thường. Đối với các máy vật lý, hãy cố gắng mua thêm RAM, giá của nó tiếp tục giảm và nếu tập dữ liệu của bạn sẽ duy trì mức lớn này hoặc tăng lên theo thời gian, thì đó là một khoản đầu tư tốt.
    • Thêm các nút vào cụm: Đối với các triển khai điện toán cụm dựa trên Hadoop và Spark, việc đào tạo trên một tập dữ liệu lớn hơn cũng dễ như thêm nhiều máy vào cụm.
    • Các nhiệm vụ phân loại thường xuyên đòi hỏi phải đào tạo về dữ liệu với các lớp mất cân bằng cao, tỷ lệ giữa các lớp tích cực và tiêu cực đôi khi có thể lên tới 1: 1000 trở lên. Một phương pháp đơn giản để cải thiện độ chính xác trong những trường hợp này là hoặc lấy mẫu quá mức cho nhóm thiểu số hoặc lấy mẫu dưới lớp đa số hoặc làm cả hai cùng nhau. Nếu bạn có một tập dữ liệu lớn, việc lấy mẫu dưới lớp đa số là một lựa chọn rất tốt sẽ cải thiện độ chính xác của thuật toán của bạn cũng như giảm thời gian đào tạo.
    • Xây dựng một tập hợp: Chia ngẫu nhiên bộ dữ liệu và đào tạo một số người học cơ sở trên mỗi phần, sau đó kết hợp chúng để có được dự đoán cuối cùng. Điều này sẽ sử dụng hiệu quả nhất bộ dữ liệu lớn và tạo ra một mô hình chính xác hơn. Nhưng bạn cần dành nhiều thời gian hơn để cẩn thận xây dựng đoàn thể và tránh xa những cạm bẫy thông thường của việc xây dựng đoàn.
    • Nếu bạn đang sử dụng một bộ đồng phục, hãy đào tạo nhiều mô hình một luồng song song. Hầu như tất cả các phần mềm ML đều cung cấp các tính năng để đào tạo nhiều mô hình trên các lõi khác nhau hoặc các nút riêng biệt hoàn toàn.
    • Đánh giá nhiều thuật toán khác nhau về thời gian thực hiện để đào tạo chúng cho tập dữ liệu cụ thể của bạn so với độ chính xác của chúng. Mặc dù không có câu trả lời chung, nhưng tôi đã tìm thấy khi sử dụng dữ liệu ồn ào, các SVM mất nhiều thời gian hơn để đào tạo so với các mô hình hồi quy được xây dựng cẩn thận, nhưng có thể chỉ chính xác hơn một chút về hiệu suất; và một mạng lưới thần kinh được xây dựng tốt có thể mất nhiều thời gian để đào tạo so với cây GIỎI, nhưng thực hiện chính xác hơn cây đó.
    • Để giảm thời gian xây dựng mô hình, hãy cố gắng tự động hóa càng nhiều quá trình càng tốt. Một vài giờ dành cho việc tự động hóa một tác vụ thủ công dễ bị lỗi phức tạp có thể giúp nhóm của bạn tiết kiệm được một trăm giờ sau đó trong dự án.
    • Nếu có sẵn, hãy sử dụng các triển khai thuật toán sử dụng xử lý song song, ma trận thưa thớt và tính toán nhận biết bộ đệm, những điều này làm giảm đáng kể thời gian xử lý. Ví dụ: sử dụng xgboost thay vì triển khai GBM lõi đơn.
    • Nếu không có gì khác hoạt động, đào tạo mô hình trên một tập dữ liệu nhỏ hơn; như Emre đã đề xuất trong câu trả lời của mình, sử dụng các đường cong học tập để sửa kích thước mẫu nhỏ nhất cần thiết cho việc đào tạo mô hình, thêm nhiều hồ sơ đào tạo hơn kích thước này không cải thiện đáng kể độ chính xác của mô hình. Đây là một bài viết hay khám phá tình huống này - http://web.mit.edu/vondrick/largetrain.pdf .

Cảm ơn @Sandeep cho câu trả lời thấu đáo của bạn. Đối với dữ liệu liệt kê điểm số 3 trong các hàng và cột và kích thước bộ nhớ của ma trận số cuối cùng, bạn có thể giải thích rõ hơn không? Điều đó có nghĩa là tìm kích thước của tập dữ liệu sạch của bạn bằng các cú pháp, chẳng hạn như 'df.values.nbytes', 'df.shape' trong pandas dataframe? Cảm ơn.
iLoeng

Sử dụng: df.values.nbytes + df.index.nbytes + df.columns.nbytes
Sandeep S. Sandhu

4

Câu hỏi là, cần bao nhiêu dữ liệu để bão hòa mô hình của bạn? Để xác định điều này, bạn có thể vẽ các đường cong học tập với lượng dữ liệu khác nhau, có thể tăng kích thước lên / xuống theo một yếu tố không đổi. Nếu việc đào tạo trên tất cả các dữ liệu là không khả thi, lộ trình học tập có thể giúp bạn thực hiện một sự đánh đổi có hiểu biết.

Độ bão hòa mô hình cũng đi kèm với xác nhận chéo. Nếu bạn không ở gần mức bão hòa, sử dụng một số ít nếp gấp sẽ mang lại cho bạn những con số hiệu suất bi quan vì bạn sẽ đào tạo mô hình của mình trên ít dữ liệu hơn mức có thể sử dụng.

Cuối cùng và ngược lại, bạn có thể sử dụng một mô hình phức tạp hơn thay vì "thay đổi kích thước" dữ liệu cho phù hợp với mô hình.

Chào mừng bạn đến với DataScience.SE.

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.