이진분류에서 양성 클래스가 0일 때 평가 방법
2
6 câu hỏi đã được viết
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요
먼저 유사한 질문이 있었는지 검색해보세요
안녕하세요. 강의 너무 잘 듣고있습니다 !
이진분류 평가 지표를 공부하다가 궁금한 점이 생겼습니다.
일반적으로 1을 양성으로 보고 다음과 같이 평가하는 것으로 알고 있습니다.
f1_score(y_val, pred)
roc_auc_score(y_val, pred[:, 1])만약 0을 양성으로 평가해야 한다면 다음처럼 작성하면 될까요?
f1_score(y_val, pred, pos_label=0)
roc_auc_score(
(y_val == 0).astype(int),
pred[:, 0]
)f1_score는 pos_label=0을 지정하고, roc_auc_score는 pred[:, 0]처럼 0일 확률을 사용하면 되는지 궁금합니다.
추가로 빅데이터분석기사 실기에서 실제로 0을 양성 클래스로 평가하는 문제가 출제된 적이 있는지도 궁금합니다.
감사합니다.
Câu trả lời 1
0
안녕하세요, 인프런 AI 인턴입니다. 도비님, 질문하신 경우에는 아래와 같이 처리하시면 됩니다.
F1-score
f1_score는 예측 라벨을 기준으로 양성 클래스를 지정하므로, 0을 양성으로 평가하려면 다음과 같이 작성합니다.
f1_score(y_val, pred, pos_label=0)
여기서 pred는 predict()로 얻은 예측 라벨이어야 합니다.
pred = model.predict(X_val)
ROC AUC
roc_auc_score는 양성 클래스의 확률 또는 점수를 입력받아 평가합니다. predict_proba()의 열 순서는 model.classes_ 순서이므로 먼저 확인해야 합니다.
print(model.classes_)
예를 들어 다음과 같다면,
model.classes_
# [0, 1]
0의 확률은 pred_proba[:, 0]입니다. 다만 roc_auc_score는 기본적으로 이진 정답에서 1을 양성으로 해석하므로, 원래의 0을 새로운 양성인 1로 변환해서 평가하는 방식이 안전합니다.
pred_proba = model.predict_proba(X_val)
roc_auc_score(
(y_val == 0).astype(int),
pred_proba[:, 0]
)
따라서 도비님께서 작성하신 ROC AUC 코드는 올바른 방법입니다.
반대로 단순히 다음처럼 작성하면,
roc_auc_score(y_val, pred_proba[:, 0])
정답의 1을 양성으로 해석하면서 0의 확률을 비교하게 되므로, 평가 방향이 서로 맞지 않을 수 있습니다.
문자형 클래스라면 model.classes_의 위치를 기준으로 확률 열을 선택해야 합니다.
model.classes_
# ['A', 'B']
이 경우 B의 확률은 pred_proba[:, 1], A의 확률은 pred_proba[:, 0]입니다.
관련 내용은 아래 기존 질문과 답변도 함께 참고해 주세요.
- 이진분류에서 양성이 0일 때, roc_auc_score 적용..
classes_의 순서에 따른 확률 열 선택과 숫자형·문자형 타깃의 양성 클래스 처리 방법을 설명하고 있습니다.
- 모델 평가할 때 pos_label 사용 방법 질문입니다.
f1_score,recall_score등에서pos_label을 사용하는 방법을 다룹니다.
- f1 스코어에 관련된 질문입니다.
predict()와predict_proba()의 차이 및 F1-score와 ROC AUC의 입력 차이를 설명합니다.
빅데이터분석기사 실기에서 반드시 0을 양성 클래스로 지정하는 문제가 출제되었는지에 대해서는 위 기존 답변에서 확인된 내용이 없습니다. 다만 문제에서 평가 대상 클래스를 명시한다면, 해당 클래스가 0이든 문자형이든 pos_label 또는 정답·확률 변환을 통해 문제의 평가 기준에 맞춰 주시면 됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
원핫인코딩 전 train과 test 병합여부
0
14
1
수강기간 연장
0
15
1
29강 작업2형의 이상치 처리
0
45
2
수강기간 연장 문의드립니다!
0
48
2
9월에 실기출제기준 개정내역에 신설된부분
0
48
1
작업형2 모의문제2 결과값 관련 문의드립니다.
0
61
2
12회차 시험 실패 후 13회 도전 예정입니다.
0
47
1
random_state 값
0
66
2
강의 연장 문의 드립니다.
0
61
2
강의 연장 문의
0
59
2
오징어게임
0
63
1
object 컬럼이 여러 개인 경우 인코딩 전처리 방법
1
49
2
데이터 전처리 순서 관련
0
62
2
작업형2 모의문제 데이터 불러오기
0
60
2
강의 연장 부탁드립니다!
0
66
2
수강기간 연장 문의드립니다!
0
60
2
2회 기출유형(작업형1) Warning
0
75
2
describe()
0
54
2
수강기간 연장 문의
0
83
2
빅데이터분석기사 실기 인코딩
0
69
2
수강기간 연장문의
0
78
2
수강 기간 연장 문의 드립니다.. 부탁드립니다 ㅠㅠ
0
64
2
작업형2와 3의 목적
0
47
1
기출9회(작업형 1의 2번문제)
0
53
2

