CAFE

19기 공지 게시판

종속변수가 여러개일 때 민감도, 특이도 구하

작성자유연수|작성시간24.07.09|조회수114 목록 댓글 1

종속변수의 종류가 4개인 다중 클래스 분류 문제에서 민감도(Sensitivity)와 특이도(Specificity)를 계산하는 것은 이진 분류 문제보다 복잡하지만, 각 클래스에 대해 각각 민감도와 특이도를 계산할 수 있습니다. 이를 위해 각 클래스를 긍정(True) 클래스로 간주하고 나머지 클래스를 부정(False) 클래스로 간주하는 방식으로 민감도와 특이도를 구합니다. 이런 접근 방식을 "one-vs-rest" 방법이라고 합니다.

 

# 필요한 패키지 설치
install.packages("caret")

# 패키지 로드
library(caret)

# 예시 데이터 생성
# 실제 값 (True labels)
actual <- factor(c('A', 'B', 'A', 'C', 'A', 'B', 'C', 'C', 'B', 'A'))

# 예측 값 (Predicted labels)
predicted <- factor(c('A', 'B', 'A', 'A', 'A', 'B', 'C', 'C', 'A', 'B'))

# 혼동 행렬 계산
conf_matrix <- confusionMatrix(predicted, actual)
print(conf_matrix)

# 각 클래스에 대한 민감도와 특이도 계산 함수
calculate_sensitivity_specificity <- function(conf_matrix) {
  sensitivity <- c()
  specificity <- c()
  for (class in levels(actual)) {
    tp <- conf_matrix$table[class, class]
    fn <- sum(conf_matrix$table[class, ]) - tp
    fp <- sum(conf_matrix$table[, class]) - tp
    tn <- sum(conf_matrix$table) - tp - fn - fp
    sensitivity[class] <- tp / (tp + fn)
    specificity[class] <- tn / (tn + fp)
  }
  return(list(sensitivity = sensitivity, specificity = specificity))
}

# 민감도와 특이도 계산
result <- calculate_sensitivity_specificity(conf_matrix)
print(result$sensitivity)
print(result$specificity)
다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자19기_신지혜 | 작성시간 24.07.10 https://towardsdatascience.com/multi-class-classification-one-vs-all-one-vs-one-94daed32a87b
    관련 내용
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