Đường cong ROC dành cho các trình phân loại rời rạc như SVM: Tại sao chúng ta vẫn gọi nó là đường cong đường phố?


25

Trong cuộc thảo luận: làm thế nào để tạo đường cong roc để phân loại nhị phân , tôi nghĩ rằng sự nhầm lẫn là "phân loại nhị phân" (là bất kỳ phân loại nào phân tách 2 lớp) dành cho Yang, cái được gọi là "phân loại rời rạc" (tạo ra đầu ra rời rạc 0/1 như một SVM) và không phải đầu ra liên tục như phân loại ANN hoặc Bayes ... vv Vì vậy, cuộc thảo luận về cách ROC được vẽ cho "phân loại liên tục nhị phân" và câu trả lời là các đầu ra được sắp xếp bởi điểm số của họ vì các đầu ra là liên tục và một ngưỡng được sử dụng để tạo ra từng điểm trên đường cong ROC.

Câu hỏi của tôi là "phân loại rời rạc nhị phân", chẳng hạn như SVM, các giá trị đầu ra là 0 hoặc 1. Vì vậy, ROC chỉ tạo ra một điểm chứ không phải một đường cong. Tôi bối rối không biết tại sao chúng ta vẫn gọi nó là đường cong? !! Chúng ta vẫn có thể nói về ngưỡng? Làm thế nào một người có thể sử dụng các ngưỡng trong SVM nói riêng? Làm thế nào người ta có thể tính toán AUC?, Xác thực chéo có đóng vai trò nào ở đây không?


10
Một SVM đưa ra một giá trị quyết định thực, cụ thể là khoảng cách đã ký với siêu phẳng tách biệt trong không gian tính năng. Trong phân loại nhãn được chỉ định dựa trên dấu hiệu của giá trị quyết định này. Như vậy, các SVM thực hiện đầu ra không chỉ là một giá trị nhị phân, đầu ra của chúng chỉ được tạo thành nhị phân như một bước xử lý hậu kỳ trong phân loại.
Marc Claesen

Câu trả lời:


15
  • Có, có những tình huống mà đường cong vận hành máy thu thông thường không thể có được và chỉ tồn tại một điểm.

  • Các SVM có thể được thiết lập để chúng đưa ra xác suất thành viên của lớp. Đây sẽ là giá trị thông thường mà ngưỡng sẽ được thay đổi để tạo đường cong vận hành máy thu .
    Có phải đó là những gì bạn đang tìm kiếm?

  • Các bước trong ROC thường xảy ra với số lượng nhỏ các trường hợp thử nghiệm thay vì liên quan đến biến thể rời rạc trong hiệp phương sai (đặc biệt, bạn kết thúc với cùng một điểm nếu bạn chọn ngưỡng riêng biệt để mỗi điểm mới chỉ có một mẫu thay đổi nhiệm vụ của nó).

  • Việc thay đổi liên tục các tham số (siêu) khác của mô hình tất nhiên tạo ra các cặp độ đặc hiệu / độ nhạy cung cấp các đường cong khác trong hệ tọa độ FPR; TPR.
    Việc giải thích một đường cong tất nhiên phụ thuộc vào biến thể nào đã tạo ra đường cong.

Đây là một ROC thông thường (nghĩa là yêu cầu xác suất làm đầu ra) cho lớp "nhiều màu" của tập dữ liệu mống mắt:

  • FPR; TPR (= 1, C = 1, ngưỡng xác suất):
    Trung Hoa Dân Quốc

Cùng loại hệ tọa độ, nhưng TPR và FPR là chức năng của các tham số điều chỉnh và C:

  • FPR; TPR (, C = 1, ngưỡng xác suất = 0,5):
    gamma

  • FPR; TPR (= 1, C, ngưỡng xác suất = 0,5):
    Giá cả

Những mảnh đất này có một ý nghĩa, nhưng ý nghĩa khác hẳn với ý nghĩa của ROC thông thường!

Đây là mã R tôi đã sử dụng:

svmperf <- function (cost = 1, gamma = 1) {
    model <- svm (Species ~ ., data = iris, probability=TRUE, 
                  cost = cost, gamma = gamma)
    pred <- predict (model, iris, probability=TRUE, decision.values=TRUE)
    prob.versicolor <- attr (pred, "probabilities")[, "versicolor"]

    roc.pred <- prediction (prob.versicolor, iris$Species == "versicolor")
    perf <- performance (roc.pred, "tpr", "fpr")

    data.frame (fpr = perf@x.values [[1]], tpr = perf@y.values [[1]], 
                threshold = perf@alpha.values [[1]], 
                cost = cost, gamma = gamma)
}

df <- data.frame ()
for (cost in -10:10)
  df <- rbind (df, svmperf (cost = 2^cost))
head (df)
plot (df$fpr, df$tpr)

cost.df <- split (df, df$cost)

cost.df <- sapply (cost.df, function (x) {
    i <- approx (x$threshold, seq (nrow (x)), 0.5, method="constant")$y 
    x [i,]
})

cost.df <- as.data.frame (t (cost.df))
plot (cost.df$fpr, cost.df$tpr, type = "l", xlim = 0:1, ylim = 0:1)
points (cost.df$fpr, cost.df$tpr, pch = 20, 
        col = rev(rainbow(nrow (cost.df),start=0, end=4/6)))

df <- data.frame ()
for (gamma in -10:10)
  df <- rbind (df, svmperf (gamma = 2^gamma))
head (df)
plot (df$fpr, df$tpr)

gamma.df <- split (df, df$gamma)

