Posts List

[Data Mining] 6. Classification - 개론


분류분석은 회귀문제와 유사하지만 Y가 categorical 종속변수인 문제를 분석하는 것이며, X로부터 Y를 분류하기 위한 규칙을 찾는 것이다. 본격적으로 분류 알고리즘의 종류, 각 알고리즘의 특징을 배우기에 앞서, 분류분석의 개념과 대표적인 알고리즘들의 컨셉을 소개하도록 한다.

분류분석의 개념


분류문제의 변수는 다양한 변수가 올 수 있다. 위 예제를 보면 성별과 브랜드는 남 vs. 여, A vs. B로 표현되는 이분형(binary)변수이고, 나이는 연속형(continuous) 변수로 주어진다. 그 중 Y값(label)에 해당하는 변수가 범주형일 떄 분류모형을 활용할 수 있다.

분류문제의 목적은 학습표본으로부터 분류규칙을 찾는 것이다. 위 예제에서는 성별과 나이정보를 통해서 A브랜드를 선호할지 혹은 B브랜드를 선호할지 그 규칙을 찾는 분류문제라 할 수 있다. 그리고 그 규칙을 잘 찾았다면 성별이 M이고 나이가 50세인 새로운 표본이 어떤 브랜드를 선호할지 예측할 수 있을 것이다. 

분류문제에 대한 정의는 위 예제로 충분한 것 같고, 그럼 대표적인 알고리즘으로 어떤 것들이 있는지 알아보자.


분류모형의 예

k-Nearest Neighbor Method (k-NN : k-인접객체법)

사실 K-NN은 분류모형의 한 종류이지만, 분류규칙을 찾는 것은 아니다. 위 그림처럼 새로운 샘플(red)이 주어졌을 때 주변의 k개 sample을 관찰하고 더 많이 관찰된 class로 adaptive하게 예측하는 방법이다. 여기서 관찰할 sample 수인 k가 하이퍼파라미터이고, 위 예제에서는 k=3이라면 보라색, k=6이었다면 노란색 class로 분류될 것이다. 가장 가까운 샘플 k를 선택하기 위해 유클리드 거리(Euclidean distance)를 주로 사용하며, 아래는 k-NN알고리즘의 동작 순서이다.

  • 단계1. k를 정한다
     : 주로 홀수를 정한다. 동일한 갯수의 class가 관찰되는 경우를 방지하기 위해
  • 단계2-1. 관측치 z와의 거리 d(z, xi)를 산출한다
  • 단계2-2. 가장 거리가 짧은 샘플 k개를 뽑는다.
  • 단계3. k개의 범주 중 최빈값을 z의 범주로 정한다.

Naive Bayesian (나이브 베이지안)

Bayes Rule에 기반한 분류 기법이며, 단순한 가정을 활용(Naive)하는 원리다. 특히 속성변수들이 연속형이 아닌 범주형일 때 주로 사용된다.

※ Bayes Rule은 AI 수업에서 상세히 다루었기 때문에 자세한 내용은 생략한다. 

※ Bayes' Rule : 사후확률(posterior) ∝ 사전확률(prior) * 조건부 확률분포(likelihood)

나이브 베이지안에 나이브(Naive)는 단순한, 순수한과 같은 weak한 의미를 갖는데, 그 이유에 대해서 알아보자. 

Bayes Rule에서는 각 사건의 확률과 조건부 결합 확률(likelihood)이 주어지면 위의 그림과 관계를 갖는다고 말한다. 다만 AI 수업에서도 다루었듯 사후확률(posterior)를 구하는 것은 매우 어려운 일이고, 그렇기 때문에 각 사건(x1, x2..)는 P(y)가 주어졌을 때 조건부 독립(conditional independence)이라는 가정을 주로 하게 된다. 이 가정을 활용하는 것이 바로 나이브 베이지안이다.


위 예제를 보면 쉽게 나이브 베이지안의 원리를 이해할 수 있다. 

  • y의 사전확률(prior)는 sample의 분포에 따라 각각 5/9, 4/9로 주어졌다. → P(Y=1), P(Y=2)
  •  Y=1일때 X1=M, X2=20대일 확률 등 likelihood를 구한다. → P(Y | X1, X2)
  • 이제 prior과 likelihood가 모두 구해졌으며, Bayes rule에 따라 사후확률(posterior)을 구할 수 있다. 
  • 새로운 샘플이 들어오면 사후확률이 높은 쪽으로 분류(예측)한다.

분류성능평가

분류모형은 예측결과가 연속적인 값이 아니라 확률로 도출되기 때문에 R-square나 MES가 아닌 다른 평가지표를 사용한다.

1. confusion matrix

confusion matrix는 대부분의 라이브러리에서 모델 생성 후 자동으로 도출해줄 만큼 보편적이며 직관적인 분류모델 평가방법이다. 위 그림만 보더라도 굉장히 쉽게 이해할 수 있는데 처음 보는 사람은 헷갈릴 수 있으니 주의하자.

  • TP(True Positives) : Positives를 잘 예측(True)한 경우
  • TN(True Negatives) : Negatives를 잘 예측(True)한 경우
  • FP(False Positives) : Positive를 잘 못 예측(False)한 경우
  • FN(False Negatives) : Negatives를  잘 못 예측(False)한 경우

분류모형의 예측 결과를 위 4개 케이스로 구분 하였다면, 아래의 평가지표를 도출할 수 있다. (도출 식은 위 그림 참고)

  • 정확도(accuracy) : 전체적으로 얼마나 잘 분류했는가?
  • 민감도(sensitivity): 전체 positive 케이스 중 positive를 얼마나 잘 인식하였나?
    = 재현율(recall) = True Positive Rate
  • 특이도(specificity) : 전체 negative 케이스 중 negative를 얼마나 잘 인식하였는가?
    = True Negative Rate

  • 정밀도(precision) : 전체 positive 예측 결과중 실제 positive가 얼마나 포함됐는가?

  • Negative Predictive Value : 전체 negative 예측 결과중 실제 negative 가 얼마나 포함됐는가?

