Sự khác nhau giữa xác thực chéo và bootstrapping để ước tính lỗi dự đoán


102

Tôi muốn suy nghĩ của bạn về sự khác biệt giữa xác nhận chéo và bootstrapping để ước tính lỗi dự đoán.

Có ai làm việc tốt hơn cho kích thước tập dữ liệu nhỏ hoặc bộ dữ liệu lớn?

Câu trả lời:


88

Nó đi xuống phương sai và thiên vị (như thường lệ). CV có xu hướng ít sai lệch nhưng CV gấp K có phương sai khá lớn. Mặt khác, bootstrapping có xu hướng làm giảm mạnh phương sai nhưng cho kết quả sai lệch hơn (chúng có xu hướng bi quan). Các phương thức bootstrapping khác đã được điều chỉnh để đối phó với xu hướng bootstrap (chẳng hạn như quy tắc 632 và 632+).

Hai cách tiếp cận khác sẽ là "Monte Carlo CV" hay còn gọi là "CV rời nhóm", thực hiện nhiều phân tách ngẫu nhiên của dữ liệu (giống như chia nhỏ kiểm tra và chia nhỏ kiểm tra). Phương sai rất thấp đối với phương pháp này và độ lệch không quá tệ nếu tỷ lệ phần trăm của dữ liệu bị giữ thấp. Ngoài ra, CV lặp đi lặp lại K-Fold nhiều lần và tính trung bình các kết quả tương tự như K-Fold thông thường. Tôi là một phần của điều này vì nó giữ độ lệch thấp và giảm phương sai.

Biên tập

Đối với kích thước mẫu lớn, các vấn đề về phương sai trở nên ít quan trọng hơn và phần tính toán là vấn đề nhiều hơn. Tôi vẫn sẽ gắn bó với CV lặp đi lặp lại cho kích thước mẫu nhỏ và lớn.

Một số nghiên cứu có liên quan dưới đây (đặc biệt là Kim và Molinaro).

Người giới thiệu

Bengio, Y., & Grandvalet, Y. (2005). Xu hướng trong việc ước tính phương sai của xác thực chéo k-Fold. Mô hình hóa và phân tích thống kê cho các vấn đề dữ liệu phức tạp, 75 chàng95.

Braga-Neto, UM (2004). Xác thực chéo có giá trị đối với phân loại microarray mẫu nhỏ Tin sinh học, 20 (3), 374 Máy 380. doi: 10.1093 / tin sinh học / btg419

Efron, B. (1983). Ước tính tỷ lệ lỗi của quy tắc dự đoán: cải thiện xác thực chéo. Tạp chí của Hiệp hội Thống kê Hoa Kỳ, số 316.

Efron, B., & Tibshirani, R. (1997). Những cải tiến về xác nhận chéo: 632+ phương thức bootstrap. Tạp chí của Hiệp hội Thống kê Hoa Kỳ, 548 Từ560.

Furlanello, C., Merler, S., Chemini, C., & Rizzoli, A. (1997). Một ứng dụng của quy tắc bootstrap 632+ cho dữ liệu sinh thái. DÂY 97.

Giang, W., & Simon, R. (2007). So sánh các phương thức bootstrap và cách tiếp cận bootstrap được điều chỉnh để ước tính lỗi dự đoán trong phân loại microarray. Thống kê trong Y học, 26 (29), 5320 Bóng5334.

Jonathan, P., Krzanowski, W., & McCarthy, W. (2000). Về việc sử dụng xác nhận chéo để đánh giá hiệu suất trong dự đoán đa biến. Thống kê và tính toán, 10 (3), 209 Từ229.

Kim, J.-H. (2009). Ước tính tỷ lệ lỗi phân loại: Xác thực chéo nhiều lần, lặp lại giữ và bootstrap. Thống kê tính toán và phân tích dữ liệu, 53 (11), 3735 Từ3745. doi: 10.1016 / j.csda.2009.04.009

Kohavi, R. (1995). Một nghiên cứu về xác nhận chéo và bootstrap để ước tính độ chính xác và lựa chọn mô hình. Hội nghị hợp tác quốc tế về trí tuệ nhân tạo, 14, 1137 trận1145.

