Xác nhận so với kiểm tra so với độ chính xác đào tạo. Cái nào tôi nên so sánh để yêu cầu overfit?


7

Tôi đã đọc trên một số câu trả lời ở đây và trên Internet rằng xác nhận chéo giúp chỉ ra rằng liệu mô hình sẽ khái quát tốt hay không và về việc quá mức.

Nhưng tôi bối rối rằng tôi nên so sánh hai độ chính xác / lỗi trong kiểm tra / đào tạo / xác nhận để có thể xem liệu mô hình có quá mức hay không?

Ví dụ:

Tôi chia dữ liệu của mình để đào tạo 70% và kiểm tra 30%.

Khi tôi chạy xác thực chéo 10 lần, tôi nhận được 10 độ chính xác mà tôi có thể lấy trung bình / trung bình. tôi nên gọi nó có nghĩa là validation accuracygì?

Sau đó, tôi kiểm tra mô hình trên 30% dữ liệu thử nghiệm và nhận được Test Accuracy.

Trong trường hợp này, sẽ là training accuracygì? Và tôi nên so sánh hai độ chính xác nào để xem liệu mô hình có quá mức hay không?

Câu trả lời:


8

Hai độ chính xác mà tôi so sánh để xem liệu mô hình có quá mức hay không?

Bạn nên so sánh độ chính xác của đào tạo và kiểm tra để xác định sự phù hợp quá mức. Độ chính xác đào tạo cao hơn nhiều so với độ chính xác kiểm tra cho thấy sự phù hợp quá mức.

Ở đây, "độ chính xác" được sử dụng theo nghĩa rộng, nó có thể được thay thế bằng F1, AUC, lỗi (tăng trở nên giảm, cao hơn trở nên thấp hơn), v.v.

Tôi đề xuất các phần "Xu hướng và phương sai" và "Đường cong học tập" của " Học máy học tập - Andrew Ng ". Nó trình bày các âm mưu và diễn giải cho tất cả các trường hợp với một bài tường thuật rõ ràng.

Khi tôi chạy xác thực chéo 10 lần, tôi nhận được 10 độ chính xác mà tôi có thể lấy trung bình / trung bình. Tôi nên gọi điều này có nghĩa là độ chính xác xác nhận?

Không. Đó là [ước tính] độ chính xác kiểm tra.
Sự khác biệt giữa bộ xác thực và bộ kiểm tra (và độ chính xác tương ứng của chúng) là bộ xác thực được sử dụng để xây dựng / chọn một mô hình tốt hơn, nghĩa là nó ảnh hưởng đến mô hình cuối cùng. Tuy nhiên, vì CV 10 lần luôn kiểm tra một mô hình đã được xây dựng trên mức giữ 10% của nó và nó không được sử dụng ở đây để chọn giữa các mô hình, nên giữ 10% là một bộ kiểm tra không phải là bộ xác thực.

Sau đó, tôi kiểm tra mô hình trên 30% dữ liệu thử nghiệm và nhận Độ chính xác kiểm tra.

Nếu bạn không sử dụng K-Fold để chọn giữa nhiều kiểu máy, phần này không cần thiết, hãy chạy K-Fold trên 100% dữ liệu để có được độ chính xác kiểm tra. Mặt khác, bạn nên giữ bộ kiểm tra này, vì kết quả của K-Fold sẽ là độ chính xác xác nhận.

Trong trường hợp này, điều gì sẽ được đào tạo chính xác?

Từ mỗi 10 lần, bạn có thể nhận được độ chính xác kiểm tra trên 10% dữ liệu và độ chính xác đào tạo trên 90% dữ liệu. Trong python, phương pháp cross_val_scorechỉ tính toán độ chính xác kiểm tra. Đây là cách tính cả hai:

from  sklearn import model_selection
from sklearn import datasets
from sklearn import svm

iris = datasets.load_iris()
clf = svm.SVC(kernel='linear', C=1)
scores = model_selection.cross_validate(clf, iris.data, iris.target, cv=5, return_train_score=True)
print('Train scores:')
print(scores['train_score'])
print('Test scores:')
print(scores['test_score'])

Đặt return_estimator = Trueđể có được các mô hình được đào tạo quá.

