본문 바로가기
머신러닝,딥러닝/ML 회귀분석(이상엽 교수님)

기계학습(ML): 선형회귀 모델 학습 원리, 성능 평가 방법

by 코듀킹 2023. 5. 19.
목차
1. 기계학습(ML) 종류
2. 학습데이터와 문제 데이터 준비
3. 알고리즘(혹은 모형) 선택
    3-1. 선형 회귀 모델
4. 학습
    4-1. 파라미터 최적값 도출
       4-1-1. 정규방정식
       4-1-2. 경사하강법
    4-3. 성능 평가
       4-2-1. 과적합(Overfitting)

 

1. 기계학습  종류

기계학습에 종류에는 크게 전통적인 머신러닝과 딥러닝이 있다. 전통적인 머신러닝의 경우엔 보통 정형 데이터(표 형태로 저장되어 있는)를 다룰 때 사용하며, 종류에는 선형회귀, 로지스틱, 결정트리가 있다. 딥러닝은 비정형 데이터를 주로 다루며, 비정형 데이터라고 하면, 이미지, 오디오, 비디오, SNS나 뉴스의 댓글 같은 텍스트들이다. 

 

참고로, 기계학습이 영어로 머신러닝(Machine Learning)이니 다른 것으로 헷갈리면 안 된다. 기계학습이라는 큰 범주 안에 딥러닝이라는 기술이 포함되어 있다. 그리고 머신러닝의 방식에는 지도학습 방식, 비지도 학습 방식, 강화 학습 방식이 있다. 지도 학습은 문제와 정답을 모두 알려주고 학습시키는 방식이다. 비지도 학습은 답을 가르쳐주지 않고 학습시키는 방식이다. 관측치들의 특성 정보를 담고 있는 데이터를 사용한다. 특성정보가 상대적으로 더 유사한 관측치들을 군집하는 방식, 즉 비슷한 친구들끼리 묶는 방식이다. 강화학습은 컴퓨터가 주어진 문제를 해결하기 위해 취한 행동을 수행한 결과에 따라 상 또는 벌을 내려 강화하는 방식이다. 흔히 사용되는 방식은 아니고, 컴퓨터 게임과 같은 분야에 제한적으로 사용된다.

 

기계학습(머신러닝)의 종류   출처: https://www.mobiinside.co.kr/2020/03/12/ai-perceptron/

 

 

오늘은 여러가지 기계학습 알고리즘 중에 가장 기본적인 회귀모형에 대해서 공부해 볼 것이다. 회귀모형은 기계학습(Machine Learning) 종류 중 하나로, 지도 학습 방식에 속한다. 즉, 문제와 정답을 모두 알려주고 학습시키는 방식이다. 그럼 기계학습(Machine Learning, ML)의 지도학습 중에 회귀 모형에 대해서 알아보자. 아래 빨간색 글씨로 표시 한 부분들이 오늘 이야기할 내용들이다. 

 

기계학습(ML) 종류

 

2. 학습데이터와 문제 데이터 준비

기계학습을 시키기 위해서는 첫 번째로 데이터가 필요하다. 데이터는 학습데이터와 문제데이터로 구분할 수 있다. 학습데이터는 말 그대로 학습시키는 데이터이다. 학습데이터는 모의고사를 생각하면 된다. 수능을 준비하기 위해, 모의고사를 풀고 정답을 확인하여 오답정리를 하면서 학습할 수 있다. 문제 데이터는 학습을 시킨 모델을 통해서 정답이 나와있지 않은 문제를 풀기 위한 데이터이다. 즉, 문제데이터는 수능을 보는 것이라고 생각하면 된다. 정답을 확인할 수 없으며, 모의고사를 통해 쌓아 왔던 실력으로 실전 문제를 풀어나가야 한다.

 

