정확성(Accuracy)

정확성은 분류 모델 평가를 위한 측정항목 중 하나 입니다. 정확성은 일반적으로 다음과 같이 정의합니다.



앞에서 다룬 이진 분류에서는 다음과 같이 양성과 음성을 기주으로 정확성을 표현 할 수도 있습니다.



클래스 불균형 데이터 세트(Class Imbalanced Data Set)

악성으로 분류된 종양(Positive Class) 또는 양성으로 분류된 종양(Negative Class)을 예로 들어 모델 100개의 정확성을 계산해 보겠습니다.




위의 정확성 계산에 따르면 91%라는 높은 정확성을 나타내는 것을 확인할 수 있습니다. 하지만 정말 이 모델이 좋은 모델일까요?


모델은 양성 종양 91개 중 90개를 양성으로 정확히 식별합니다. 하지만 악성 종양 9개 가운데 1개만 악성으로 식별합니다. 악성 종양 9개 중 8개가 미확진 상태로 남았다는 것은 정말 형편없는 예측 결과 입니다.


이와 같이 클래스 불균형 데이터 세트(Class Imbalanced Data Set)를 사용하면 양성 라벨 수와 음성 라벨 수가 상당히 다르므로 정확성만으로 모든 것을 평가 할 수 없습니다.

이번 포스트에서는 분류 작업에 로지스틱 회귀를 사용하는 방법과 분류 모델의 효과를 평가하는 방법에 대해서 알아보겠습니다.


로지스틱 회귀 모형에서 특정 이메일에 관해 스팸일 확률이 0.95가 반환 되었다면 이 이메일은 스팸일 가능성이 매우 높은 메일로 예측 할 수 있습니다. 이와 반대로 동일한 로지스틱 회귀 모형에서 예측 점수가 0.03인 이메일이라면 이 이메일은 스팸이 아닐 가능성이 높습니다.


그렇다면 만약 스팸이 확률이 0.6인 이메일은 어떻게 처리해야 할까요?


임계값(Threshold)

우리는 이렇게 애매한 값을 이분법으로 확실히 분류를 할 기준이 필요로 합니다. 이 기준을 바로 임계값(Threshold)라고 합니다. 로지스틱 회귀 값을 이진 카테고리에 매핑(Mapping)하려면 분류 임계값(Classification Threshold, 결정 임계값이라고도 함)을 정의해야 합니다.


임계값보다 높은 값은 '스팸'을 나타내고 임계값보다 낮은 값은 '스팸이 아님'을 나타냅니다. 분류 임계값은 항상 0.5여야 한다고 생각하기 쉽지만 임계값은 문제에 따라 달라지므로 값을 조정해야 합니다.



참(True)과 거짓(False), 양(Positive)과 음(Negative)

이솝 우화를 통해 발생할 수 있는 4가지 결과를 요약해 보도록 하겠습니다. 



위의 내용에서 다음과 같이 정의해 보겠습니다.

  • "늑대다"는 양성 클래스(Positive Class)라 하겠습니다.
  • "늑대가 없다"는 네거티브 클래스(Negative Class)라 하겠습니다.

'늑대 예측' 모델에서 발생할 수 있는 4가지 결과를 요약하면 다음과 같이 2X2 혼동행렬(Confusion Matrix)을 사용해 나타낼 수 있습니다. 


  • 참양성(True Positive)는 모델에서 Positive Class정확하게 평가하는 결과입니다. 마찬가지로 참음성(True Negative)은 모델에서 Negative Class정확하게 평가하는 결과입니다.
  • 거짓양성(False Positive)는 모델에서 Positive Class잘못 예측한 결과입니다. 거짓음성(False Negative)은 모델에서 Negative Class잘못 예측한 결과 입니다.


혼동행렬이란, 라벨과 모델의 분류 사이의 상관관계를 요약한 NxN 표입니다. 혼동행렬의 축 중 하나는 모델이 예측한 라벨이고, 다른 축은 실제 라벨입니다.


앞서 우리는 선형 회귀를 통해 주어진 데이터가 연속적인 값일 경우 하나의 선으로 회귀시키는 예측 모델을 만들었습니다. 그런데 만약 주어지는 데이터가 범주형이거나 특정 분류로 나눠지는 데이터일 경우 어떻게 해야 할까요?


예를 들어서 동전이 앞면이 나올지 뒷면이 나올지, 아니면 내일 비가 올지, 맑을지, 구름이 낄지 등과 같이 수량이 아닌 확률과 같은 범주형으로 데이터가 주어지는 경우 처럼 말이죠.


이때 사용하는 방법이 바로 로지스틱 회귀(Logistic Regression)입니다.


로지스틱 회귀(Logistic Regression)

로지스틱 회귀법은 주어진 데이터가 1, 2, ..., 100 처럼 연속적인 값이 아닌, 동전이 앞면이 나올 확률, 내일 비가 올 확률과 같이 특정 분류로 나누어 지거나, 확률적으로 나타나는 데이터를 하나의 선으로 회귀 시켜 예측 모델을 만드는 방법입니다.


어떤 강아지가 밤에 짖는 확률은 로지스틱 회귀 모델로 아래처럼 표현 할 수 있습니다.


p( bark | night ) = 밤에 강아지가 짖을 확률


우리는 로지스틱 회귀를 통해 반환된 확률을 두 가지 방법으로 사용할 수 있습니다.

  • 반환된 확률을 있는 그대로 사용
    => p( bark | night ) = 0.05 라고 가정하겠습니다. 우리는 이 정보를 통해 1년에 강아지가 얼마나 짖는지를 로지스틱 회귀 값을 그대로 사용하여 알아 낼 수 있습니다. (p( bark | night ) * 365 = 0.05 * 365 = 18)

  • 반환된 확률을 이진 카테고리로 변환하여 사용
    => 내일 비가 온다/안 온다와 같이 Yes or No의 형태로 매핑(Mapping)하여 사용할 수 있습니다.

시그모이드 함수(Sigmoid Function)

로지스틱 회귀 모델 결과 값이 어떻게 항상 0 과 1 사이의 값으로 나타나는지 궁금할 수 있습니다. 이는 아래와 같이 정의된 시그모이드 함수로 인해 0과 1사이의 값을 출력해 냅니다.


  • y: 특정 예에 대한 로지스틱 회귀 모델의 출력

  • z: b + W1X1 + W2X2 + ... + WnXn    (b: 편향(Bias), w: 모델이 학습된 가중치(weight), x: 특정 값(Feature))

시그모디으 함수의 그래프는 다음과 같이 S자 모양으로 나타납니다. 실제로 많은 자연, 사회현상에서는 특정 변수에 대한 확률값이 선형으로 나타나지 않고, S자 커브 형태로 나타나는 경우가 많습니다.



로그 손실(Log Loss)

로그시틱 회귀 모델에서의 손실 함수는 로그 손실(Log Loss)로 다음과 같이 정의 됩니다.


  • (x,y) ∈ D: 라벨이 있는 예(x, y 쌍)가 많이 포함된 데이터 세트

  • y: 라벨이 있는 예의 라벨(로지스틱 회귀이므로 y 값은 모두 0 또는 1)

  • y': x의 특성 세트에 대한 예측 값(0 ~ 1 사이의 값)


+ Recent posts