Thêm về bộ xác nhận

Bộ xác thực hiển thị trong hai trường hợp chung: (1) xây dựng mô hình và (2) chọn giữa nhiều mô hình,

  1. Hai ví dụ để xây dựng mô hình: chúng tôi (a) dừng đào tạo mạng thần kinh hoặc (b) dừng cắt tỉa cây quyết định khi độ chính xác của mô hình trên bộ xác thực bắt đầu giảm. Sau đó, chúng tôi kiểm tra mô hình cuối cùng trên một bộ tổ chức, để có được độ chính xác kiểm tra.

  2. Hai ví dụ để chọn giữa nhiều mô hình:

    a. Chúng tôi thực hiện CV gấp K trên một mạng thần kinh có 3 lớp và một lớp có 5 lớp (để lấy các mô hình K cho mỗi mạng), sau đó chúng tôi chọn NN có độ chính xác cao nhất trung bình trên các mô hình K; giả sử NN 5 lớp. Cuối cùng, chúng tôi huấn luyện NN 5 lớp trên một chuyến tàu 80%, phân chia xác thực 20% cho các nếp gấp K kết hợp, và sau đó kiểm tra nó trên một bộ được tổ chức để có được độ chính xác kiểm tra.

    b. Chúng tôi áp dụng hai mô hình cây quyết định và SVM đã được xây dựng trên một bộ xác thực, sau đó chúng tôi chọn mô hình có độ chính xác cao nhất. Cuối cùng, chúng tôi kiểm tra mô hình đã chọn trên một bộ tổ chức để có được độ chính xác kiểm tra.


2
Tôi nghĩ rằng tôi không đồng ý với "không cần kiểm tra 30%." Nếu bạn đang sử dụng CV để chọn một mô hình tốt hơn, thì bạn đang phơi bày các nếp gấp thử nghiệm (mà tôi sẽ gọi là bộ xác thực trong trường hợp này) và có nguy cơ vượt quá mức đó. Bộ thử nghiệm cuối cùng sẽ không bị ảnh hưởng (bởi cả bạn và thuật toán của bạn) cho đến khi kết thúc, để ước tính hiệu suất mô hình cuối cùng (nếu đó là thứ bạn cần). Nhưng có, trong khi xây dựng mô hình, điểm gấp đào tạo (trung bình) so với điểm gấp xác thực (trung bình) là những gì bạn đang tìm kiếm cho dấu hiệu thừa.
Ben Reiniger

@BenReiniger Bạn nói đúng Tôi nên xóa trường hợp này.
Esmailian

@Esmailian train_score cũng chỉ đạt trung bình 10 điểm? Ngoài ra, để thực hiện một loại điều tương tự với GridSearchCV (trong trường hợp điều chỉnh siêu tham số và xác thực chéo được yêu cầu trong một bước), chúng ta có thể sử dụng return_train_score = true không? có giống nhau không
AB

@AB Đó là một mảng, cần phải tính trung bình. return_train_score = true hoặc = false chỉ thay đổi báo cáo được trả về, kết quả cơ bản là như nhau.
Esmailian

1
Được rồi, cảm ơn, tôi chấp nhận câu trả lời là "độ chính xác nào sẽ được sử dụng" có ý nghĩa. Nhưng bạn có thể giải thích chi tiết hơn về "bộ xác thực được sử dụng để xây dựng / chọn một mô hình tốt hơn (ví dụ: tránh lắp quá mức) so với trường hợp của bạn, CV gấp 10 lần kiểm tra một mô hình đã được xây dựng" cho tôi và các độc giả tương lai ?
AB

4

Xác thực chéo chia dữ liệu của bạn thành K lần. Mỗi nếp gấp chứa một tập hợp dữ liệu huấn luyện và dữ liệu kiểm tra. Bạn đúng rằng bạn nhận được K tỷ lệ lỗi khác nhau mà sau đó bạn có nghĩa là. Các tỷ lệ lỗi này đến từ tập kiểm tra của mỗi lần gấp K của bạn. Nếu bạn muốn có được tỷ lệ lỗi đào tạo, bạn sẽ tính tỷ lệ lỗi trên phần đào tạo của mỗi nếp gấp K này và sau đó lấy mức trung bình.

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.