기계학습의 목적은 데이터에 존재하는 여러가지 정보들 중에 문제를 푸는 데 있어서 중요한 역할을 하는 정보를 추출하는 것이다. 즉, 모의고사(학습데이터)를 풀고 학습하는 과정을 통해, 수능(문제데이터)에 나오는 문제를 맞히는 데에 있어서 반복해서 나오는 중요한 내용들을 추출하는 것이다. 이렇게 학습을 할 때 사용하는 도구를 바로, 기계학습 알고리즘이라고 한다. 모의고사, 수능을 데이터로 비교했다면, 기계학습 알고리즘은 학습법에 비유할 수 있다.

 

기계학습 알고리즘은 다르게 표현하면, 수학적 모형 또는 수학적 함수이다. 아래와 같이 수학적으로 표현할 수 있다.

 

$$ y = b_0 + b_1X $$

 

예를 들어 직원의 경력과 연봉의 상관관계를 알고 싶다고 해보자. X는 독립변수로, 직원의 경력이 된다. 그리고 경력에 따른 연봉이 y, 즉 종속변수이다. 위 식을 통해 직원 경력에 따라 연봉이 어떻게 달라지는지 선형적인 관계를 확인할 수 있다. 이처럼 학습데이터를 통해서 X와 y의 관계를 파악해야 한다. 그러고 나서 새로운 문제 데이터를 그 관계를 통해서 y값을 알아낼 수 있다.

 

  • X: 독립변수(흰트 정보)
  • y: 종속변수(정답 정보)
  • b0, b1:  파라미터

 

새로운 문제 데이터에 대한 y값을 가장 정확하게 맞추려면, X와 y의 관계를 '가장' 잘 설명할 수 있는 파라미터의 값(b0, b1)을 찾아야 한다. 이 X와 y의 관계를 가장 잘 설명할 수 있는 파라미터의 값을 '최적값(optimal value)'라고 한다. 최적값은 학습 데이터를 학습시킨 결과로 찾을 수 있다.

 

 

3. 알고리즘(혹은 모형) 선택

지도학습 알고리즘이 적용될 수 있는 문제 유형은 종속변수의 유형에 따라 결정된다. 종속변수 y가 매출, 연령, 소득, 몸무게 등 연속성이 있는 수치형 데이터라면, 회귀 문제(Regression probelm)에 해당된다. 종속변수y가 남녀, 정치성향 같이 범주형 데이터라면, 분류문제(Classification problem)에 해당된다.

 

지도학습 알고리즘 종류

 

3-1. 선형 회귀 모델

종속변수의 유형에 따라 선택할 수 있는 지도학습 알고리즘이 달라지므로, 풀려고 하는 문제가 어떤 것인지 정확한 파악이 필요하다. 이 번 시간에는 회귀 문제 유형에 해당하는 데이터의 지도학습 방식을 알아보겠다. 회귀 문제의 경우엔 선형 회귀 모델을 사용해야 한다. 선형 회귀 모델이란 training data를 학습시켜서, 독립변수(흰트 정보)와 종속변수(정답 정보)의 관계를 가장 잘 설명하는 파라미터 최적값을 찾아, 알 수 없는 문제 데이터의 값을 예측하는 파라미터와 선형관계인 예측모델이다.

 

 

4. 학습

위에서 기계학습 알고리즘은 다른 말로 하면, 수학적 모형 또는 수학적 함수라고 말하며, y= b0 + b1X 식을 알아보았다. 이 식은 선형회귀 모형의 기본적인 식이다. 연봉, 몸무게 같은 연속성이 있는 수치형 학습데이터를 선형 회귀 모형에 학습을 시키고 나면, X와 y의 관계를 가장 잘 설명하는 파라미터(b0, b1)의 '최적값'을 찾을 수 있다고 했다. 그럼 이제 이 파라미터의 최적값을 도출하는 방법에 대해서 알아보자.

 

4-1. 파라미터 최적값 도출

4-1-1. 정규방정식

