roc_auc_score
3
1 câu hỏi đã được viết
from sklearn.metrics import roc_auc_scoreroc_auc = roc_auc_score(y_val, pred[:, 1])
print('roc_auc: ', roc_auc)
11:19 즈음에 나오는 해당 코드에 궁금한 점이 있어 질문 드립니다. roc_auc_score() 메서드에 전달할 두 번째 아규먼트는 양성(positive)에 대응하는 클래스일 확률 리스트를 전달하는 것으로 알고 있습니다. 그런데 roc_auc_score() 메서드의 첫 번째 아규먼트에 전달하려는 값(y_val)이 0 또는 1로 이루어지지 않고 지금과 같이 '<=50K' 또는 '>50K'와 같은 문자열로 이루어진 리스트라면 roc_auc_score() 메서드 입장에서 도대체 어떻게 '<=50K'가 양성인지 '>50K'가 양성인지 판단할 수 있는 것인지 궁금합니다. 다른 수강생의 질문에서 print(rf.classes_)를 통해 보여지는 리스트의 인덱스 번호로 0이면 양성 X, 1이면 양성으로 판단한다라고 본 것 같은데, 해당 정보를 알고 있는 것(해당 정보를 저장한 주체)은 rf, 즉 랜덤포레스트 모델 객체 아닌가요? roc_auc_score() 입장에서는 rf.classes_ 속성에 직접 접근하지 않는 한, 해당 정보를 알지 못할 것 같은데 어떻게 '>50K'를 양성으로 판단하는지 궁금합니다.
Câu trả lời 1
0
안녕하세요, 인프런 AI 인턴입니다. 정승찬님께서 질문해주신 내용을 바탕으로 설명 드리겠습니다.
ROC AUC 스코어를 계산하는 roc_auc_score 함수에서는, 일반적으로 양성 클래스(Positive Class)를 결정하여 그 측면에서 확률을 판단하게 됩니다. roc_auc_score 함수가 y_val에 문자열 같이 클래스 레이블로 제공된 데이터를 처리할 때, 클래스가 어떻게 양성인지 판단할 수 있는 이유는 다음과 같습니다.
인코딩된 값 사용: 보통 모델을 학습시킬 때, 클래스 레이블이 문자열일 경우
LabelEncoder같은 유틸리티를 사용하여 레이블을 0 또는 1로 변환합니다. 이는 내부적으로 각 클래스가 어떤 수로 매핑되는지를 명확하게 만들어 줍니다. 이로 인해, True Positive와 같은 개념을 이진 분류 문제에 적용할 수 있게 됩니다.클래스 순서에 대한 정보: scikit-learn의 분류 모델들은
fit과정을 거치는 동안 프레임워크에 클래스들이 어떤 인덱스를 가질지에 대한 정보를 제공하게 됩니다. 예를 들어rf.classes_속성은 각 클래스의 매핑 정보를 제공합니다. 이를 통해 나중에 예측 시 또는 평가 시 어떤 클래스가 양성인지 판단할 수 있게 됩니다.predict_proba 결과 해석:
roc_auc_score(y_val, pred[:, 1])에서pred[:, 1]은 두 번째 클래스(이 경우 ‘>50K’로 판단되는 클래스)에 대한 확률을 나타냅니다. 이 정보는 모델이 이전에 학습할 때 정한 순서대로 제공됩니다.
따라서, roc_auc_score 함수 측면에서는 y_val 레이블이 처리되었거나, predict_proba로부터 온 확률 값의 해석이 필요할 때 이런 변환 과정을 통해 대응 니즈를 충족하게 됩니다. 질문자의 이해를 돕기 위해 유사한 질문을 통해 얻은 정보를 추가로 제공해 드리겠습니다:
이진분류에서 양성이 0일 때, roc_auc_score 적용..: 이 게시물에서는 이진 분류 문제에서 양성 클래스가 0일 때의 처리 방법 및 분류 클래스가 문자일 경우의
roc_auc_score함수 적용 방법에 대해 설명하고 있습니다.roc_auc: 클래스에 대한 확률값 구하는 이진 분류와 다중 분류 환경에서
roc_auc사용 시predict_proba의 선택적 활용 관계에 대해 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
0
해당 링크에 들어가서 추가적인 내용을 확인했습니다.
혹시나 불안하다면
roc_auc = roc_auc_score(y_val, pred[:, 1], pos_label='>50K') 로 작성하면 될까요?
옳게 풀은건지 질문드립니다!
0
0
0
추가질문 합니다
0
10
1
시험환경 구름
0
10
1
2유형 질문드려요
0
8
1
RandomForest vs lgb
0
18
1
전처리 관련질문
0
13
2
작업형3 기출
0
12
1
유형2에서 데이터분할 생략 가능여부
0
20
2
9회 기출 유형3 질문
0
15
1
lgb 기초편
0
10
1
괄호 사용
0
15
1
작업형 2 데이터 전처리 질문
0
18
1
11회 기출 유형 작업형1 문제 3-1
0
16
0
예시문제 작업형2 (ver2023) 질문입니다
0
16
1
Data type에 따른 처리
0
15
2
데이터 전처리 관련
0
16
2
시험에서 문제 불러오기
0
18
2
2번문제 출력값 질문
0
23
2
pd.get_dummies()가 bool로 반환
0
18
2
대응표본검정 레빈
0
23
3
단일표본검정 문제 유형
0
23
2
[작업형 3] 6~7. 카이제곱 검정
0
23
2
9회 작업형3 문제 1-1
0
37
2
최종답안 계산 방식 질문
0
25
1

