Cách xác định chất lượng của phân loại đa lớp


30

Được

  • một tập dữ liệu với các thể hiện cùng với N lớp trong đó mọi trường hợp x i thuộc chính xác một lớp y ixiNxiyi
  • một bộ phân loại đa lớp

Sau khi đào tạo và kiểm tra, về cơ bản tôi có một bảng với lớp đúng và lớp dự đoán a i cho mọi trường hợp x i trong tập kiểm tra. Vì vậy, cho mọi trường hợp tôi có một trong hai trận đấu ( y i = một i ) hoặc bỏ lỡ ( y imột i ).yiaixiyi=aiyiai

Làm thế nào tôi có thể đánh giá chất lượng của trận đấu? Vấn đề là một số lớp có thể có nhiều thành viên, tức là nhiều trường hợp thuộc về nó. Rõ ràng nếu 50% của tất cả các điểm dữ liệu thuộc về một lớp và phân loại cuối cùng của tôi là 50% tổng thể, tôi không thu được gì. Tôi cũng có thể tạo ra một bộ phân loại tầm thường tạo ra lớp lớn nhất cho dù đầu vào là gì.

Có một phương pháp tiêu chuẩn để ước tính chất lượng của một bộ phân loại dựa trên kết quả thử nghiệm đã biết của các kết quả trùng khớp và số lần truy cập cho mỗi lớp không? Có lẽ điều quan trọng là phải phân biệt tỷ lệ phù hợp cho từng loại cụ thể?

Cách tiếp cận đơn giản nhất tôi có thể nghĩ đến là loại trừ các trận đấu chính xác của lớp lớn nhất. Còn gì nữa không


Tôi không chắc chắn nếu tôi hiểu chính xác câu hỏi. Bạn có biết Ma trận nhầm lẫn và các biện pháp xuất phát ? Đây có phải là câu trả lời cho câu hỏi của bạn? Hay bạn đề cập đến một cái gì đó phức tạp hơn?
steffen

Tôi nghĩ rằng đây là nguồn gốc của sự nhầm lẫn của tôi: Trong đoạn đầu tiên bạn nêu .. nơi bạn là các lớp thực sự và ... : Bạn có nghĩa là một thể hiện có thể thuộc / có nhiều hơn một lớp không? Hoặc mỗi x i thuộc / có chính xác một lớp? Bạn có thể vui lòng làm rõ? xixi
steffen

@steffen: Tôi đã thấy ma trận nhầm lẫn. Trong trường hợp cụ thể của tôi, tôi có 4 lớp. Vì vậy, tôi không chắc những biện pháp xuất phát nào có thể được sử dụng và sẽ có ý nghĩa. Mỗi thuộc về một lớp. Tuy nhiên có nhiều hơn hai lớp có thể tổng i [ 1 , , N ] . xii[1,,N]
Gerenuk

@steffen Những biện pháp xuất phát đó chủ yếu được áp dụng cho phân loại nhị phân, trong khi câu hỏi này rõ ràng là xử lý nhiều hơn hai lớp. Điều này sau đó đòi hỏi một sự hiểu biết sửa đổi về các thuật ngữ như "thực sự tích cực."
Michael McGowan

@MichaelMcGowan Tôi đã yêu cầu OP làm rõ và sau đó đã thực hiện chỉnh sửa để phản ánh rõ ràng vấn đề đa kính, điều này không rõ ràng trước khi chỉnh sửa (IMHO).
steffen

Câu trả lời:


16

Giống như phân loại nhị phân, bạn có thể sử dụng tỷ lệ lỗi theo kinh nghiệm để ước tính chất lượng của trình phân loại. Đặt là trình phân loại và x iy i tương ứng là một ví dụ trong cơ sở dữ liệu của bạn và lớp của nó. e r r ( g ) = 1gxiyi Như bạn nói, khi các lớp học là không cân bằng, đường cơ sở không phải là 50% nhưng tỷ trọng của lớp lớn hơn. Bạn có thể thêm trọng số cho mỗi lớp để cân bằng lỗi. GọiWylà trọng số của lớpy. Đặt các trọng số sao cho1