첫 번째로, 정규방정식을 활용해서 최적값을 도출하는 방법을 알아보자. 파라미터의 최적값은 독립변수(X)와 종속변수(y) 간의 관계를 가장 잘 설명하는 값이라고 했는데, 이를 반대로 말하면, 설명하지 못하는 정도가 가장 낮은 값이라고도 할 수 있다. 즉, 설명하지 못하는 정도를 최소화한다면, 파라미터의 최적값을 찾을 수 있다. 이때, 설명하지 못하는 정도를 비용함수(cost function, 혹은 손실함수(loss function))를 이용해서 표현할 수 있다. 정리하면, 비용함수의 값이 가장 낮게 나오는 파라미터의 값을 찾으면 독립변수와 종속변수의 관계를 가장 잘 설명할 수 있다.

 

비용함수의 종류에는 회귀 문제의 비용함수와 분류문제의 비용함수가 있다. 지금은 회귀 문제를 설명하고 있기 때문에 분류문제에서의 비용함수 식에 대해서는 설명하지 않겠다.(분류문제에서는 교차 엔트로피를 사용한다.) 회귀 문제의 비용함수는 아래와 같다.

 

회귀 문제의 비용함수

 

일반적으로 절대값을 사용하는 위의 식보다는 아래의 제곱을 활용한 식을 훨씬 많이 사용한다. 이유는 미분이 가능하기 때문이다. 즉, 최소화 문제를 더 쉽게 풀 수 있기 때문에 mse를 사용한다. 그렇기 때문에 여기서는 mse만 설명하겠다.

 

예시를 들어보자. 아래와 같은 선형회귀 모형의 모델이 있다. 여기에 2명의 사원의 학습데이터를 이용하여 비용함수 mse를 구해보겠다.

 

 

A라는 사원은 1년 경력이고, 연봉 2천만 원을 받는다. 독립변수 X는 1, 종속변수 y는 2라고 하겠다. B라는 사원은 2년 경력이고, 연봉 6천만 원을 받는다. 독립변수 X는 2, 종속변수 y는 6이라고 하겠다. 

 

사원 경력(X) 연봉(y)
A 1 2
B 2 6

 

이를 식에 대입하면, 아래와 같다. 

 

 

결과로 나온 식을 그래프화 시키면, 다음과 같은 그래프가 나온다.

 

 

비용함수(E)의 값이 커지면 커질 수록 모형의 설명력이 감소한다. 즉, X의 y의 관계를 설명하는 가장 잘 설명하는 정도가 낮아진다. 그래서 비용함수가 가장 낮은 값이 되게 만드는 파라미터 b1값을 찾아야 한다. 위 그래프에서 보면, 빨간 선이 있는 위치가 가장 비용함수(E)의 값이 가장 낮다는 걸 알 수 있다. 이 값을 어떻게 찾을까? 바로, 미분을 하면 된다. 미분을 하면, 기울기를 알 수 있기 때문에 기울기가 0이 되는 b1의 값을 찾으면 된다.

 

$$ \frac{2}{5}{b_1}^2 - 14b_1 + 20 $$

 

위 식을 미분하면, \(5b_1 - 14\)가 되고, 이 값이 0이 되는 값을 찾으면 되기 때문에 b1은 14/5가 된다. 이렇게 독립변수와 종속변수의 관계를 가장 잘 설명하는 파라미터 b1의 최적값을 찾는 정규 방정식을 알아봤다. 이렇게 학습데이터를 통해 파라미터의 최적값을 찾았다면, 이 모델을 문제 데이터에 적용하면 된다. 

 

4-1-2. 경사하강법

