본문 바로가기

Data Science/Machine Learning

[ML] Linear Regression(선형회귀)& Logistic Regression

반응형

※해당 게시물에 사용된 일부 자료는 순천향대학교 빅데이터공학과 정영섭 교수님의 머신러닝 전공수업 자료에 기반하였음을 알려드립니다.

 

이번 포스팅에서는 가장 전형적인 머신러닝 모델이라고 할 수 있으며 연속적인 값을 예측할 수 있는 Linear Regression(선형회귀) 모델에 대해 알아보려고 한다. 또한 Linear Classification 이라고도 하며 Linear(선형)으로 Class(Label)을 분류할 수 있는 Logistic Regression에 대해 알아본다. 목차는 다음과 같다.

 

1. Linear Regrssion

2. Linear Regression의 Ridge Regression

3. Linear Regression의 Lasso Regression

4. Linear Classification(=Logistic Regression)

 

1. Linear Regression (선형 회귀)

선형 회귀는 기본적으로 Iterative(반복적인) 방법을 사용하게 된다. 선형회귀에 대한 식은 다음과 같다.

 

선형회귀

우리는 위와 같은 식에서 베타값이라는 최적의 파라미터를 구하는 것이 목표이다. 그리고 최적의 베타값을 찾은 후 가장  최적의 선형회귀식을 찾아내는 것이다. 밑의 간단한 Iterative 방법의 예시를 보면서 살펴보자.

 

선형회귀의 예시

 

위와 같이 4개의 데이터가 존재하고 우리는 이 데이터들에 기반하여 가장 최적의 선형회귀식(ax+by+c = 0 )을 찾아야 한다. 최종적으로 우리가 구해야 할 값은 a,b,c 라는 파라미터 값이다. 참고로 a,b,c 라는 파라미터의 초기값은 임의로 부여하고 시작을 하게 된다.

 

그렇다면 우리가 초기에 임의로 부여했던 a,b,c 라는 파라미터 값이 적절한지 여부 판단은 어떻게 할까? 이 때 LossCost의 개념이 등장한다.

 

Loss, Cost 개념

 

Loss와 Cost의 구체적인 개념은 이전의 '머신러닝의 용어와 종류' 포스팅에서 다루었으니 자세히 언급하진 않겠다.

