Cross-validation parameters


#1

Mình có 1 băn khoăn về params trong sử dụng CV.

Trong các tài liệu hầu như nói đến việc sử dụng CV rồi average MSE or acc … nhưng lại k nói về việc sẽ dùng bộ params nào để đưa vào production?

Mình nghĩ rằng sẽ sử dụng bộ params có MSE or acc cao nhất. Nhưng chẳng phải như vậy là bias ( so với các cách chia fold khác ) sao khi chúng ta đang chọn best params cho cách chia fold đó?


#2

Chào bạn, theo mình hiểu thì ta sẽ không chọn bất kỳ best params nào lúc bạn sử dụng CV. Bạn thực hiện CV chỉ để kiểm tra performance của model của bạn. Model mà bạn dùng cho production là cái mà bạn train với toàn bộ dataset bạn có


#3

Mình sử dụng cross validatiate như sau, và theo mình đây là cách dùng đúng:

  • list ra 1 tập hợp các tham số (good params - set)

  • với từng bộ tham số chạy cross validate (cv) và tính 1 giá trị score = trung bình cộng -> làm giá trị đại diện.

  • so sánh từng giá trị đại diện với nhau của từng bộ tham số để lấy được bộ tham số tốt nhất.


#4

Mình sử dụng param của cross validation dựa vào số feature of independent variables có trong tập dữ liệu. mình nghĩ chỉ có cách thử và tìm ra bộ tham số nào tốt nhất thôi chứ không có một cái quy định nào nhất định phải dùng số này hay số kia.


[09/21/2018 11:54] Mình có 1 câu hỏi về cross-validation Mọi người giúp mình . . .
#5

Mình sẽ tổng hợp các câu trả lời và những gì mình tìm hiểu được ở đây.

Mục đích của việc sử dụng cross-validation là để kiểm tra performance của model chứ không dùng để kiểm chọn param.

Để tìm và chọn param cho model chúng ta sẽ sử dụng song song CV + Grid search( hoặc 1 method nào đó tương tự ) để tìm ra bộ param với performance tốt nhất.

Trong sklearn khi sử dụng gridsearch , chúng ta có thể chọn sử dụng k-fold

Đây là sample code

#                                                    use 5 folds
tune_model = sklearn.model_selection.GridSearchCV(algorithm, cv = 5 , param_grid=param_grid, )

#6

Mình nghĩ là nên dùng grid search trước, để tìm ra best params cho 1 cái tiêu chí (metrics) nào đó.

Sau đó bạn dùng cross-validate thôi để kiểm tra, chủ yếu là kiểm tra xem có overfit không.

Thực ra trong grid search mình nghĩ ko cần dùng folds đâu, tại grid search chạy khá là lâu, đặc biệt bạn muốn test số tổ hợp params lớn mà dữ liệu cũng lớn. Sau khi có bộ best params rồi thì chạy lại = CV với nhiều fold là đc.