로지스틱 회귀(Logistic Regression) - 이진 분류
목차
- Step1. 이진 분류(Binary Classification)
- Step2. 시그모이드 함수(Sigmoid function)
- Step3. 비용 함수( Cost function)
Step 1. 로지스틱 회귀(Logistic Regression) - 이진 분류(Binary Classification)
해당 개념은 Deep Learning, ANN의 근간이 되는 가장 중요한 개념이다.
Binaray Classification
둘 중 하나의 정해진 category 중에 하나를 결정하는 경우 쓰이는데, 예를 들면 시험 점수가 발표되었을 때 해당 점수가 합격인지 불합격인지, 국가대표 축구 경기에서 어느 팀이 승리할지 패배할지에 대해서 궁금할때 쓰이는 문제를 이진 분류(Binaray Classification) 라고 한다. 이런 경우에 알고자 하는 결과인 종속변수 $Y$는 범주형 변수라고 칭한다
앞서 선형 회귀 모델에서 공부했던 개념을 떠올려 보자. 우리는 주어진 데이터로부터 가중치 $W$와 편향 $b$를 찾아 데이터를 가장 잘 표현하는 직선을 찾아냈다. 그러나 이진 분류 문제에서는 직선으로 표현하는 것이 적절하지 않다.
예시를 들어보자. $X$를 나이, $Y$를 암 발생여부(1이면 발병, 0이면 정상)인 데이터가 주어졌을때 이를 앞선 회귀모델 방식으로 구축하고 그래프를 그리면 아래와 같은 이상한 모습을 보인다.
위와 같은 문제가 발생하는 이유는 종속변수($Y$), 앞서 말했던 범주형 변수의 성질 때문이다. 위 문제를 풀기 위한 대표적인 알고리즘이 바로 로지스틱 회귀(Logistic Regression) 가 존재한다.
그렇다면 종속변수 $Y$ 를 암 발생유무(0,1)로 표현하는 것이 아닌 발생 유무에 대한 확률로 표현을 하게 되면 어떻게 그려질까? e.g. $Y$ 가 1을 가질 확률( 암에 걸릴 확률 )
보통 특정 변수에 대한 확률값은 선형이 아닌 S-커브 형태를 따른다. 이러한 0과 1사이의 값을 가지며 S-커브 형태로 그려지는 조건을 충족하는 함수를 시그모이드 함수(Sigmoid function)이라 한다.
Step 2. 시그모이드 함수(Sigmoid function)
시그모이드 함수의 방정식은 아래와 같으며 해당 문제를 풀기 위한 가설(Hypothesis)식이기도 하다. σ로 축약해서 표현이 가능하다.
$H(X) = \frac{1}{1 + e^{-(Wx + b)}} = sigmoid(Wx + b) = σ(Wx + b)$
여기서 구해야 하는 값은 주어진 데이터에 가장 적합한 가중치 $W$와 $b$를 구하는 것이다.
그럼 위 수식을 그래프로 표현해보자 ($W$ = 1, $b$ = 0)
해당 그래프를 통해 알 수 있는 것은 $x$값으로 어느 값이든 받을 수 있지만 출력 결과는 항상 0에서 1 사이 값이며 $x$가 증가하면 1에 수렴하고 감소하면 0으로 수렴하는 S-커브 형태임을 확인할 수 있다.
최종 확률값(예측값)이 0.5보다 크면 1로 예측, 0.5보다 작으면 0으로 판단하는 이진 분류 문제로 사용할 수 있다. 0.5는 이진 분류를 위한 기준값(threshold)이고 일반적으로 0.5라고 설정한다.
Step 3. 비용 함수(Cost function)
앞선 회귀 모형에서 비용 함수는 MSE(평균 제곱 오차)를 사용했다. 그러면 시그모이드 함수에도 MSE를 똑같이 사용하면 될까? cost와 시그모이드 함수 $W$의 관계를 그래프로 표현해보자
응? 뭔가 이상하다.
로지스틱 회귀에서 MSE를 비용 함수로 사용하여 경사 하강법을 적용하면 찾고자하는 최소값이 아닌 잘못된 최소값으로 빠진다. 전체 함수에 거친 최소값을 글로벌 미니멈(Global Minimum)이 아닌 특정 구역에서의 최소값인 로컬 미니멈(Local Miniumum)에 도달할 수 있기 때문이다. 이는 cost가 최소가 되는 가중치 $W$를 찾는다는 비용 함수의 목적과 맞지 않는다
그렇다면 우리는 시그모이드 함수에 적합한 새로운 비용 함수를 찾아야 한다.
$J(W) = \frac{1}{n} \sum_{i=1}^{n} cost\left(H(x^{(i)}), y^{(i)})\right)$
위 식에서 $J$는 목적함수를 의미한다. 현재 목적 함수는 전체 데이터에 대해서 cost 함수의 평균을 계산하고 있다. 즉 예측값과 실제값의 차이를 나타내는 cost 평균을 최소화 시키는 $W$를 찾아내는 목적 함수이다.
시그모이드 함수에서는 실제값이 0일 때, 예측값이 1에 가까워지면 오차가 커지며, 실제값이 1일 때, 예측값이 0에 가까워지면 오차가 커짐을 의미한다. 그리고 이를 반영하는 함수를 로그 함수를 통해 표현이 가능하다.
$\text{if } y=1 → \text{cost}\left( H(x), y \right) = -\log(H(x))$ $\text{if } y=0 → \text{cost}\left( H(x), y \right) = (1-\log(H(x)))$
두 식을 그래프 상으로 표현하면 아래와 같다. 실제값이 1일 때가 파란색, 실제값이 0일 때가 빨간색 선이다.
즉, 빨간색 경우에는 $H(X)$ 예측값이 0으로부터 멀어질 수록 cost 값이 증가하고, 파란색 경우에는 예측값이 1로 부터 멀어질 수록 cost값이 무한히 발산한다. 이를 다음과 같이 하나의 식으로 표현하면 아래와 같다.
$\text{cost}\left( H(x), y \right) = -[ylogH(x) + (1-y)log(1-H(x))]$
실제값이 1일 경우엔 뒤에 항이 없어지고, 0일 경우에는 앞에 항이 없어진다. 결과적으로 로지스틱 회귀의 목적함수는 아래와 같다.
$J(W) = -\frac{1}{n} \sum_{i=1}^{n} [y^{(i)}logH(x^{(i)}) + (1-y^{(i)})log(1-H(x^{(i)}))]$
이때 로지스틱 회귀에서 찾아내는 비용 함수를 크로스 엔트로피 함수(Cross Entrophy)라고 한다. 그리고 가중치를 찾기 위해서 크로스 엔트로피 함수의 평균을 취한 함수를 사용한다.
또한 크로스 엔트로피 함수는 소프트 맥스 회귀의 비용 함수이기도 하기므로 다음 소프트 맥스를 다룰 때 공부해보자.
참고자료
https://wikidocs.net/22881 [http://hleecaster.com/ml-linear-regression-concept/] https://ratsgo.github.io/machine%20learning/2017/04/02/logistic/