err(g)=1nin1g(xi)yi
Wyyvà xác định saisố thực nghiệm có trọng sốerrW(g)=11Wy1nin1yi=y
errW(g)=1ninWyi1g(xi)yi

Như Steffen đã nói, ma trận nhầm lẫn có thể là một cách tốt để ước tính chất lượng của một bộ phân loại. Trong trường hợp nhị phân, bạn có thể rút ra một số biện pháp từ ma trận này như độ nhạy và độ đặc hiệu, ước tính khả năng của trình phân loại để phát hiện một lớp cụ thể. Nguồn lỗi của trình phân loại có thể theo một cách cụ thể. Ví dụ: trình phân loại có thể quá tự tin khi dự đoán 1, nhưng không bao giờ nói sai khi dự đoán 0. Nhiều phân loại có thể được tham số hóa để kiểm soát tỷ lệ này (dương tính giả so với phủ định sai) và khi đó bạn quan tâm đến chất lượng của cả gia đình phân loại, không chỉ một. Từ đó, bạn có thể vẽ đường cong ROC và đo diện tích dưới đường cong ROC cung cấp cho bạn chất lượng của các phân loại đó.

Đường cong ROC có thể được mở rộng cho vấn đề đa kính của bạn. Tôi đề nghị bạn đọc câu trả lời của chủ đề này .


1
Có nhất thiết phải chia sai số thực nghiệm có trọng số cho số lớp không, có cùng tỷ lệ với sai số thực nghiệm không? Nếu không thì nó sẽ lớn hơn nhiều ...
PhilippPro

17

Để đánh giá các hệ thống phân loại văn bản đa chiều, tôi sử dụng F1 (F-đo) trung bình vi mô và vĩ mô. Thước đo F về cơ bản là sự kết hợp có trọng số của độ chính xác và nhớ lại điều đó. Đối với phân loại nhị phân, các phương pháp vi mô và vĩ mô là như nhau, nhưng, đối với trường hợp đa chiều, tôi nghĩ chúng có thể giúp bạn giải quyết. Bạn có thể nghĩ về Micro F1 như một sự kết hợp có độ chính xác và thu hồi có trọng số tương đương với mọi tài liệu, trong khi Macro F1 cho trọng số tương đương với mọi lớp. Đối với mỗi phương trình, số đo F là như nhau, nhưng bạn tính toán độ chính xác và nhớ lại khác nhau:

F=(β2+1)PRβ2P+R,

β

Pmicro=i=1|C|TPii=1|C|TPi+FPi,Rmicro=i=1|C|TPii=1|C|TPi+FNi

Pmacro=1|C|i=1|C|TPiTPi+FPi,Rmacro=1|C|i=1|C|TPiTPi+FNi

TPFPFNC


1
# Function in R, using precision, recall and F statistics

check.model.accuracy <- function(predicted.class, actual.class){

  result.tbl <- as.data.frame(table(predicted.class,actual.class ) ) 

  result.tbl$Var1 <- as.character(result.tbl$predicted.class)
  result.tbl$Var2 <- as.character(result.tbl$actual.class)

  colnames(result.tbl)[1:2] <- c("Pred","Act")

  cntr <- 0  
  for (pred.class in unique(result.tbl$Pred) ){
    cntr <- cntr+ 1
    tp <- sum(result.tbl[result.tbl$Pred==pred.class & result.tbl$Act==pred.class, "Freq"])
    tp.fp <- sum(result.tbl[result.tbl$Pred == pred.class , "Freq" ])
    tp.fn <- sum(result.tbl[result.tbl$Act == pred.class , "Freq" ])
    presi <- tp/tp.fp 
    rec <- tp/tp.fn
    F.score <- 2*presi*rec/(presi+rec)
    if (cntr == 1 ) F.score.row <- cbind(pred.class, presi,rec,F.score)
    if (cntr > 1 ) F.score.row <- rbind(F.score.row,cbind(pred.class,presi,rec,F.score))
  }

  F.score.row <- as.data.frame(F.score.row) 
  return(F.score.row)
}

check.model.accuracy(predicted.df,actual.df) 
# For multiclass, average across all classes 

5
Bạn có thể thêm một số văn bản để giải thích điều này?
gung - Phục hồi Monica
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.