inflearn logo
강의

講義

知識共有

[仕事終わりの趣味] ビッグデータ分析実技 (作業型1,2,3)

機械学習の学習および評価(分類)

roc_auc_score

2

nine141417329586

投稿した質問数 1

0

from sklearn.metrics import roc_auc_score
roc_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'를 양성으로 판단하는지 궁금합니다.

python 머신러닝 빅데이터 pandas 빅데이터분석기사

回答 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 정승찬님께서 질문해주신 내용을 바탕으로 설명 드리겠습니다.

ROC AUC 스코어를 계산하는 roc_auc_score 함수에서는, 일반적으로 양성 클래스(Positive Class)를 결정하여 그 측면에서 확률을 판단하게 됩니다. roc_auc_score 함수가 y_val에 문자열 같이 클래스 레이블로 제공된 데이터를 처리할 때, 클래스가 어떻게 양성인지 판단할 수 있는 이유는 다음과 같습니다.

  1. 인코딩된 값 사용: 보통 모델을 학습시킬 때, 클래스 레이블이 문자열일 경우 LabelEncoder 같은 유틸리티를 사용하여 레이블을 0 또는 1로 변환합니다. 이는 내부적으로 각 클래스가 어떤 수로 매핑되는지를 명확하게 만들어 줍니다. 이로 인해, True Positive와 같은 개념을 이진 분류 문제에 적용할 수 있게 됩니다.

  2. 클래스 순서에 대한 정보: scikit-learn의 분류 모델들은 fit 과정을 거치는 동안 프레임워크에 클래스들이 어떤 인덱스를 가질지에 대한 정보를 제공하게 됩니다. 예를 들어 rf.classes_ 속성은 각 클래스의 매핑 정보를 제공합니다. 이를 통해 나중에 예측 시 또는 평가 시 어떤 클래스가 양성인지 판단할 수 있게 됩니다.

  3. 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

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

시험 치기 전 급하게 질문 사항

0

41

2