(Loss와 Cost의 구체적인 개념이 궁금하다면? https://techblog-history-younghunjo1.tistory.com/60?category=863123)

 

이렇게 Loss(실제값과 예측값의 차이)총 평균인 Cost를 구하게 된다. 그렇다면 이제 이 Cost값을 최소화함으로써 가장 적합한 파라미터를 찾아야 하는데 어떻게 할까? 우리는 이 때 Gradient Descent(기울기 하강) 즉, 미분의 방법을 사용하게 된다. 

 

Gradient Descent(기울기 하강)

 

위와 같은 그림으로 Cost Function을 기울기 하강을 이용하여 Global Cost minimun 지점을 찾아 준다.

위 그림에서 화살표는 Learning Rate(학습률)이라고 하며 초기 파라미터(Initial Weight)에서 얼마나의 보폭으로 Global cost minimum으로 갈지를 사용자가 임의로 정의해준다. 만약 학습률을 매우 크게 해버린다면 어떤 일이 발생할까?

다음 그림을 보자.

 

학습률을 크게 한다면?

 

아마 위 그림과 같이 사방으로 왔다갔다하면서 결국 파라미터 값이 밖으로 튕겨나가게 되고 말 것이다.

 

2. Ridge Regression

Ridge 회귀는 이 다음에 소개할 Lasso와 마찬가지로 Regression의 Overfitting(과적합) 문제를 예방하기 위함이 기본적인 목적이다. 즉, Linear Regression에서 얻어지는 파라미터값이 너무 커지지 않도록 하는 것이다. 이 때 Regularization이라는 정규화방식을 이용해서 파라미터값을 제한하게 되는데 Ridge는 L2 norm 방법을 사용한다. L2 norm 이외에 L1 norm, maximun norm 이라는 정규화 방법에 대해서는 다음 링크를 참조하길 바란다.

https://taewan.kim/post/norm/?

구체적으로 파라미터(베타) 값을 0이 아닌 0에 근사한 값으로 만듦으로써 크기가 커지는 것을 제한한다.

 

수식은 다음과 같다.

 

Ridge Regression 수식

 

수식을 간단하게 해석하자면 기존에 구했던 Linear Regression에서 구한 파라미터값(베타값)을 Ridge로 적용했을 때 기존의 베타값에다가 람다(λ)를 곱해준 베타값을 더해줌으로써 파라미터가 커지는 것을 제한하게 된다.

 

3. Lasso Regression

Lasso 회귀는 기본적으로 Ridge 회귀와 목적은 동일하다. 하지만 파라미터를 어느정도까지 제한시키냐의 차이로 볼 수 있다. 즉, 파라미터값을 0에 근사하는 값으로 제한하는 Ridge와는 달리 Lasso는 아예 람다값을 0으로 만들 수 있음으로써 파라미터값을 제한하는 정도가 Ridge보다 크게 된다.

 

파라미터를 제한하는 방법으로 Regularization을 쓰는데 L1 norm방법을 사용하게 된다. 하지만 L1 norm 식의 특성상 error를 계산하는 방식이 절댓값을 이용하므로 미분이 '불가능' 하다. 따라서 추후에 Cost function을 최소화하기 위한 방법으로서 Gradient Descent(미분)을 사용해야 하는데 이 때 Lasso Regression은 막다른 길목에 다다르게 된다. 그렇기 때문에 다른 방법을 이용하게 된다.

 

또한 Lasso는 Feature Selection효과를 가지고 있다. Feature Selection이란, 결과값 생성에 중요하지 않은 파라미터(가중치)값이라면 0으로 만들어 버려 Feature를 선별(Selection)하는 것을 말한다. Lasso 회귀의 수식은 다음과 같다.

 

 

Lasso Regression의 수식

 

4. Logistic Regression

다음은 Linear Classification이라고도 하며 Linear(선형)으로 분류문제를 해결할 수 있는 모델을 뜻한다.  Linear Regression 에서 Logistic Regression으로 바뀌는 전환과정에 대해서는 직접 필기한 그림을 보면서 따라가보자.

중요한 포인트는 "Linear(선형) 합에 Logistic이라는 특정한 함수를 씌워서 확률값(0~1 범위)으로 변환" 이다. 

 

Logistic Regression으로의 변환 과정

 

위와 같은 전개과정을 보면서 우리는 추가적으로 또 하나의 함수를 씌워서 '무엇'인가를 알아낼 수 있다. Logistic 함수를 씌워서 만든 f(ax+by+c)라는 선형의 합을 하나의 발생할 확률 P라고 가정해보자. 그렇다면 저 위 그래프 속의 분홍색 점이 되기위해서는 P값이 최대가 되도록 해야하며 반대로 초록색 점이 되기 위해서는 1-P 값이 최대가 되도록 하면 된다. 다시 말해서, 어떤 값을 '최대화' 하기 위한 문제인 것이다. 

 

우리는 이렇게 '최대화' 하기 위한 문제에 'log' 를 씌우고 부호를 바꿈으로써 '최소화'문제로 바꿀 수가 있다. 여러 다양한 함수 중 log 함수를 쓰는 이유는 log 함수가 montonic(단조 함수) 함수이며 underflow를 방지하고 연산이 쉬워지기 때문이다. 

(#underflow란, "아래로 넘친다" 라는 의미로, 컴퓨터에서 처리할 수 있는 가장 작은 값보다 작은 값이 나오는 상태를 말한다.)

그래서 이렇게 '최소화' 문제는 우리가 이전에 Linear Regression에서 했던 것처럼 Cost Function을 최소화하는 방법으로 이용을 하게 된다. 

 

#더 공부하기-1)

위와 같이 Logistic Regression을 통해서 Linear로 분류문제를 해결할 수 있다. 그렇다면 Class(Label)이 3개 이상일 때는 어떻게 할까? 이 때는 다항 로지스틱 회귀(Multi-Logistic Regression 또는 Softmax Regression)를 사용하게 되는데 이에 대한 설명은 이전의 포스팅에서 다루었었다. 

(링크: https://techblog-history-younghunjo1.tistory.com/33?category=863123

 

#더 공부하기-2)

그렇다면 Linear Regression으로는 분류 문제를 아예 해결할 수 없을까? 또 그렇지도 않다. 무식한 방법이긴 하지만 분류문제를 해결하기 위해서는 Multi-response Linear Regression 방법을 이용하게 된다. 이에 대한 구체적인 방법은 그림을 살펴보자.

 

* 해당 그림 예시는 머신러닝 수업을 같이 듣는 오진선님의 예시를 빌렸다는 점 알려드립니다.

https://ohjinjin.github.io/machinelearning/machineLearning-4/

 

하마와 기린으로 해보는 Multi-response Linear Regression

위와 같이 Label이 '하마, 기린' 에 대한 '몸무게, 목길이' 라는 Feature가 있는 데이터셋이 있다고 가정하자. 우리는 이 하나의 데이터셋에서 한 개는 '하마로 분류하기 위한 선형회귀모델' , 또 하나는 '기린으로 분류하기 위한 선형회귀모델' 이렇게 총 2개의 선형회귀모델을 만든다. 그리고 Label을 범주형 값이 아닌 연속적인 실수 값으로서 0, 1로 나누고 결과값(rst=회귀분석이니 연속적인 값이 도출)이 높은 것으로 모델을 선택 후 해당 모델의 Label로 분류를 하게 된다.

반응형