작성자: 16기 민윤기
- 시간이 지날수록 불균형 데이터들의 학습에 관한 수많은 연구가 진행되고 있음
- 이 문제를 적절하게 튜닝할 알고리즘이 꼭 필요함
- 본 논문에서는, 현재 당면한 불균형 학습 문제의 이해에 대한 survey와 함께 최적의 solutions를 제공하고자 함
(1) between-class imbalance: 특히 분류 문제에서, 분류의 타겟이 1:100, 1:1000 등으로 불균형한 경우를 떠올릴 수 있 다.
Ex. 유방암 발병 유무에 관한 분류 문제: 음성이 10923, 양성이 260 이라고 가정하였을 때, 모델 자체의 정확도가 높더라도, 양성인 사람을 음성으로 잘못 분류할 확률이 크다면, 심각한 사회적 영향을 불러일으킬 것이다. 소수 클래스에 대한 적중이 어렵지만, 그것의 정확도가 매우 크리티컬한 상황임.
(2) type of problem
- intrinsic vs extrinsic: intrinsic이 dataspace 자체에서 발생하는 불균형이라면, extrinsic은 시간이나 저장소 등의 외부적 요인에 의해 발생하는 불균형.
- absolute rarity vs relative imbalance: 절대적인 수치 자체가 매우 적은 경우 생기는 absolute rarity와, 특정 클래스가 다른 다수 클래스에 비해 상대적으로 적은 경우인 relative imbalance로 나눌 수 있다. 후자의 경우, 대체로 학습 성능이 뛰어나다는 특징이 있다.
(3) data complexity
- overlapping, lack of representative data, small disjuncts 등의 복잡성으로 인해 클래스 대표 점을 찾아내기 힘듦을 의미한다.
- (a)의 경우, between-class imbalance가 심한 것을 확인할 수 있다. (b)의 경우는, 클래스 간의 overlapping이 심하여 disicison boundary 설정이 어렵고, 클래스 내에서도 subconcept이 존재하는데, 특히 소수 클래스에 포함되는 subconcept의 경우 해당 클래스의 대표성을 학습하기 더욱 어렵다.
(1) sampling methods
- random oversampling: 소수 클래스에서 임의로 데이터 집합을 구성하여 복제한 후, 기존 sample space에 넣어주는 기법. 이 경우, overfitting의 문제 야기
- random undersampling: 다수 클래스에서 데이터를 제거하는 기법. 이 경우, 대표 sample을 삭제하게 되면 major 클래스에 대한 학습률이 떨어질 수 있다.
(2) informed undersampling
- EasyEnsemble: Unsupervised learning. major 클래스 내에서 독립적으로 여러 set을 추출하고, 각각의 set과 소수 클래스와의 집합을 통해 학습을 시켜 도출되는 모델을 앙상블 하는 기법.
- BalanceCascade: major 클래스에서 소수 클래스와 같은 개수의 데이터를 추출하여 이 set과 소수 클래스를 합친 set에 대해 학습을 진행. 이 분류기가 major set에 대한 데이터를 잘 분류해낸다면, 그 데이터들은 set에서 제거됨. 이를 반복하여, 최종 모델을 도출하는 Supervised learning.
(3) KNN Classifer: NearMiss-1,2,3가 존재함. 다수 클래스 데이터들 주변에 있는 소수 클래스 데이터들의 거리를 활용. 가장 성능이 괜찮다고 알려진 NearMiss-2는 소수 클래스 3에 대하여, 다수 클래스의 관점에서 가장 먼 3개의 소수 클래스들까지의 평균 거리를 계산하여 가장 거리가 작은 데이터들을 비율에 맞게 남기고 나머지는 삭제한다.
(4) SMOTE: k개의 가까운 이웃들을 선택하고, 수식을 이용해 새로운 샘플의 위치를 구하여 그렇게 sample을 추가해내는 기법으로, 단순 random sampling의 문제를 보완했지만, 데이터가 생성되면서 overlapping으로 인한 dicision boundary 설정의 어려움이 뒤따른다.
(5) Borderline-SMOTE: 소수뿐만 아니라, 다수 클래스의 데이터들도 고려하여 주변의 neighbors가 다수 클래스로 주로 이루어진 경우에만 새로이 데이터를 생성하는 것이다. 이 경우, 'DANGER'라는 칭호와 함께 border에 가까운 소수 클래스의 데이터에 대해서만 새로운 데이터를 생성하는 것이다.
(6) ADASYN: 마이너 클래스의 컨셉별 데이터들에 대해 각각의 분포에 따라 다른 양의 데이터를 합성해내는 기법.
- 소수 클래스 전체에 대해서 얼마나 많은 새로운 데이터를 합성할지 결정
- 유클리드 거리를 계산하여 k-nearest neighbors 구함(defined as Gamma)
- 각각의 x(i)들에 대해서 얼마나 데이터를 생성할지 결정
->> Gamma function을 활용하여 자동으로 생성할 데이터의 개수를 결정지어, 각 소수 sample마다의 가중치를 반영하는 것으로 이해할 수 있다.
(7) Data cleaning techniques
- Tomek link: overlapping되는 데이터들을 없애주어, decision boundary를 명확하게 하는 기법. SMOTE를 적용한 후, 사용하면 분류 성능이 높아진다고 제시함.
- 다수/소수 클래스의 데이터들 중 가장 가까운 것들끼리 pair를 형성시키고, 해당 link의 개체들을 없애주는 것.
(8) Cluster-based sampling(CBO)
- within-class imbalance problem과 between-class imbalance problem을 모두 해결할 수 있음.
(9) sampling + boosting: SMOTEBoost(소수 클래스에 좀 더 집중하여 학습), DataBoost-IM(데이터 생성에 초점. 학습이 어려운 클래스에 대해 좀 더 많은 개체 생성), JOUS-Boost(SMOTE의 단점을 보완. random direction으로 oversampling 진행)
: misclassification의 cost를 계산하며 학습을 해 나가는 방식
- 소수 클래스의 misclassification이 더 큰 penalty 가짐
- Cost-sensitive learning framework
(1) misclassification cost를 data set에 적용하여 가중치 부여
(2) cost-sensitive classifier를 만들어내는 앙상블 기법
(3) cost-sensitive한 feature와 function을 직접적으로 연결
Ex.
- Adaboost: 각 iteration이 끝날때마다, 예측값과 타겟값을 비교하여 값이 차이가 나는 경우 다음 학습에 있어 가중치를 주어 학습률을 높이는 방법. 이에 cost factor C를 적용하여 AdaC1~C3로 나누어짐.
- Adacost: 분류가 잘 된다면, 더 작은 가중치. 분류가 잘 되지 않는다면, 더 큰 가중치를 부여. cost-adjustment function 사용.
- Cost-sensitive Decision Trees: decision threshold 결정 시, misclassification cost 고려.
- Cost-sensitive neural network
(1) test 단계에서 cost factor를 적용하여 output 확률 변화
(2) misclassification cost가 비싼 데이터에 집중하여 학습
(3) costly data 학습 시에, 더 작은 학습률을 적용하여 해당 개체 학습을 더 오래할 수 있도록
(4) error-minimizing이 아니라, expected cost minimizing function으로 접근
- SVM: 대표적으로 robust classification을 제공하는 것으로 알려져 있다. 하지만, imbalanced data에 적용할 시 몇 가지 문제점을 야기한다. two-class 문제에서 ideal seperation은 비교적 다수 클래스 근처에 형성되어, 상대적으로 소수 클래스는 해당 line에서 멀어지게 된다. 또한, support vector의 대표점에 있어 불균형이 존재하면 성능이 저하되는 경향이 있다.
이를 해결하고자, kernel-based method는 소수 클래스도 다수 클래스처럼 인식하는 전략을 사용하고자 한다.
- Integration of Kernel-based Method with Sampling Method
(1) SMOTE with Different Costs(SDCs) method: SDC는 다른 클래스들에 대해 다른 error cost를 적용시켜 decision boundary를 이동시킨다. 궁극적으로, 보다 완벽한 boundary를 형성해낸다.
(2) GSVM-RU: integrate SVM learning with undersampling methods.
- Active learning method: 라벨링 되지 않은 training data를 학습하는 기법. 가장 informative한 개체를 선택하여 SVM을 재학습시킨다. 전체 데이터셋에 대해서가 아니라, small pool에 대해서만 각 iteration에서 query를 날린다. 이를 반복하여 새로운 training set을 만들어낸다.
- Accuracy(단순 정확도): (TP + TN) / (P(c) + N(c)) Error Rate: 1 - accuracy
-> 불균형이 심한 클래스의 데이터의 경우는, 정확도는 매우 불안정한 지표
- Precision: TP / (TP + FP) Recall: TP / (TP + FN) -> 각각의 개별 사용 시, Precision은 얼마나 많은 negative 데이터가 잘못 분류되었는지 판단 불가 & Recall은 얼마나 많은 positive 데이터가 잘못 분류되었는지 판단 불가
- F1 Score: 이를 보완하는 지표이지만, 데이터의 분포 반영 불가
- G-Mean metric: evaluates the degree of inductive bias in terms of a ratio of positive accuracy and negative accuracy
- 좌상향을 띨수록 성능이 좋은 분류기로 판별한다. 극심한 imbalance 데이터에 대해서도 대체적으로 긍정적인 결론을 얻을 수 있다.
- ROC Curve는 imbalnce 데이터에 대해 전반적으로 긍정적인 결과를 보여준다.
- PR Curve: 데이터가 극심하게 skewed인 경우, ROC Curve가 갖는 한계점(낙천적인 시각화)를 극복하고자 하는 방법.
precision rate와 recall rate 간의 rate로 정의된다. PR Curve에서 성능이 좋게 나타나는 분류기는 거의 대부분 ROC Curve하에서도 좋은 성능을 보인다.
- Cost Curve: ROC Curve가 갖는 또 다른 문제점 -> 분류기 성능에 대한 신뢰 구간을 구할 수 없음, 통계적 추론이 불가능함. 따라서, 분류기 간의 성능을 비교할 지표가 필요함.
(1) Understanding the Fundamental Problems: imbalanced 데이터에 대한 가정, general error 등 본질적인 질문에 대해 답할 수 있는 미래가 되어야 한다.
(2) Need of a Uniform Benchmark Platform: 잘 조직되고 공용적으로 사용가능한 벤치마크는 훗날 imbalanced learning에 큰 도움이 될 것이다.
(3) Incremental Learning from imbalanced Data Streams: 현실의 조류에 맞게, 증가하고 누적되어가는 데이터의 특성 상, 그에 맞는 새로운 접근에 대한 탐구가 꼭 필요하다.
(4) Semisupervised Learning from Imbalanced Data: 일반적인 ML 문제와는 다르게 imbalanced set에 대해서는 semisupervised learning 또한 다르게 생각하여야 한다. labeled, unlabeled data가 주어졌을 때, 어떠한 방식으로 그 분포를 찾을 수 있으며, unlabeled data example를 밝혀내는 가장 효과적인 방법론에 대한 탐구가 필요하다.
댓글 영역