인프런 커뮤니티 질문&답변

그접시제가살게요님의 프로필 이미지
그접시제가살게요

작성한 질문수

[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지

데이터 불균형(Data Imbalance)

데이터 불균형 문제 질문

작성

·

591

2

안녕하세요!
데이터 불균형 파트에서 1. weighted random sampling 사용해서 dataloader 이용해서 구현하는 중 질문이 생겨 올립니다.
 
ex)
-개 이미지 800개
-고양이 이미지 200개
데이터셋을 단순히 배치사이즈를 10으로 하였을때, 평균적으로 개 이미지 8개, 고양이 이미지2개가 들어가게 됩니다.
 
이를 위의 sampler 방식을 사용하게 되면 배치 내에 평균 5개씩 이미지가 들어가게 되었는데요
 
의문점은
1) 실제 개 이미지 중 300개는 아예 쓰지 못하게 되고, 고양이 이미지는 중복으로 더 들어가게 되는 상황이 되더라구요. 이러면 사용하지 못하는 이미지가 생기게 되는데, 사용하지 못하는 이미지를 활용할 수 있는 방법은 없는지요?
 
2) 위의 문제를 해결하기 위해 data_augmentation을 보조수단으로 써서 불균형 차이를 줄이는 것도 방법이 되는것인가요?

답변 2

1

딥러닝호형님의 프로필 이미지
딥러닝호형
지식공유자

안녕하세요. luenheim님

 

정말 좋은 질문입니다.

가중 샘플링 방식은 확률적 샘플링이기 때문에 전체 데이터 사용이 보장이 안 됩니다. 그럼에도 균형된 배치를 사용할 수 있기 때문에 랜덤 샘플링 보다는 더 좋은 성능이 이끌어 냅니다. 아주 오래 전에 저도 실제 연구에서 고민했던 질문이라 반갑습니다. 제가 시도 했던 방법은 크게 다음과 같습니다.

1. 가중 샘플링을 사용하되 데이터를 더 많이 활용할 수 있도록 에폭 수를 늘려 샘플링을 보다 많이 하게 한다.

2. 클래스마다 데이터 증식의 개수를 다르게 하여 불균형을 줄여준 뒤 무작위 샘플링을 진행한다. (oversampling)

3. 가장 수가 작은 클래스 기준으로 다른 클래스를 부분집합으로 나누어 매 에폭마다 돌아가면서 사용한다. (변형 된 undersampling)

4. 클래스가 가장 큰 데이터에 대해서 데이터 분석을 하여 일부를 추출하여 학습에 사용한다. 즉, 오히려 큰 클래스에 대해서 데이터가 덜 사용 됨을 인정하고 중요하다고 생각하는 데이터만 주입한다. (데이터 분석 후 가중 샘플링)

저의 경우 4번이 가장 큰 효과가 있었습니다.

열공하세요 :)

 

 

 

0

네 여러 방법에 대해 제시해 주셔서 감사합니다! 4번 방법에 대해서 고민해보고 적용해 봐야겠네요!!친절한 설명 감사드립니다!ㅎㅎ 

딥러닝호형님의 프로필 이미지
딥러닝호형
지식공유자

모든 방법은 데이터 마다 모델마다 성능이 다를 수 있기 때문에 실제 적용을 하시는거라면 여러 가지 해보셔야해요 ^^;;

그접시제가살게요님의 프로필 이미지
그접시제가살게요

작성한 질문수

질문하기