강의

챌린지

멘토링

로드맵

커뮤니티

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

비전공자, 입문자가 빅데이터 분석기사 실기를 빠르게 취득할 수 있도록 안내해드려요! 이론은 가볍게, 실전은 확실하게 복잡한 배경지식 없이도, 기출문제를 중심으로 시험에 꼭 나오는 포인트만 집중 학습합니다.

(4.9) 수강평 937개

수강생 6,124명

난이도 입문

수강기한 12개월

새소식 목록
관리작성
퇴근후딴짓님의 프로필 이미지

・

수정됨

📌 Tip) 분류-불균형 데이터 다루는 법: 3가지 실전 팁

타겟 변수가 불균형한 경우, 다음과 같은 기법을 적용하여 모델 성능을 개선할 수 있습니다.
단, 이러한 기법이 항상 성능 향상으로 이어지는 것은 아니므로, 적용 전후의 성능을 반드시 비교해보는 것이 중요합니다.

여기서 ‘불균형’이란 다음과 같은 상황을 말합니다:

  • 이진 분류에서 0과 1의 비율이 90:10처럼 한쪽 클래스가 현저히 적은 경우

  • 다중 클래스 분류에서 A, B, C의 비율이 45:45:10처럼 특정 클래스의 비중이 현저히 낮은 경우

 

1.stratify 옵션을 활용한 데이터 분할

train 데이터를 train_test_split으로

나눌 때 stratify=target 옵션을 사용하면 클래스비율을 유지한 채 데이터를 분할할 수 있다. 

불균형 데이터에서는 특정 클래스의 샘플이 너무 적어 학습이 어려워질 수 있는데, 이를 방지하는 데 유용하다.

target = train.pop('타겟 컬럼')

train_test_split(train,target, test_size=0.2, random_state=0, stratify=target)

 

2.class_weight='balanced' 옵션을 사용한 랜덤포레스트

랜덤포레스트 모델을 학습할 때 class_weight='balanced'를 설정하면, 각 클래스의 샘플 수에 따라 가

중치를 자동으로 조정하여 불균형 문제를 완화할 수 있다.

 

RandomForestClassifier(random_state=0, class_weight='balanced')

 

3.is_unbalance=True 옵션을 활용한 LightGBM

LightGBM에서는 is_unbalance=True를 설정하면 내부적으로 클래스의 분포를 고려하여 학습이 진행

된다. 즉, 적은 샘플을 가진 클래스에 더 높은 가중치를 부여해 모델이 해당 클래스를 무시하지 않도록

한다.

lgb.LGBMClassifier(random_state=0,verbose=-1,is_unbalance=True)

 

실무에서는 이보다 훨씬 극단적인 불균형 데이터를 다루는 경우가 많습니다.
예를 들어, 사기 거래는 99:1 비율처럼 한쪽 클래스의 비중이 매우 작은 경우도 흔합니다.

이처럼 불균형한 데이터를 그대로 학습에 사용하면, 모델이 소수 클래스에 대한 예측을 제대로 하지 못해 전체 성능이 크게 떨어질 수 있습니다. 다양한 방법이 있지만 그 중에 가장 손쉽게 해볼 수 있는 방법입니다.

화이팅💕

(위 내용은 필수적인 내용은 아닌 심화 내용입니다. )

 

댓글