gamma.df <- sapply (gamma.df, function (x) {
     i <- approx (x$threshold, seq (nrow (x)), 0.5, method="constant")$y
     x [i,]
})

gamma.df <- as.data.frame (t (gamma.df))
plot (gamma.df$fpr, gamma.df$tpr, type = "l", xlim = 0:1, ylim = 0:1, lty = 2)
points (gamma.df$fpr, gamma.df$tpr, pch = 20, 
        col = rev(rainbow(nrow (gamma.df),start=0, end=4/6)))

roc.df <- subset (df, cost == 1 & gamma == 1)
plot (roc.df$fpr, roc.df$tpr, type = "l", xlim = 0:1, ylim = 0:1)
points (roc.df$fpr, roc.df$tpr, pch = 20, 
        col = rev(rainbow(nrow (roc.df),start=0, end=4/6)))

1
Điều này rất rõ ràng, Cảm ơn. Tôi đã có ý tưởng rằng việc thay đổi b giống như di chuyển siêu phẳng và do đó có sự khác biệt (TPR, FPR)! Nhưng với trình phân loại SVM, độ lệch b được học, vì vậy nó có vẻ là tham số tốt nhất? không?, nếu đây là trường hợp, không cần thực hiện phân tích ROC?, không?
Abdelhak Mahmoudi

@AbdelhakMahmoudi: Tôi đoán các tham số được học bởi mô hình không phải là những gì bạn muốn thay đổi. Nhưng vì bạn có thể có đầu ra xác suất (tôi không đào sâu vào mã, vì vậy tôi không biết liệu xác suất SVM có thực sự tương đương với "khó" không, tại sao không sử dụng nó? Đây là một kết quả rất phổ biến từ đó ROC được tạo ra. Hàm svm của R là một giao diện cho libsvm được sử dụng rộng rãi, vì vậy bạn không bị hạn chế sử dụng R để làm điều này.
cbeleites hỗ trợ Monica

these plots do have a meaning- ý nghĩa của những mảnh đất đó là gì?
Gulzar

8

y^y^= =ký tên(wTx+b)wb

y^= ={0nếu  wTx+b<01nếu không thì

ηη

y^= ={0nếu  wTx+b<η1nếu không thì

η

wbη

>>> from sklearn.svm import SVC
>>> model = SVC(kernel='linear', C=0.001, probability=False, class_weight='balanced')
>>> model.fit(X, y)
>>> # The coefficients w are given by
>>> w = list(model.coef_)
>>> # The intercept b is given by
>>> b = model.intercept_[0]
>>> y_hat = X.apply(lambda s: np.sum(np.array(s)*np.array(w))+b, axis=1)
>>> y_hat = (y_hat > eta).astype(float)

3

Đường cong ROC biểu thị độ đặc hiệu so với độ nhạy thay đổi theo ngưỡng của hiệp phương sai (có thể liên tục hoặc rời rạc). Tôi nghĩ rằng bạn đang nhầm lẫn hiệp phương sai với phản hồi và có lẽ không hiểu đầy đủ đường cong ROC là gì. Nó chắc chắn là một đường cong nếu hiệp phương sai liên tục và chúng ta xem xét một ngưỡng cho hiệp phương sai thay đổi liên tục. Nếu hiệp phương sai rời rạc, bạn vẫn có thể vẽ đồ thị như là một hàm của ngưỡng liên tục. Sau đó, đường cong sẽ bằng phẳng với các bước lên (hoặc xuống) ở các ngưỡng tương ứng với các giá trị rời rạc của hiệp phương sai. Vì vậy, điều này sẽ áp dụng cho SVM và bất kỳ phân loại rời rạc nào khác.

Về AUC vì chúng tôi vẫn có ROC (ước tính), chúng tôi vẫn có thể tính diện tích theo nó. Tôi không chắc bạn đã nghĩ gì về câu hỏi của bạn về xác nhận chéo. Trong bối cảnh các vấn đề phân loại, xác thực chéo được sử dụng để có được ước tính không thiên vị hoặc gần như không thiên vị về tỷ lệ lỗi cho trình phân loại. Vì vậy, nó có thể nhập vào cách chúng tôi ước tính các điểm trên ROC.


1
Ok, điều gì có thể là ngưỡng cho phân loại svm?
Abdelhak Mahmoudi

Tôi không biết. Các đồng biến là gì? Nếu bạn có một đồng biến thì bất kỳ giá trị nào cũng có thể là một ngưỡng. Nếu bạn có nhiều hơn một đồng biến thì hiệu suất phân loại phụ thuộc vào việc lựa chọn một vài giá trị thay vì một ngưỡng duy nhất nhưng nó vẫn thay đổi trong không gian của các hiệp phương sai.
Michael R. Chernick

Ví dụ, các SVM tuyến tính dựa trên siêu phẳng tách biệt phụ thuộc vào giá trị C đã chọn (C thấp chịu được nhiều lỗi đào tạo hơn), một tập hợp các giá trị C có thể là tập hợp các ngưỡng không?
Abdelhak Mahmoudi

Có và không phải các giá trị C chỉ là kết hợp tuyến tính của hiệp phương sai?
Michael R. Chernick

2
C là yếu tố hình phạt được đưa ra để kiểm soát sự đánh đổi giữa độ phức tạp của siêu phẳng và các lỗi huấn luyện. Một cách khác có thể là việc sử dụng độ lệch b làm ngưỡng vì b là khoảng cách từ tâm của không gian tính năng đến siêu phẳng tách biệt. Vì vậy, việc thay đổi b giống như di chuyển siêu phẳng và do đó có TP và FP khác nhau! Đây là sự hiểu biết của tôi!
Abdelhak Mahmoudi
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.