Martin, J., & Hirschberg, D. (1996). Thống kê mẫu nhỏ cho tỷ lệ lỗi phân loại I: Đo tỷ lệ lỗi.

Molinaro, AM (2005). Dự đoán lỗi dự đoán: so sánh các phương pháp lấy mẫu lại. Tin sinh học, 21 (15), 3301 Từ3307. doi: 10.1093 / tin sinh học / bti499

Sauerbrei, W., & Schumacher1, M. (2000). Bootstrap và Xác thực chéo để đánh giá độ phức tạp của các mô hình hồi quy dựa trên dữ liệu. Phân tích dữ liệu y tế, 26 mộc28.

Tibshirani, RJ, & Tibshirani, R. (2009). Một hiệu chỉnh sai lệch cho tỷ lệ lỗi tối thiểu trong xác nhận chéo. Bản in sẵn Arxiv arXiv: 0908.2904.


2
Xu hướng Bootstrap không mang tính pesimistic, nó rất lạc quan (Simple Bootstrap không .0632). Điều này là do Bootstrap sử dụng rất nhiều yếu tố đào tạo để kiểm tra mô hình dẫn đến rất nhiều trọng lượng cho lỗi mẫu.
D1X

33

@Frank Harrell đã thực hiện rất nhiều công việc cho câu hỏi này. Tôi không biết các tài liệu tham khảo cụ thể.

Nhưng tôi thích xem hai kỹ thuật này là dành cho các mục đích khác nhau. Xác nhận chéo là một công cụ tốt khi quyết định mô hình - nó giúp bạn tránh tự lừa mình rằng bạn có một mô hình tốt khi thực tế bạn đang thừa.

Khi mô hình của bạn được sửa chữa, sau đó sử dụng bootstrap có ý nghĩa hơn (ít nhất là với tôi).

Có phần giới thiệu về các khái niệm này (cộng với các bài kiểm tra hoán vị) bằng R tại http://www.burns-stat.com/pages/Tutor/bootstrap_resampling.html


2
Liệu có ý nghĩa khi sử dụng CV trước để chọn một mô hình và sau đó sử dụng bootstrapping trên cùng một dữ liệu để khẳng định các lỗi trong ước tính của bạn? Cụ thể tôi muốn thực hiện hồi quy tuyến tính bằng cách sử dụng ML trên dữ liệu với nhiễu không phải là Gaussian.
sebhofer

9

Tôi hiểu rằng bootstrapping là một cách để định lượng độ không đảm bảo trong mô hình của bạn trong khi xác thực chéo được sử dụng để lựa chọn mô hình và đo lường độ chính xác dự đoán.


cảm ơn rất nhiều vì câu trả lời Tôi nghĩ bootstrapping tốt hơn khi bạn có tập dữ liệu nhỏ (<30 obs). Không?
cấp

Tôi sẽ nghĩ như vậy. Xác nhận chéo có thể không hợp lý khi bạn có cỡ mẫu nhỏ. Bạn có thể bỏ qua một xác nhận chéo nhưng điều đó có xu hướng quá mức.
Glen

Cũng lưu ý rằng việc thực hiện bootstrapping với một mẫu nhỏ sẽ dẫn đến một số ước tính sai lệch, như đã lưu ý trong bài báo gốc của Efron.
Glen

Không đo lường độ chính xác dự đoán là một cách để định lượng độ không chắc chắn? Tôi hiểu CV là phổ biến hơn cho lựa chọn mô hình, nhưng giả sử tôi muốn ước tính AUC cho LASSO, CV hoặc bootstrapping tốt hơn?
Max Ghenis

9

Một điểm khác biệt là xác thực chéo, như jackknife, sử dụng tất cả các điểm dữ liệu của bạn, trong khi bootstrapping, giúp lấy lại dữ liệu của bạn một cách ngẫu nhiên, có thể không đạt được tất cả các điểm.

Bạn có thể bootstrap miễn là bạn muốn, có nghĩa là một mẫu lớn hơn, sẽ giúp với các mẫu nhỏ hơn.

Giá trị trung bình của xác thực chéo hoặc jackknife sẽ giống với giá trị trung bình của mẫu, trong khi đó, giá trị trung bình của bootstrap rất khó có thể giống với giá trị trung bình của mẫu.

