필기) 2과목-08 데이터 전처리 - 변수처리 - 불균형 데이터 처리
S2-02 분석 변수 처리
1. 변수 선택
2. 차원축소
3. 파생 변수 생성
4. 변수 변환
5. 불균형 데이터 처리
[변수 개념, 유형]
- 변수(Feature) 개념
- RDBMS에서 속성, 열 이라고 부르는 것, 머신 러닝에서는 통계학의 영향으로 변수(Feature)로 사용
- 변수 유형
입력(X용) | 독립변수(Independent Variable), 변수(Feature), 속성(Attribute), 예측변수, 설명변수, 차원(Dimension), 관측치(Observation) |
출력(y용) | 종속변수(Dependent Variable), 라벨(Label), 클래스(Class), 목푯값(Target), 결과변수, 반응(Response)변수 |
- 샘플(Sample)
- RDBMS에서 레코드, 행 이라고 부르는 것
- 많은 Sample이 있을 때 보다 좋은 데이터 분석, 모델 생성이 가능함
- 과대적합을 방지하고 모델의 훈련 및 평가에도 도움이 됨
ex) 열은 키 몸무게 행은 한 사람의 데이터
5-1 불균형 데이터 분석 특징
- 불균형 데이터(Imbalanced data) 분석 특징
- 분류 데이터에서 분포가 더 높은 클래스를 더 예측하려고 하기 때문에 정확도는 높아질 수 있지만, 분포가 낮은 클래스의 재현율(Recall)이 낮아지는 문제가 발생할 수 있음
- 불균형 상태 그대로 머신러닝 모델을 통해 예측하게 된다면 과적합 문제가 발생할 수 있음
- 학습(Train) 데이터셋에서는 높은 성능으로 보이지만, 테스트 데이터에서는 예측 성능이 더 낮게 나올 가능성이 있음
- 데이터 클래스 비율이 차이가 나면 단순히 데이터가 큰 클래스를 선택할 가능성이 높아져 정확도가 높아지므로 모형의 검증이 어려워 짐
※ 정확도(Accuracy) : 전체예측에서 옳은 예측의 비율
※ 정밀도(Precision) : 예측값이 True인 것에 대해 실제 값이 True인 지표
※ 재현율(Recall, Sensitivity) : 실제 값이 True인 것에 대해 예측 값이 True인 지표
5-2 과대적합(Overfitting)
- 과대적합의 문제와 해결방법
- 주어진 샘플들의 설명변수와 종속변수의 관계를 필요이상 너무 자세하고 복잡하게 분석
- 샘플에 심취한 모델로 새로운 데이터가 주어졌을 때 제대로 예측해내기 어려울 수 있음
=> 학습시킨 데이터로 예측을 했을 때 정확도는 높게 나올 수 있으나 새로운 데이터로 예측했을 때 정확도는 현저히 낮음
- 해결 방법으로 Feature의 개수를 줄이거나, Regularization, Dropout을 수행하는 방법이 있음
=> 학습을 방해해서 학습의 결과를 일반적인 것으로 만들어낸다
※ 샘플 : 학습 데이터
※ Feature : RDBMS에서 속성, 열 이라고 부르는 것, 머신 러닝에서는 통계학의 영향으로 변수로 사용
※ Regularization : 규제, 회귀모델 중 릿지, 랏쏘와 같은 회귀 기술로 크기를 줄이거나 없애서 과대적합의 문제를 해결 L1, L2등
※ Dropout : 인공신경망에서 사용하는 용어로 노드 퍼셉트론들이 동작하지 못하도록 죽이는거
- Underfitting : 분류선이 초록과 빨간점을 정확히 구분하지 못했다 학습이 덜돼서 언더피팅이라 한다 => 정확도 많이 떨어짐
- Overfitting : 분류선이 초록과 빨간점을 굉장히 잘 맞추었으나 너무 복잡하게 구분되어있어 새로운 데이터가 들어왔을 때 예측이 더 어려울 수 있다
- Balanced : 좋은 예로 새로운 데이터가 들어왔을 때 구분이 쉽다
ex) 오버피팅의 예 강아지한테 너무 꼭 맞는 집, 강아지가 사용하기도 불편할 거고 다른강아지가 사용하지도 못함
5-3 불균형 데이터 처리 방법
- 분류 데이터의 불균형 데이터 처리 방법
- weight balancing : 학습 데이터의 loss 계산 시 적은 클래스에 더 큰 loss 값을 갖도록 하는 방법
=> 내가 학습을 잘 했느냐 못했느냐를 판단, 적은 데이터에 대해 패널티를 더 쎄게 준다는식으로 생각하기
※ loss : 손실
- 언더 샘플링
- 다수 클래스에 해당하는 데이터를 샘플링 하여 사용함(적은 class의 수에 맞춤)
- 데이터의 손실이 매우 크고, 때로는 중요한 정상 데이터를 잃게 될 수 있음
- 오버 샘플링
- 소수 클래스에 해당하는 데이터의 양을 늘려 클래스 간 비율을 적절한 수준으로 맞춤
- 정보가 손실되지 않는다는 장점, 새로운 테스트 데이터가 추가되면 모델의 결과가 나빠짐
- 복제된 관측치를 원래 데이터에 추가하면 과대적합이 초래될 수 있음
- 앙상블 : 같거나 서로 다른 여러 가지 모형들의 결과를 종합하여 최종적인 의사결정에 활용하는 기법
- Undersampling : 불균형 데이터를 적은 데이터 수에 맞춰서 예측
- Oversampling : 불균형 데이터를 많은 데이터 수에 맞춰서 예측
q1) 머신러닝 수행 시 학습 데이터가 불균형한 문제를 해결할 수 있는 방법에 대한 설명으로 올바르지 않은 것은?
1. 불균형한 문제를 해결하지 않으면 모델은 데이터 개수가 더 많은 클래스를 더 예측하려고 하기 때문에 정확도(Accuracy)는 낮아지고 분포가 작은 클래스의 재현율(Racall)은 높아진다
2. 언더 샘플링은 유의미한 데이터만을 남길 수 있다는 장점이 있지만, 정보가 유실된다는 단점이 있다
3. 오버 샘플링은 정보의 손실을 막을 수 있으나, 새로운 테스트 데이터가 추가되면 모델의 결과가 나빠진다
4. 불균형 상태 그대로 머신러닝 모델을 통해 예측하게 된다면 과대적합 문제가 발생할 수 있다
q2) 불균형 데이터를 분석하는 경우, 고려해야 할 사항으로 올바르지 않은 것은?
1. 데이터에서 각 클래스가 갖고 있는 데이터의 양의 차이가 큰 경우 언더샘플링, 오버샘플링, 앙상블 기법을 통해 불균형 데이터 처리를 수행해야 한다
2. 데이터 클래스 비율이 차이가 나면 단순히 데이터가 큰 클래스를 선택할 가능성이 높아져 정확도가 높아지므로 모형의 검증이 어려워진다
3. 개수가 더 많은 클래스를 더 예측하려고 하기 때문에 정확도는 높아질 수 있지만, 분포가 작은 클래스의 정밀도(Precision)가 급격히 낮아지는 문제가 발생할 수 있다
4. 트레인 데이터셋에서는 높은 성능으로 보이지만, 테스트 데이터에서는 예측 성능이 더 낮게 나올 가능성이 있다
q3) 불균형 데이터(imbalanced data)로 이진 분류모형을 만들 때 불균형을 해소하기 위한 방법으로 옳지 않은 것은?
1. 다수 클래스에 해당하는 데이터를 적은 수로 샘플링한다
2. 클래스의 임계값을 조절한다
3. 클래스마다 다른 가중치를 준다
4. 소수 클래스에 해당하는 데이터를 복제하여 양을 늘린다
A1) 1. 불균형한 문제를 해결하지 않으면 모델은 데이터 개수가 더 많은 클래스를 더 예측하려고 하기 때문에 정확도(Accuracy)는 낮아지고 분포가 작은 클래스의 재현율(Racall)은 높아진다
=> 불균형한 문제를 해결하지 않으면 모델은 데이터 개수가 더 많은 클래스를 더 예측하려고 하기 때문에 정확도(Accuracy)는 높아지고 분포가 작은 클래스의 재현율(Racall)은 낮아진다
A2) 3. 개수가 더 많은 클래스를 더 예측하려고 하기 때문에 정확도는 높아질 수 있지만, 분포가 작은 클래스의 정밀도(Precision)가 급격히 낮아지는 문제가 발생할 수 있다
=> 3. 개수가 더 많은 클래스를 더 예측하려고 하기 때문에 정확도는 높아질 수 있지만, 분포가 작은 클래스의 재현율(Recall)이 급격히 낮아지는 문제가 발생할 수 있다
A3) 2. 클래스의 임계값을 조절한다
=> 1번은 언더샘플링 4번은 오버샘플링
=> 분류 데이터의 불균형이 발생한 경우의 데이터 처리 방법에는 weight balancing, under sampling, over sampling, 앙상블 기법 등이 있다
What is an Imbalanced Data? How to handle imbalanced data in python?
In machine learning sometimes when we are solving classification types of problems, we see that one class has an accuracy of 95%(Class 1)…
medium.com
https://www.davidsbatista.net/blog/2018/08/19/NLP_Metrics/
Evaluation Metrics, ROC-Curves and imbalanced datasets
I wrote this blog post with the intention to review and compare some evaluation metrics typically used for classification tasks, and how they should be used depending on the the dataset. I also show how one can tune the probability thresholds for the parti
www.davidsbatista.net
https://www.kaggle.com/getting-started/157623
7 Simple Techniques to Prevent Overfitting | Data Science and Machine Learning
7 Simple Techniques to Prevent Overfitting.
www.kaggle.com
[출처] - EduAtoZ - Programming [빅데이터 분석기사 필기 2과목]