사실 TP / TN / FP / FN을 이용한 모든 조합 경우의 수에다가 이름을 붙여둔 것이기 때문에 모두 기억하기가 쉽지는 않다. 그리고 어떤 값이 절대적으로 모델의 성능을 대표하지 못한다.

예를 들어, 불량데이터(1)가 3개, 양품데이터(0)가 100개 이상이었다면, 불량데이터의 분류를 제대로 못하더라도 정확도(accuracy)는 높게 나올 수 있다. 이런 경우는 민감도(sensitivity)나 정밀도(precision)을 확인하는 것이 오히려 모델의 성능을 평가하는데 더 도움이 된다.

이와 같이 어떤 모델 평가지표를 사용할 것인지는 철저히 domain knowledge를 가지고 있는 사용자가 결정해야한다.

ex) 암의 유(1)무(0)를 예측하는 문제는 정확도 보다 민감도(sensitivity = positive를 positive로 잘 인식했는가?)가 더 중요하듯, domain knowledge를 가지고 모델을 평가하는 것이 중요하다.

2. ROC(Receiver operating characteristic) curve

위와 같이 confusion matrix에서 나온 지표를 활용해 분류모형을 평가하는 방법은 ROC, Precision Recall Plot, F-score등 다양하게 있는데, 가장 보편적으로 사용하는 ROC curve에 대해서만 알아보자.
※ Precision Recall Plot : ROC와 유사한데, label의 분포가 심하게 불균등 할 때 사용
※ F-Score : Precision과 Recall에 대한 가중평균 개념

  • x-axis : 1 - specificity = False Positive rate = 1 - TN/(TN + TP)
    (specificity) = True Negative rate : negative인데 negative로 적중한 비율
    (1 - specificity) = False Positive rate : negative인데 positive로 잘못 적중한 비율
  • y-axis : sensitivity = True Positive rate = TP/(TP + FN)

ROC curve는 위의 정의에 따라 그려지는데, 당연히 x값은 작을수록, y값은 클수록 좋다. 그러다 보니 좋은 모델은 ROC curve가 좌상단으로 휘어져 있는 특징을 가진다. 만약 ROC curve가 45˚로 직선이면 50:50의 확률을 갖는 모델이기 때문에 가장 좋지 않은 모델이라 할 수 있다.

즉, ROC curve가 위에 있을 수록 분류모형의 성능이 좋다고 판단하며, ROC curve 아래의 면적인 AUC(area under curve)를 성능 지표로 쓰기도 한다.


분류 성능 평가

분류 성능 평가방법은 여트 모델의 평가 방법과 같으며, 회귀모형을 설명할 때 다루었음으로 자세한 설명은 생략하도록 한다. [단순회귀 모델의 예측 성능 평가]

  • 대입법 : 모든 데이터를 훈련데이터(training set)와 평가데이터(test set)로 사용하는 방법
  • 테스트표본추정 : 전체 데이터를 학습데이터, 검증데이터로 나눈다. (통상 7:3 혹은 8:2) 학습데이터만 파라미터 추정에 관여하며, 검증데이터로 모델을 평가한다
  • 교차검증(cross validation) : 검증데이터를 교차로 설정하면서 여러번 평가하는 방법.


Imbalanced Data(불균형데이터)



만약 label 데이터가 매우 불균형한 분포를 가지고 있다고 가정해보자. 예를 들면 정상인 데이터가 95%, 불량인 데이터가 5%만 있는 경우이다. 이 경우 모델과 상관없이 항상 정상이라고만 예측해도 95%를 예측할 수 있다. 이런 불균형 데이터의 경우 모형을 학습하기도, 도출된 모형으로 예측하기도 어렵고, 위에서 언급한 성능평가지표로 판단하기도 굉장히 어렵다. 즉, 이런 경우는 총체적 난국을 일으킬 수 있음으로 불균형 데이터를 균형있게 변형시킬 필요가 있다.

1. 단순기법 

위와 같은 현상을 가장 쉽게 해결할 수 있는 것은 데이터수를 동일하게 맞춰 주는 것이다. 데이터 수를 맞추기 위해서는 아래와 같이 적은 데이터를 늘리거나 많은 데이터를 줄이는 방법이 있다.

  • over sampling : 부족한 class의 데이터 수를 임의로 많이 sampling 한다.
  • under sampling : 많은 class의 데이터 수를 임의로 조금 sampling 한다.

2. Synthetic sampling

다만, 앞서 설명한 것 처럼 random하게 oversampling 한 경우, 중복 선택된 특정 데이터에 과적합(overfitting) 될 수 있다. 그래서 데이터를 인공적으로(synthetic)합성시켜서 아래의 방법으로 새로운 sample을 생성하기도 한다.  

  • SMOTE : minority class 객체들 사이에 위치하는 새로운 minority 샘플을 생성한다.
    (Synthetic Minority Over-sampling Technique)

  • ADASYN : SMOTE를 기반으로 oversampling 하되, 주변 데이터의 분포를 고려해서 minority 샘플을 생성한다.
    (Adaptive Synthetic)

3. Boosting approaches

앙상블 기법중 boosting 기법으로 불균형 데이터의 적합도를 높일 수 있는데, 추후 앙상블 챕터에서 자세히 다루기로 한다.


댓글 쓰기

0 댓글