Khi xác thực chéo và trọng lượng jackknife, tất cả các điểm mẫu đều giống nhau, chúng phải có khoảng tin cậy nhỏ hơn (mặc dù có thể không chính xác) so với bootstrap.


2
Neil, có vẻ như ít nhất 2 trong số 4 phát biểu của bạn là sai. 1. Mặc dù mỗi mẫu boostrap cụ thể bao gồm ~ 63% số điểm dữ liệu gốc, nếu chúng ta lấy mẫu nhiều mẫu (ví dụ 10k) như chúng ta thường làm, khả năng mỗi điểm sẽ được bao phủ trong ít nhất một trong số chúng về cơ bản là 100%. 2. Tôi vừa thực hiện một kiểm tra số nhanh chóng - trung bình của các mẫu bootstrap và out-of-bootstrap rất gần với toàn bộ dữ liệu trung bình. Bạn có thể tự kiểm tra
Kochede

Đây là một mã (nhấp vào "Chỉnh sửa" để xem nó được định dạng): nhập numpy dưới dạng np, gấu trúc là pd n = 1000 B = 1000 y = np.random.randn (n) có nghĩa là b, có nghĩa làoob = [], [] cho b trong phạm vi (B): ib = np.random.choice (n, n, thay thế = True) meanb = y [ib] .mean () có nghĩa làb.append (meanb) indoob = np.ones (n, dtype = bool) indoob [ib] = false meanoob = y [indoob] .mean () meanoob.append (meanoob) pd.Series (meanb) .hist (histtype = 'step') pd.Series (meanoob) .hist (histtype = 'step' ) in np.mean (meanb), np.mean (meanoob), pd.Series (y) .mean ()
Kochede

@Kochede "về cơ bản 100%" không phải là 100%. "Rất gần với mức trung bình" không giống với mức trung bình. Bạn đang sử dụng từ chồn. Tôi không sai
Neil McGuigan

Vì vậy, bạn không chỉ đưa ra câu trả lời sai, mà bạn còn nhấn mạnh vào chúng với mị dân, ok. Độ bao phủ dữ liệu dự kiến ​​của các mẫu bootstrap nhanh chóng hội tụ đến 100% với số lượng mẫu tăng lên. Trong thử nghiệm trên sau ít hơn 10 mẫu bootstrap, tất cả các datapoint đều bị bootstrap tấn công. Tương tự, kỳ vọng trung bình của các mẫu bootstrap bằng với giá trị trung bình của mẫu. Và trong thí nghiệm trên sau 1000 mẫu bootstrap chênh lệch ít hơn 0,1% (sử dụng np.random.rand thay vì randn, vì đối với randn có nghĩa là 0)
Kochede

Đây là mã được cập nhật để bạn tham khảo: nhập numpy như np, pandas là pd; n = 1000; B = 1000; y = np.random.rand (n); có nghĩa là = =]; bao phủ = np.zeros (n, dtype = bool); bảo hiểm = []; Vòng lặp #begin cho b trong phạm vi (B): ib = np.random.choice (n, n, thay = True); được bảo hiểm [ib] = Đúng; bảo hiểm.append (cover.sum () * 1.0 / n); meanb = y [ib] .mean (); meanb.append (meanb); #end phạm vi in ​​vòng lặp [: 10]; in np.mean (nghĩa là), pd.Series (y) .mean (); in (np.mean (meanb) - pd.Series (y) .mean ()) / pd.Series (y) .mean ();
Kochede

2

Đây là hai kỹ thuật lấy mẫu lại:

Để xác thực chéo, chúng tôi chia dữ liệu ngẫu nhiên thành nhiều lần và nó giúp ích quá mức, nhưng cách tiếp cận này có nhược điểm. Vì nó sử dụng các mẫu ngẫu nhiên nên một số mẫu tạo ra lỗi lớn. Để giảm thiểu CV có các kỹ thuật nhưng nó không quá mạnh với các vấn đề phân loại. Bootstrap giúp trong việc này, nó cải thiện lỗi từ kiểm tra mẫu của chính nó .. để biết chi tiết xin vui lòng tham khảo ..

https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/cv_boot.pdf

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.