본문 바로가기
NLP

비정형 데이터 - Classifier_Basic

by 볼록티 2019. 12. 16.
728x90
반응형

 

이번장에서는 바이너리 분류 알고리즘인 로지스틱 회귀 모형과 뉴럴 네트워크와의 관계에 대해 알아본다. (ratsgo' blog(_ _)

 

 

1. Logistic Regression: class가 0과 1인 즉 바이너리한 라벨을 갖는 데이터를 통해 모형을 만들게 된다. 기존의 회귀모델에서 범주형 카테고리를 예측하는 것에 대한 한계점을 해결하기 위해 등장하였다. 수치형 자료만을 다루는 회귀분석 모델의 경우 범주가 수치일지라도 범주사이에 해당하는 값들이 아무런 의미를 지니지 않기 때문이라고도 말할 수 있겠다.

 

우선 기존의 회귀모델과의 차이점을 그래프를 통해 알아본다. 아래의 그래프는 종속변수에 범주 1과0이 각각 hot, cold로 주어지고, 입력벡터 $x$가 주어졌을 때 일반 회귀 모델로 그린 것이다. 아래의 그림처럼 빨간색과 파란색으로 분류를 시켜놓았는데, 이때 그 경계를 지금 0.5로 두었다. 그렇기 때문에 각 입력벡터 $x$에 대한 $\hat{y}$이 0.5를 기준으로 크냐 작냐에 따라서 hot, cold로 분류가 된다.

 

아래의 그림은 입력벡터가 2개 추가 되었다. 입력벡터가 조금 달라져서 회귀 직선이 달라진 것을 볼 수 있다. $\hat{y}$ 추정치가 0과 1사이로 나와야 하는데, 추정치가 음수 무한대, 양수 무한대 범위가 되어 버려서 회귀직선(초록색선)을 기준으로 경계값이 자꾸 변하게 되서, 아래와 같은경우는 추정치가 0.2만 넘어도 hot으로 분류를 해버리는 뭔가 정의롭지 못한 상황이 발생한다. 어쨌든 중요한건 0~1사이의 확률값으로 좀 나와줘야하는데, 0보다 작은(현재파란색제일왼쪽)값이나 1보다 큰(현재빨간색제일오른쪽)값이 등장해서 문제가 발생한다는 것이다.

 

 

 

 Odds, 승산이라고 하는 이 Odds는 로지스틱 회귀에 뼈대가 되는 아이디어라 한다.

 사회현상에서는 선형적인 현상보다는 선형이 아닌 S-커브형태를 띄는 경우가 많다고 한다. 이런 커브형태를 함수로 나타내는 것이 로지스틱함수다. 

 분야에 따라서 이 로지스틱 함수를 시그모이드 함수라고도 한다.

 

 로지스틱 함수는 $x$값으로 어떤 값이든 받을 수가 있지만 출력결과는 0,1의 바이너리 값이다. 이 말은 확률 밀도 함수(probability density function)요건을 충족시키는 함수라는 말이다. 식과 그래프는 아래와 같다.

 y의 값은 0오로지 과 1사이에서만 값을 가지게 구성되어 있는 것을 볼 수 있다.

 아래의 $x$에는 회귀 결과값을 곧바로 대입하면 된다.

 

 

Odds란 임의의 사건 $A$가 발생하지 않을 확률 대비 일어날 확률의 비율을 뜻하는 개념이다. 

만약 $P(A)$가 1에 가까울수록 승산은 오른다.

반대로 0에 가깝다면 승산은 내려간다. 

-> 승산이 커진다는 말은 $P(A)$ 확률이 커진다고 할 수 있다.

 

=> x축이 $P(A)$확률값을 나타내기 때문에 x값이 커질수록 y축 Odds값이 증가하는 것을 알 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 이항 로지스틱 회귀

 범주가 이항 형태인 분류를 하는 알고리즘. 종속 변수가 연속형 숫자가 아니라 범주일 때 사용한다. 

회귀식의 장점은 유지하면서! 종속변수 $Y$를 범주가 아니라(범주 1이 될)확률로 두고 식을 세워본다. 아래와 같다.

우변은 그대로 두고 좌변만 확률로 바꾼 것이다. 

위와 같은 식에서는 좌변의 범위는 0~1사이여야 하는데 좌변이 음의 무한대에서 양의 무한대 범위를 가지고 있기 때문에 식이 성립하지 않는 경우가 존재할 수 있다.

 그래서 식을 한번 더 바꿔서, 좌변을 승산(Odds)으로 설정을 해준 결과는 아래와 같다.

위의 식에서도 역시 양변의 범위가 서로 맞지 않는다. 좌변(승산)의 범위는 0에서 무한대의 범위를 갖지만 우변의 범위가 그대로 음의 무한대에서 양의 무한대이다.

 

 여기서 좌변(승산)에 로그를 취하면 로그 승산의 그래프는 아래와 같다.

 

로그 승산의 범위가 우변처럼 음의 무한대에서 양의 무한대가 되어서 좌변과 우변의 범위가 일치하게 되는 결과를 얻을 수 있다.

 

 

 

 

 

 

 

 

 

 

 

좌변(승산)에 로그를 취하였던 것을 식으로 쓰면 다음과 같다. 

위 식에서 회귀계수 벡터인 $\beta$의 의미. 예를 들어 입력벡터 $x$의 첫번째 요소인 $x_{1}$에 대응하는 회귀계수 $\beta_{1}$이 학습결과 2.5로 정해졌다고 치자! 그러면 $x_{1}$이 1증가할때마다 범주 1에 해당하는 로그 승산이. 승산이! 2.5가 커지게 된다.

 

 위 식을 입력벡터 $x$가 주어졌을 때, 범주가 1일 확률을 기준으로 정리하면 다음과 같다.

 ($x$가 주어졌을 때 범주1일 확률을 $p(x)$ 이라 하고, 위의 로그승산이있는 식에서 우변을 $a$로 치환하여 정리하였다.)

 

표식을 간결하게 하니 식도 간결한 모습을 띄게 되었다. 최종 전개를 $p(x)$에 대해서 정리를 한 결과 로지스틱 함수와 꼴이 같다.

 

중요한건 이제부터 시작이다.

 

이항 로지스틱 회귀의 결정 경계

회귀분석에서 범주를 못나눴던게 경계자체에 대한 개념이 없기 때문이었다. 바로 그 차이를 여기서 알아내자.

 위와 같은 이항 로지스틱 모델에 범주 정보를 모르는 입력벡터 $x$를 넣으면 범주1에 속할 확률을 반환해준다. 하지만 여기서 확률값이 얼마나 되어야 범주를 1로 분류를 할 것이냐 ?

우선 가장 간단한 방식은 다음과 같다. 범주가 0일 확률보다 크다! 그럼 입력벡터$x$는 범주 1이다. 라고 말하는 방법.

 

 

범주가 두 개 뿐이기 때문에 위 식 좌변을 $p(x)$로 치환하게 되면 아래와 같이 정리할 수 있다.

마찬가지로 $\beta^{T}x < 0$ 이면 범주 0으로 분류됩니다. 

그러므로 로지스틱모델의 결정경계(dicision boundary)는 $\beta^{T}x=0$인 하이퍼플레인(hyperplane)이 된다. 

입력벡터가 2차원인 경우의 시각화.

 

 

일반적으로 로지스틱 회귀는 두 클래스의 경계면을 학습한다고 말한다.

 

 

이제 저 경계면을 가장 잘 놓기 위해서 비용함수를 최소화 하는 과정을 알아야한다.

 

 

 

 

위 식을 통해 본다면 비용은 $(h_{theta}(x), y)$ 이며, 이를 최소화 해줘야한다. 비용을 그래프로 나타내면  아래와 같다.

빨간게 가설에 의한 값이고 초록색이 실제값이다. 이 때 두개의 차이점을 cost라고 한다. 

그러므로 데이터가 1개 이상이 되면 cost들도 같이 늘어나기 때문에 이 cost들을 평균을 내고 이를 최소화 한다고 생각하면 되겠다.

이처럼 평균을 구하고, $\frac{1}{m}\sum_{i=1}^{m} cost (y_{\theta}(x^{(i)}), y^{(i)}  )$  이를 최소화 하는 것이다.

 

 

 

$h$를 $y$로 생각해서.... 위의 자료와 아래자료가 달라서 바뀜 아무튼.

 

이제 여기서 어떻게 최소화를 할까? 

 

 선형회귀에서는 평균제곱오차(Mean Square Error)를 사용한다. 그래서 최소제곱법을 사용하여 cost를 최소화하여 최적의 모델을 만들곤 하였다.

하지만 로지스틱 회귀에서는 MSE를 사용할 수가 없다 왜냐하면 MSE를 사용해서 제곱을 하게 되면 시그모이드 함수 때문에 결과값이 local minimum들이 상당히 많아지게되고, 경사하강법을 통해서 최적의 데이터 값을 찾을 때, 가장 낮은 값이 아니라 개중에 하나인 local minumum값을 사용하게 된다.

그래서 사용하지 않고, Log Loss 즉, Cross Entropy를 사용한다.

 

아래의 $y$=1일 때의 예제를 보면 $x$축의 $y$=1일확률이 1에 가까워질수록 $y$축의 cost값이 0에 가까워지고, 반대로 $y$=1일 확률이 0으로 줄어들게 되면, cost가 1로 상승하는 것을 알 수 있다. 실제값과 동일하면 cost는 0이 된다.

 

 

아래의 그래프는 위의 그래프와 반대로 $y$=0 일 때는 $y$가 1일확률이 높을수록 당연히 cost가 증가하고, 또 반대로 확률이 0에 가까워지면 자연스레 cost도 0에 수렴하게 되는 것을 알 수 있다. 실제값과 동일하면 cost는 0이 된다.

 

 

문제는 로그를 사용할 경우에 $y$=1일 때와 $y$=0일 때 각각 다른 함수를 사용해야 한다. 어떻게 하나의 함수로 묶을 수 있겠느냐? 

그에 대한 대답으로는 $cost(h_{\theta}(x),y) = [-(y)log(h_{\theta}(x))] +[-(1-y)log(h_{\theta}(x))]$ 라는 식이 나온다. $y$가 1일 때랑 0일 때랑 각각 우변에서 좌항 우항이 각각 사라지면서 이전의 두개의 함수를 한번에 쓸 수 있게 된다.

 

이제 이 비용함수들을 평균내어주면 우리들의 cost fuction이 완성이 되고, 경사하강법을 통해서 이 함수를 편미분하면 최적의 데이터를 찾을 수 있게 된다.

cost function 완성

 

 

 

 

잠시 뉴럴 네트워크 (Neural Network)와의 관계를 살펴보면,

시그모이드를 이용하는 feed-forward neural network는 logistic regression을 여러번 하는 것과 동일하다.

 

 

 

 

 

아래의 그림은 신경망의 학습과정을 도식화 한 것인데, 신경망에서 은닉층(hidden layer)의 역할은 linear inseparable(선형으로 나누기힘든)데이터를 조금씩 linear inseparable한 공간(representation)으로 바꾸는 것이다.

 

 

 

 

 

모델의 복잡도에 제약/페널티를 부여.

과적합을 방지하고 일반화에 도움. L1, L2가 대표적이다.

 

-Logistic Regression 모델의 경우, 다음과 같이 cost function에 가중치의 절댓값 혹은 절댓값의 제곱을 더해주면서 일반화를 진행한다.

 

 

 

 

 

 

 

 

 

 

 

서울과학기술대 이영훈 교수님 강의와 여럿 블로그(ratgo's blog, 허민석)를 참조하였습니다.

728x90
반응형

'NLP' 카테고리의 다른 글

비정형 데이터 - GloVe  (0) 2019.12.16
비정형 데이터 - Word2Vec  (0) 2019.12.16
비정형 데이터 - LSA / pLSA  (0) 2019.12.16
비정형 데이터 - TF-IDF  (0) 2019.12.16
비정형 데이터 - 전처리  (0) 2019.12.16

댓글