inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

로지스틱 회귀 분석: (구) 예시 문제 작업형3(ver. 2023-2)

이진분류에서 양성 클래스가 0일 때 평가 방법

2

도비

작성한 질문수 6

0

안녕하세요. 강의 너무 잘 듣고있습니다 !


이진분류 평가 지표를 공부하다가 궁금한 점이 생겼습니다.

일반적으로 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을 양성 클래스로 평가하는 문제가 출제된 적이 있는지도 궁금합니다.


감사합니다.

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

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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을 양성 클래스로 지정하는 문제가 출제되었는지에 대해서는 위 기존 답변에서 확인된 내용이 없습니다. 다만 문제에서 평가 대상 클래스를 명시한다면, 해당 클래스가 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