위의 그림에서 보면 (a)는 공부 시간이 증가함에 따라 점수도 선형적으로 증가하는 모습을 볼 수 있다. 반면 (b)는 일정 점수를 기준으로 합격과 불합격이 나뉜다. 이런 (b)의 경우에서는 직선보다 S자형 곡선이 X와 Y의 관계를 더 잘 설명하는 것처럼 보인다.
(b)처럼 합격, 혹은 불합격의 두 가지로 나뉘는 변수를 이진형(binary) 변수라고 한다. 병 진단의 경우에도 음성과 양성의 이진형 변수로 구성되는 경우가 많다. 이렇게 이분법적으로 나누는 경우에 연속적인 수치에 적합한 선형 회귀 방식으로는 그 결과를 예측하기가 어렵다. 따라서 새로운 방식의 모형이 필요하다.
선형 회귀의 방식에서는 다음과 같은 식을 구할 수 있었다.
X : 공부 시간, Y : 합격/불합격에 대한 변수 (합격 = 1)
위의 식에 따르면 X(공부 시간)가 1시간 증가했을 때 합격할 확률은 𝛽1만큼 증가한다. 여기서 문제점이 두가지가 있는데 하나는 scale(coverage)와 관련한 수학적 문제이고, 다른 하나는 강도(power)와 관련한 개념적 문제이다.
1. Scale 의 문제
이 문제는 P(Y=1)을 구하는 확률의 문제이다. 확률은 0에서 1사이의 값을 갖는다. 여기서 𝛽0과 𝛽1은 모두 실수이고 공부 시간 X는 무한대로 커질 수 있다. 혹은 𝛽0 < 0 이고 X=0 시간일 때 음수의 확률이 나올 수 있다. 그렇게 되면 P(Y=1)을 구하는 식의 양 변의 범위가 크게 다르게 된다. 즉, P(Y=1)은 0과 1 사이의 값을 가지는 반면, 𝛽0 + 𝛽1X는 -∞에서 ∞까지의 값을 가질 수 있다. 이는 수학적인 오류가 될 수 있다.
2. Power(강도)의 문제
A : (합격 확률) 0.7 / (불합격 확률) 0.3
B : 0.55 / 0.45
위와 같은 합격 확률을 가진 A와 B 두 사람이 있을 때, 둘 다 합격할 가능성이 불합격할 가능성보다 크다. 하지만 얼마나 좋은지는 알 수 없다. 이 때 사용되는 개념이 강도인데, A의 경우 0.7 / 0.3 = 2.3배 이고 B의 경우 0.55 / 0.45 = 1.2배 이다. 따라서 상대적 강도는 A가 B의 약 2배만큼 좋다고 할 수 있다. 이런 경우 비교를 통해서 A의 합격 가능성은 높고 B의 가능성은 낮다고 말해줄 수 있어야 하는데 상대적 강도만으로 이렇게 확정지어 말하기에도 무리가 있다.
우리는 수학적으로 접근하여 먼저 scale의 문제를 해결하기 위한 방법을 생각해냈다.
Odds (승산)
위의 그림 (b)에서 합격에 대한 확률을 p라고 했을 때 odds는 아래와 같이 표현된다.
이는 즉 성공 확률 / 실패확률 의 값이다. odds는 성공 확률이 실패 확률보다 몇 배인지 판단할 수 있는 지표이다. 예를 들어 성공 확률이 0.5인 경우는 실패 확률 역시도 0.5가 되기 때문에 odds = 1 이 된다. 혹은 성공 확률이 0.8인 경우 실패 확률은 0.2가 되어 odds = 4가 된다.
odds를 이진형 변수를 예측하는 회귀 모형에 적용해보면 아래와 같다.
이 때 p / (1-p) 는 0 이상의 범위를 갖고 p가 1에 수렴하면 1/0이 되기 때문에 ∞의 값까지의 범위를 표현할 수 있다. 예측 결과가 odds값 1을 기준으로 1보다 크면 합격, 1보다 작으면 불합격의 형식으로 판단할 수 있다. 하지만 좌변은 0 부터 ∞까지를 표현할 수 있고, 우변은 -∞에서 ∞까지 표현할 수 있다는 점에서 여전히 아쉬움은 있다.
Odds 범위의 확장 (로지스틱 회귀의 완성)
그렇다면 odds가 표현할 수 있는 범위를 -∞까지 확장시킬 수 있는 모형을 만들어보자. odds에 log를 취하면 간단하게 만들 수 있다. (여기서 log의 밑(지수)는 e이다.)
log 함수는 0부터 ∞까지의 값을 정의역으로 사용하는 함수인데 odds가 표현할 수 있는 값이 딱 로그 함수의 정의역 범위와 일치한다. 또한 log 함수의 치역은 -∞부터 ∞까지 표현되어 우리가 의도한 대로 -∞까지 값을 확장할 수 있다.
위와 같이 odds 에 log를 취해준 형태를 종속변수로 활용한 모형을 로지스틱 회귀(Logistic Regressions)라고 한다.
우리가 궁극적으로 구하고자 하는 건 합격 확률 p이기 때문에 로지스틱 회귀 모형을 p에 대해 정리해보면 다음과 같다. 이를 시그모이드 함수라고 하며, S자 커브를 가진 함수가 된다.
위에서 봤던 (b)는 이런 식을 가질 수 있고 일반화 하게 되면 다음과 같다.
로지스틱 회귀에서도 역시 𝛽값을 추정해야 하는데 이때 최대 우도 추정법(Maximum likelihood estimation, MLE)를 사용하게 된다. 선형 회귀에서는 𝛽값을 OLS(Ordinary least squares, 정규방정식) 방법으로 해본 적이 있는데 선형 회귀에서도 MLE를 통해 𝛽값을 구할 수 있다. 선형 회귀와 로지스틱 회귀에서의 𝛽값의 추정 차이점은 선형 회귀는 𝛽값에 정확한 해가 존재하지만 로지스틱은 정확한 해를 찾을 수 없다는 것이다. 로지스틱 회귀에서는 이를 보완하기 위해 기울기 하강과 같은 방법을 사용한다. (이 외에도 다양한 방법이 있다)
Threshold
이렇게 로지스틱 회귀를 이용해서 예측을 하게 되면 예측값으로는 0이나 1이 아닌 확률값이 나온다. 즉 어떤 수들은 0과 가깝게, 다른 수들은 1과 가깝게 나올 수 있다. 하지만 우리는 단순 확률로는 예측 성능이 얼마나 뛰어난지 혹은 제대로 예측했는지 등을 알 수 없다. 따라서 이런 확률들을 어떤 값을 기준으로 0과 1로 나눌 것인지 결정해야 한다. 이때 기준이 되는 그 값을 threshold라고 한다. 과연 어떤 threshold 값이 가장 최적화된 기준이 될까? confusion metrix가 가장 잘 맞는 값이 좋다. 이를 위해서 사용되는 방법들이 ROC curve와 AUC를 확인하는 방법이다.
성능 평가 지표 : ROC Curve & AUC (Area Under Curve)
위의 그림에서 보듯이 보라색 선에 가까울 수록 잘 분류가 된 것이라고 볼 수 있다. 다음 예를 보면 조금 더 이해가 쉬울 수 있다.
ROC curve는 위의 그림처럼 그릴 수 있는 것이다. 이렇게 성능 평가 지표도 존재함을 확인해 볼 수 있다.
머신러닝 시험을 보기 전에 이진형 변수의 예측을 다루는 KNN과 logistic regression의 성능에 대해 비교해 볼 예정이다. 관련해서는 조금 더 자세하게 시험이 끝난 후에 포스팅 해보려고 한다!
'TIL > 머신러닝' 카테고리의 다른 글
2021.10.9 TIL : [ML] 지도 학습 - Linear Regression (선형 회귀) (0) | 2021.10.09 |
---|---|
2021.10.6 TIL : [ML] 지도 학습 - Decision Tree (의사결정 트리) (0) | 2021.10.06 |
2021.9.21 TIL : [ML] 지도 학습 - Naive Bayes (0) | 2021.09.21 |
2021.8.29 TIL : [ML] 지도학습 - KNN(K-Nearest Algorithm) 알고리즘 (0) | 2021.08.29 |
댓글