두번째로 파라미터의 최적값을 찾을 수 있는 방법은 경사하강법을 이용하는 방법이다. 회귀 문제를 풀기 위해서 mse 비용함수를 사용할지라도, 신경망모형과 같이 파라미터가 1000개~10000개가 넘는 굉장히 복잡한 수학적 모형을 이용하는 경우에는 일반적으로 정규방정식을 사용하지 않고, 경사하강법을 사용한다. 파라미터가 많은 경우엔 정규방정식을 사용하면, 학습하는데 시간도 오래 걸리고, 많은 양의 데이터를 한 번에 사용하기 때문에 메모리 양이 많이 필요하다. 즉, 메모리 공간이 많지 않으면, 데이터의 양이 많거나 파라미터의 수가 많은 경우에는 정규방정식을 사용하기가 어렵다. 그래서 보통 신경망에서는 회귀문제를 푸는 경우라도 정규방정식이 아닌 경사하강법을 사용한다. 

 

우선 위에서 본 그래프를 그래서 가져와서 생각해보자.

 

 

$$ b_{i,new}\ =\ b_{i,current}\ -\ η\ \frac{∂E}{∂b_{i}}(b_{i,current}) $$ 

 

정규 방정식에서는 비용함수를 미분한 값으로 기울기가 0인 값을 바로 찾았다면, 경사 하강법에서는 위와 같이 임의의 \(b_1\) 초깃값을 설정하여 순차적으로 여러 번 업데이터를 거쳐서 비용함수 값이 최소로 하는 파라미터의 값을 찾아낸다. 위 그래프에서는 \(b_1\)의 초깃값을 15로 설정하였다.

 

에타(η)란, 학습률(상수, learning vate)을 뜻한다. 하이퍼 파라미터라고도 말한다. 사람이 도메인 지식과 경험을 가지고, 적당한 값으로 직접 설정해 준다. 0~1 사이의 값을 취한다. 값이 크면 클수록 업데이트를 많이 한다는 뜻이다. 에타의 값이 너무 크면, 아래의 오른쪽 그림과 같이 최적값을 찾는데 스텝이 너무 커서 왔다 갔다 하는 현상이 일어나고, 에타의 값이 너무 작으면, 왼쪽 그림과 같이 학습을 시키는데 너무 오래 걸린다는 문제가 있다. 그래서 에타의 값을 적절히 설정하는 건 매우 중요하다. 

 

 

더보기

여기까지 선형 회귀 문제에서의 파라미터 최적값을 도출하는 정규방정식과 경사하강법을 알아보았다. 정규방정식은 비용함수가 2차 함수인 경우에 주로 사용한다. 즉, 비용함수가 아래로 볼록한 형태의 경우에 사용할 수 있다. 아래로 볼록한 형태이면, 접선의 기울기가 0인 지점이 하나밖에 없기 때문이다. mse는 항상 볼록하게 생겼다. 반면에 경사하강법은 아래로 볼록한 형태 외에도 여러 형태에 사용할 수 있어서 분류 문제에서도 사용한다. 분류문제에서는 비용함수를 mse를 사용하지 않고, 교차 엔트로피를 사용한다. 이에 대한 부분은 다음시간에 알아보겠다.

 

4-2. 성능 평가

비용함수가 최소가 되는 최적값을 찾아서 이 모형을 문제 데이터에 적용하려고 한다. 하지만, 그전에 한 가지 더 거쳐야 할 과정이 있다. 바로, 평가 단계이다. 평가를 하기 위해서는 평가에 사용되는 데이터가 필요하다.(Test data)

 

테스트 데이터가 만족해야 하는 조건은 2가지가 있다.

  1. 모형의 성능을 파악해야 하기 때문에 정답 정보가 존재해야 한다. 우리가 내린 예측치와 비교해서 성능을 평가할 수 있다.
  2. 학습에 사용되지 않은 데이터여야 한다. 

학습에 사용된 데이터를 중복해서 사용하게 되면, 정확한 평가를 할 수 없다. 평가 데이터는 어느 정도만 있으면 되기 때문에 학습데이터의 양을 더 늘리는 게 중요하다.

 

