AUC-ROC có thể nằm trong khoảng 0-0,5 không?


16

Giá trị AUC-ROC có thể nằm trong khoảng 0-0,5 không? Mô hình có bao giờ xuất giá trị từ 0 đến 0,5 không?

Câu trả lời:


19

Một công cụ dự đoán hoàn hảo cho điểm AUC-ROC là 1, một công cụ dự đoán làm cho các dự đoán ngẫu nhiên có điểm AUC-ROC là 0,5.

Nếu bạn nhận được điểm 0 có nghĩa là bộ phân loại hoàn toàn không chính xác, thì đó là dự đoán lựa chọn không chính xác 100%. Nếu bạn chỉ thay đổi dự đoán của trình phân loại này sang lựa chọn ngược lại thì nó có thể dự đoán hoàn hảo và có điểm AUC-ROC là 1.

Vì vậy, trong thực tế nếu bạn đạt điểm AUC-ROC trong khoảng từ 0 đến 0,5, bạn có thể có lỗi trong cách bạn gắn nhãn mục tiêu phân loại của mình hoặc bạn có thể có thuật toán đào tạo kém. Nếu bạn đạt được số điểm 0,2 thì điều này cho thấy dữ liệu chứa đủ thông tin để đạt điểm 0,8 nhưng đã xảy ra sự cố.


Tôi nghĩ rằng câu trả lời này bỏ qua khả năng mô hình có quá phù hợp, ví dụ như đạt được AUC là 0,8 trên dữ liệu đào tạo nhưng AUC là 0,35 trên dữ liệu tạm giữ.
Sycorax nói Phục hồi lại

1
@Sycorax: Hmm, tôi có thể thấy việc cung cấp quá mức rõ ràng có thể đưa AUC đến nơi có mức cơ hội (nếu bạn ở xa mô hình thực sự mà dự đoán của bạn chỉ là rác), nhưng nó sẽ diễn ra như thế nào (đáng kể) ?
Ruben van Bergen

1
Bạn sẽ có AUC dưới 0,5 bất cứ khi nào thứ hạng trên một số bộ gần với lùi hơn là chính xác. Nó không khác gì quá nhiều trong bất kỳ bối cảnh nào khác.
Sycorax nói Phục hồi lại

14

Họ có thể, nếu hệ thống bạn đang phân tích thực hiện dưới mức cơ hội. Một cách tầm thường, bạn có thể dễ dàng xây dựng một bộ phân loại với 0 AUC bằng cách nó luôn trả lời ngược lại với sự thật.

Trong thực tế, bạn huấn luyện bộ phân loại của mình trên một số dữ liệu để các giá trị nhỏ hơn 0,5 thường biểu thị một lỗi trong thuật toán, nhãn dữ liệu hoặc lựa chọn dữ liệu kiểm tra / thử nghiệm. Ví dụ: nếu bạn chuyển nhầm nhãn lớp trong dữ liệu xe lửa, AUC dự kiến ​​của bạn sẽ là 1 trừ đi AUC "thật" (được cung cấp đúng nhãn). AUC cũng có thể <0,5 nếu bạn chia dữ liệu của mình thành các phân vùng đào tạo & kiểm tra theo cách các mẫu được phân loại khác nhau một cách có hệ thống. Điều này có thể xảy ra (ví dụ) nếu một lớp phổ biến hơn trong xe lửa so với tập kiểm tra hoặc nếu các mẫu trong mỗi bộ có các cách chặn khác nhau một cách có hệ thống mà bạn không sửa.

Cuối cùng, điều đó cũng có thể xảy ra ngẫu nhiên vì trình phân loại của bạn ở mức cơ hội trong thời gian dài nhưng tình cờ gặp "không may mắn" trong mẫu thử nghiệm của bạn (nghĩa là nhận được một vài lỗi nhiều hơn thành công). Nhưng trong trường hợp đó, các giá trị vẫn phải tương đối gần 0,5 (mức độ phụ thuộc vào số lượng điểm dữ liệu).


0

Tôi xin lỗi, nhưng những câu trả lời này là sai lầm nguy hiểm. Không, bạn không thể lật AUC sau khi bạn thấy dữ liệu. Hãy tưởng tượng bạn đang mua cổ phiếu, và bạn luôn mua nhầm, nhưng bạn tự nhủ, vậy thì tốt thôi, bởi vì nếu bạn mua ngược lại với những gì mô hình của bạn dự đoán, thì bạn sẽ kiếm được tiền.

Vấn đề là có nhiều lý do, thường không rõ ràng làm thế nào bạn có thể thiên vị kết quả của mình và có được hiệu suất dưới mức trung bình nhất quán. Nếu bây giờ bạn lật AUC, bạn có thể nghĩ rằng mình là người lập mô hình tốt nhất trên thế giới, mặc dù không có bất kỳ tín hiệu nào trong dữ liệu.

Dưới đây là một ví dụ mô phỏng. Lưu ý rằng bộ dự đoán chỉ là một biến ngẫu nhiên không có mối quan hệ với mục tiêu. Ngoài ra, lưu ý rằng AUC trung bình là khoảng 0,3.

library(MLmetrics)
aucs <- list()
for (sim in seq_len(100)){
  n <- 100
  df <- data.frame(x=rnorm(n),
               y=c(rep(0, n/2), rep(1, n/2)))

  predictions <- list()
  for(i in seq_len(n)){
    train <- df[-i,]
    test <- df[i,]

    glm_fit <- glm(y ~ x, family = 'binomial', data = train)
    predictions[[i]] <- predict(glm_fit, newdata = test, type = 'response')
  }
  predictions <- unlist(predictions)
  aucs[[sim]] <- MLmetrics::AUC(predictions, df$y)
}
aucs <- unlist(aucs)
plot(aucs); abline(h=mean(aucs), col='red')

Các kết quả

nhập mô tả hình ảnh ở đây

Tất nhiên, không có cách nào một bộ phân loại có thể học bất cứ điều gì từ dữ liệu vì dữ liệu là ngẫu nhiên. Cơ hội dưới đây AUC là có vì LOOCV tạo ra một tập huấn thiên vị, không cân bằng. Tuy nhiên, điều đó không có nghĩa là nếu bạn không sử dụng LOOCV, bạn sẽ an toàn. Điểm chính của câu chuyện này là có nhiều cách, nhiều cách để kết quả có thể có hiệu suất trung bình dưới mức ngay cả khi không có gì trong dữ liệu, và do đó bạn không nên lật dự đoán trừ khi bạn biết bạn đang làm gì. Và vì bạn đã có hiệu suất trung bình dưới đây, bạn không thấy những gì bạn đang làm :)

Đây là một vài bài báo đã chạm vào vấn đề này, nhưng tôi chắc chắn những người khác cũng đã làm như vậy

Jamalabadi et al 2016 https: // onlinel Library.wiley.com/doi/full/10.1002/hbm.23140

Snoek et al 2019 https://www.ncbi.nlm.nih.gov/pubmed/30268846

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.