2013-10-12 14 views
20

Có ai có thể giải thích cho tôi bằng những từ đơn giản thực sự sự khác nhau giữa xác thực chéo và tìm kiếm lưới là gì? Làm thế nào nó hoạt động và tôi nên làm trước một xác nhận chéo và sau đó tìm kiếm lưới?Xác nhận chéo và tìm kiếm lưới

Câu hỏi của tôi xuất phát từ việc đọc doc này: sklearn

Trả lời

56

Cross-validation là khi bạn dành một phần dữ liệu của bạn để sử dụng trong việc đánh giá mô hình của bạn. Có các phương thức xác thực chéo khác nhau. Khái niệm đơn giản nhất là chỉ cần lấy 70% (chỉ cần tạo một số ở đây, nó không phải là 70%) dữ liệu của bạn và sử dụng dữ liệu đó cho đào tạo, và sau đó sử dụng 30% còn lại của dữ liệu để đánh giá mô hình của hiệu suất. Lý do bạn cần dữ liệu khác nhau cho đào tạo và đánh giá mô hình là để bảo vệ chống lại overfitting. Có các kỹ thuật xác nhận chéo khác (có liên quan nhiều hơn một chút), tất nhiên, giống như xác thực chéo k-fold, thường được sử dụng trong thực tế.

Tìm kiếm lưới nghĩa là bạn có một tập hợp các mô hình (khác với các giá trị tham số của chúng, nằm trên lưới). Những gì bạn làm là sau đó bạn đào tạo từng mô hình và đánh giá nó bằng cách sử dụng xác thực chéo. Sau đó bạn chọn một trong đó thực hiện tốt nhất.

Ví dụ cụ thể, nếu bạn đang sử dụng máy vectơ hỗ trợ, bạn có thể sử dụng các giá trị khác nhau cho gammaC. Vì vậy, ví dụ: bạn có thể có lưới với các giá trị sau cho (gamma, C): (1, 1), (0.1, 1), (1, 10), (0.1, 10). Đó là lưới vì nó giống như một sản phẩm của [1, 0.1] cho gamma[1, 10] cho C. Grid-search về cơ bản sẽ đào tạo SVM cho mỗi cặp trong số bốn cặp giá trị (gamma, C) này, sau đó đánh giá nó bằng cách sử dụng xác thực chéo và chọn giá trị tốt nhất.

8

Xác thực chéo là một phương pháp để ước tính mạnh mẽ hiệu suất tập hợp thử nghiệm (tổng quát) của một mô hình. Lưới tìm kiếm là một cách để chọn tốt nhất của một họ mô hình, được tham số bởi một mạng lưới các thông số.

Ở đây theo "mô hình" Tôi không có nghĩa là một ví dụ được đào tạo, nhiều thuật toán hơn cùng với các tham số, chẳng hạn như SVC(C=1, kernel='poly').

(Tôi không chắc chắn nếu điều đó đủ điều kiện từ như đơn giản, tôi chỉ muốn đưa ra một đoạn ngắn, nét consise ngoài giải thích thoải mái Hoặc Neeman của)

+2

Tôi hiểu điều đó. Nhưng trong ví dụ về scikit-learn có lần đầu tiên một sự phân chia của data_set bằng cách thực hiện 'X_train, X_test, y_train, y_test = train_test_split ( X, y, test_size = 0.5, random_state = 0' và sau đó có trong tìm kiếm lưới 'clf = GridSearchCV (SVC (C = 1), tuned_parameters, cv = 5, score = score)' do đó, điều này có nghĩa là bước đầu tiên chia cho ví dụ 1000 đào tạo đặt thành 500 tàu và 500 đối tượng thử nghiệm và sau đó tìm kiếm lưới chia tách đào tạo 500 thành "cv = 5" xác nhận chéo 5 lần? Vì vậy, 500 đối tượng được chia thành 250 và 250 hoặc 400 và 100 và cứ tiếp tục ?! – Linda

+6

Vâng, đúng vậy. Một nửa dữ liệu được dành riêng để đánh giá ** sau ** lựa chọn mô hình tìm kiếm lưới (sử dụng xác thực chéo 5 lần). Lý do là họ không chỉ muốn chọn mô hình tốt nhất, mà còn có một ước tính tốt về mức độ tổng quát của nó (mức độ hoạt động tốt trên dữ liệu mới). Bạn không thể sử dụng điểm số từ việc xác thực chéo tìm kiếm lưới, vì bạn đã chọn mô hình có điểm cao nhất trên đó, vì vậy có thể có một số loại thiên vị lựa chọn được tích hợp vào điểm số của nó. Vì vậy, đó là lý do tại sao họ giữ một phần dữ liệu để kiểm tra sau khi tìm kiếm lưới kết thúc. –

5

Cross-validation, chỉ cần tách dữ liệu thử nghiệm và đào tạo và xác nhận kết quả đào tạo với dữ liệu kiểm tra. Có hai kỹ thuật xác thực chéo mà tôi biết.

Trước tiên, kiểm tra chéo xác thực/tàu. Tách dữ liệu như kiểm tra và đào tạo.

Thứ hai, xác thực chéo k chia tách dữ liệu của bạn thành k, sử dụng từng thùng làm dữ liệu thử nghiệm và sử dụng dữ liệu đào tạo còn lại và xác thực dữ liệu thử nghiệm. Lặp lại quá trình k lần. Và nhận được hiệu suất trung bình. xác thực chéo k-fold đặc biệt hữu ích cho tập dữ liệu nhỏ vì nó tối đa hóa cả dữ liệu thử nghiệm và đào tạo.

Tìm kiếm lưới; làm việc có hệ thống thông qua nhiều kết hợp các giai điệu tham số, xác nhận chéo xác thực từng giai điệu và xác định cái nào mang lại hiệu suất tốt nhất. Bạn có thể làm việc thông qua nhiều kết hợp chỉ thay đổi các tham số một chút.

Các vấn đề liên quan