Chúng ta có nên làm CV luôn không?


9

Câu hỏi của tôi: tôi có nên làm CV ngay cả đối với một tập dữ liệu tương đối lớn không?

Tôi có một tập dữ liệu tương đối lớn và tôi sẽ áp dụng thuật toán học máy cho tập dữ liệu.

Vì PC của tôi không nhanh, nên CV (và tìm kiếm lưới) đôi khi mất quá nhiều thời gian. Cụ thể, một SVM không bao giờ kết thúc vì có nhiều tham số điều chỉnh. Do đó, nếu tôi làm CV, thì tôi cần chọn một dữ liệu tương đối nhỏ.

Mặt khác, bộ xác nhận cũng phải lớn, vì vậy tôi nghĩ rằng nên sử dụng một bộ xác nhận có cùng kích thước (hoặc lớn hơn) với bộ đào tạo. (Cụ thể thay vì CV, tôi sử dụng một bộ xác thực lớn để điều chỉnh tham số.)

Vì vậy, bây giờ tôi có ít nhất hai lựa chọn.

  1. làm CV trên một tập dữ liệu nhỏ.
  2. sử dụng tập huấn luyện tương đối lớn và tập xác nhận không có CV.
  3. ý tưởng khác.

Ý tưởng tốt nhất là gì? Các ý kiến ​​lý thuyết hoặc thực tế đều được chào đón.


1
Câu hỏi này rõ ràng nên là một CW.
H. Shindoh

1
Cái gì lớn? Có bao nhiêu quan sát? Có bao nhiêu tính năng / biến / hồi quy?
Jim

1
Nó phụ thuộc vào PC. Cụ thể tôi không nghĩ về "dữ liệu lớn", đòi hỏi nhiều máy tính.
H. Shindoh

Câu trả lời:


3

Nói chung, bạn không phải sử dụng xác nhận chéo mọi lúc. Điểm của CV là để có được ước tính ổn định hơn về tính tổng quát của trình phân loại mà bạn sẽ chỉ sử dụng một bộ kiểm tra. Bạn không phải sử dụng CV nếu tập dữ liệu của bạn rất lớn, vì vậy, việc thêm dữ liệu vào tập huấn luyện của bạn sẽ không cải thiện mô hình của bạn nhiều, và một vài lỗi phân loại trong bài kiểm tra của bạn chỉ là ngẫu nhiên, sẽ không thực sự thay đổi chỉ số hiệu suất của bạn .

Bằng cách có một tập huấn luyện nhỏ và một bộ kiểm tra lớn, ước tính của bạn sẽ bị sai lệch. Vì vậy, nó có thể sẽ tồi tệ hơn những gì bạn sẽ nhận được bằng cách sử dụng nhiều dữ liệu đào tạo và siêu âm tối ưu mà bạn tìm thấy có thể khác nhau đối với tập dữ liệu lớn hơn, đơn giản vì nhiều dữ liệu sẽ yêu cầu ít chính quy hơn.

Tuy nhiên, dù sao đi nữa, việc tăng tốc độ tối ưu không phải là phần quan trọng và nó sẽ không cải thiện hiệu suất đáng kể. Bạn nên tập trung năng lượng của mình để hiểu vấn đề, tạo ra các tính năng tốt và đưa dữ liệu về trạng thái tốt.

Dưới đây là một vài điều bạn có thể xem xét để tăng tốc mọi thứ:

  1. Đào tạo nó với ít tính năng hơn. Sử dụng lựa chọn tính năng và / hoặc giảm kích thước để giảm kích thước của vấn đề của bạn
  2. Sử dụng kernel đã xử lý trước cho SVM
  3. Sử dụng các thuật toán không cần chọn siêu tham số trong lưới. Đặc biệt là những tuyến tính như hồi quy logistic với hình phạt lưới ron / lasso / đàn hồi hoặc thậm chí SVM tuyến tính. Tùy thuộc vào việc triển khai, các phân loại đó có thể phù hợp với các mô hình cho tất cả các siêu đường kính trong đường dẫn đã chọn với chi phí chỉ phù hợp với một
  4. sử dụng triển khai nhanh hơn cho loại vấn đề của bạn (bạn sẽ phải google nó)

và thậm chí với máy tính chậm hơn, bạn có thể:

  1. Sử dụng nhiều lõi hơn
  2. Sử dụng GPU

2

Xác thực chéo là một công cụ để ước tính phương sai của chỉ số hiệu suất của bạn do tính ngẫu nhiên trong dữ liệu (và có thể trong thuật toán học nếu nó không mang tính quyết định).

Vì vậy, nếu bạn chỉ sử dụng một lần phân tách, ví dụ 80% đào tạo + 20% kiểm tra và báo cáo số liệu hiệu suất của bạn từ thử nghiệm duy nhất này, có nhiều khả năng bất cứ ai cố gắng tái tạo thử nghiệm của bạn bằng các tham số chính xác sẽ tìm thấy một con số hiệu suất khác nhau (đôi khi rất khác nhau). Tất nhiên trừ khi bạn cung cấp sự phân chia chính xác như vậy là vô nghĩa.

Để trở lại câu hỏi của bạn, tôi nghĩ bạn chắc chắn nên sử dụng CV để báo cáo hiệu suất của mình (ví dụ: thực hiện CV gấp 10 lần và báo cáo độ lệch trung bình và độ lệch chuẩn của chỉ số hiệu suất). Bây giờ để điều chỉnh thuật toán của bạn, bạn có thể sử dụng một bộ xác nhận nhỏ hơn nhiều được lấy mẫu từ tập huấn luyện (đảm bảo rằng nó không được bao gồm trong tập kiểm tra).

Nếu bạn sợ rằng bạn sẽ không tìm thấy các siêu đường kính tốt nhất bằng cách sử dụng một bộ nhỏ thì có lẽ bạn đã quá mức thuật toán của bạn với các chi tiết cụ thể của bộ dữ liệu. Nếu bạn không thể tìm thấy một cấu hình bằng cách sử dụng một mẫu nhỏ mang lại hiệu năng hợp lý trong tất cả các nếp gấp thì thuật toán có thể không hữu ích trong thực tế.

Ngoài ra, hãy nhớ rằng một số thuật toán đơn giản là quá chậm / không mở rộng tốt trong một số cấu hình. Đây cũng là một phần của lựa chọn mô hình thực tế.

Vì bạn đề cập đến các SVM, tất nhiên hầu hết các triển khai sẽ chậm khi cố gắng tìm các tham số cho các hạt nhân phi tuyến tính bằng cách tìm kiếm lưới. Tìm kiếm lưới có độ phức tạp theo cấp số nhân, vì vậy hãy sử dụng nó với rất ít tham số. Ngoài ra, hãy nhớ rằng hầu hết các thư viện cung cấp các tham số mặc định hợp lý (hoặc ít nhất là bạn đặt một tham số và có các heuristic để đặt các tham số khác).

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.