정리하면, 데이터 분석을 할 때, 평가 단계를 위해 데이터를 두 가지로 쪼개서 준비한다.

  • 학습 데이터: training data
  • 평가 데이터: test data

 

성능 평가를 했는데, 성능이 좋지 않으면 어떻게 해야 할까? 다시 이전 단계로 돌아가서 모형의 성능을 향상해야 한다. 모형의 성능을 향상할 수 있는 다음과 같은 방법들을 다시 수행하여야 한다.

  • 데이터 수집
  • 데이터 크기 키우기
  • 데이터 전처리를 통한 이상치 제거 
  • 추가적인 변수 생성
  • 하이퍼 파라미터 튜닝
  • 또 다른 종류의 지도학습 알고리즘 모형을 사용해 보는 것.

모형의 성능을 평가할 때 사용되는 metrics

- 회귀문제: 보통 \(R^2\), MSE, RMSE 등을 사용

\(R^2\): 0-1 사이 값을 취하며, 1에 가까울수록 설명이 좋다는 것을 의미 

- 분류문제: 보통 정확도(accuracy)를 사용

정확도: 데이터에 존재하는 전체의 관측치들 중에서 몇 %에 해당하는 관측치의 종속변수를 모형이 제대로 예측했는지를 의미

그 외 recall(재현율), precision(정밀도), F1(Auc) 등이 존재

 

4-2-1. Overfitting(과적합)

모형의 성능이 좋지 않은 경우는 크게 두 가지로 나뉜다. Overfitting(과대적합)과 Underfitting(과소적합)이다. 그중 과대적합이 훨씬 자주 일어난다. 과대적합이 발생하는 주 된 이유가 뭘까?

  1. 우리가 사용하는 모형이 너무 복잡한 경우. 모형에 존재하는 파라미터의 수가 너무 많은 경우이다. 
  2. 학습을 통해서 도출이 된 수학적 모형이 독립변수의 값의 변화에 너무 민감하게 반응하는 경우.

 

예를 들어 이러한 식이 있다고 해보자.

$$ y = b_0 + b_1X_1 + b_2X_2 $$

1번 케이스의 경우는 \(b_1 = 1\) 이다.

2번 케이스의 경우는 \(b_1 = 10\) 이다.

그러면, \(X_1\)이 바뀌는 정도에 따라 y의 값이 심하게 변하는, 즉 민감도가 높은 케이스는 2번이다. 파라미터의 절댓값이 크면 클수록, 민감한 정도가 커진다. 민감한 정도가 커지면 커질수록 과적합 문제가 커질 가능성이 커진다. 파라미터의 절댓값을 0까지 줄이면, 모형의 복잡도 까지도 줄일 수 있다. 그러나, 모형을 너무 단순하게 만들어 버리면 Underfitting이 일어날 수 있기 때문에 적당한 정도가 필요하다.

 

규제화(refularization) 방법을 활용해서 파라미터 값을 줄일 수 있다. 규제화란, 원래의 비용함수를 그대로 사용하지 않고, 원래의 비용함수에 규제화항(Penalty term)을 더해서 새로운 비용함수로 사용을 하는 것이다. 

  • 비용함수(new) = 비용함수(origin) + Penalty

원래의 비용함수를 최소화시키는 파라미터 값이 있었을 것이다. 페널티 항을 더함으로써 새로운 파라미터의 절대값이 줄어든다. 패널티 항으로 사용되는 것에는 두 가지가 있다.

  • L1 : 각각의 파라미터에 절댓값을 취해서 전부 더한 것
  • L2 : 각각의 파라미터에 제곱을 취해서 더하고, 페널티의 강도를 조절하는 람다라고 하는 하이퍼파라미터를 곱해준 것

 

이렇게 성능 평가까지 끝마쳤다면, 본격적으로 이 모델을 문제에 대한 데이터에 적용할 수 있다.

 

댓글