클래스 불균형(class imbalance)은 머신러닝에서 지도 학습을 위해 사용되는 입력 데이터 중
특정 클래스가 다른 클래스에 비해 상대적으로 적은 경우를 의미합니다.
이는 정확도가 낮은 모델을 생성할 수 있고, 정확도가 높은 모델을 생성하기 위해서는
클래스 불균형을 해결해야 합니다.
# y의 클래스 값 분류
print(np.unique(y)) # [0 1 2 3 4 5 6 7 8 9]
# 불균형확인
print(np.unique(y,return_counts=True))
(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
array([178, 182, 177, 183, 181, 182, 181, 179, 174, 180], dtype=int64))
이런식으로 0이 178개, 1이 182개, 2이 177개 ….
np.unique 로 클래스 불균형을 찾을 수 있습니다.
클래스 불균형을 해결하는 방법에는 아래와 같은 것들이 있습니다.
[ML] Class imbalance 해결을 위한 다양한 Sampling 기법
x_train, x_test, y_train,y_test = train_test_split(x,y,
train_size=0.8,
shuffle = True,
# stratify 는 데이터 불균형을 해결해줌
stratify=y
random_state=21
)
stratify
매개변수는 훈련데이터 와 학습 데이터의 클래스 비율을 비슷하게 만들어줘 클래스 불균형을 줄여줍니다.