사망년/머신러닝

04_회귀(Regression)

stop-zero 2023. 9. 22. 01:01

회귀(Regression)

회귀(Regression)는 입력과 출력 값 사이의 관계를 학습하여 주어진 입력에 대한 출력 값을 예측하는 데 사용되는 학습 방법이다. 회귀 모델은 주어진 데이터를 가장 잘 설명하고 근사하는 함수를 찾는 것이 목표이다. 주로 연속적인 값을 예측하고자 할 때 활용된다. 학습 데이터셋 {𝐱₁, 𝑦₁, 𝐱₂, 𝑦₂, … , 𝐱ₘ, 𝑦ₘ}에서 입력 데이터 𝐱와 이에 상응하는 출력 값 𝑦 사이의 관계를 설명하는 함수 ℎ(𝐱)를 찾는다. 예를 들어 자동차의 특성(차종, 제작년도, 주행거리 등)을 이용하여 중고 자동차의 판매 가격을 예측하는 등의 문제에 활용된다.

 

용어 및 표기법 

i번째 샘플 및 레이블

  • x(i) : i번째 샘플의 특성 값(열)
  • y(i): i번째 샘플에 대한 출력 값(=목표 값, 레이블)

 

모든 샘플

  • X로 표현되는 행렬 : 모든 샘플의 특성을 포함한 데이터를 나타낸다.
  • 행렬 X는 각 행이 하나의 샘플이고, 각 열은 특성을 나타낸다. 
  • 만약 각 샘플이 n개의 특성으로 구성되어 있다면, m개의 샘플은 m X n 행렬도 표현된다. 

 

시스템의 예측 함수(가설):h

  • h: 입력 특성을 받아서 해당 입력에 대한 예측 값을 출력하는 함수이다.
  • y(i) = h(x(i)): 이 함수를 통해 주어진 x(i)에 대한 예측값 y(i)를 얻을 수 있다. 

 

회귀 문제에 대한 일반적인 해법

가설 수립

주어진 데이터에 적합한 모델을 선정하고 가설을 수립한다. 이는 주어진 입력 특성과 출력값 사이의 관계를 나타내는 함수이다. 예를 들어 선형 회귀의 경우 y=mx+b와 같은 선형 함수를 가설로 설정할 수 있다. 

오차 평가 

설정한 가설이 얼마나 잘 작동하는지를 평가하기 위해 모델의 예측값과 실제 출력 값 사이의 오차를 측정한다. 가장 흔히 사용되는 방법은 평균 제곱 오차(MSE)나 평균 절대 오차(MAE) 등의 지표를 이용하여 오차를 계산한다.

오차 최소화

오차를 최소화하기 위해 가설을 조금씩 수정한다. 이를 해결하기 위해 보통 경사 하강법과 같은 최적화 알고리즘을 사용한다. 경사하강법은 모델의 파라미터를 조정하여 오차를 최소화하는 방향으로 이동한다. 이 과정은 반복적으로 모델을 개선하고 오차를 줄여나가는 데 사용된다. 

 

선형 회귀

특성이 하나인 경우, 즉 단일 특성을 가진 샘플의 특성 값과 목표 값 사이의 관계를 선형 함수로 표현할 수 있다.

y=ax+b

y: 목표 값 또는 레이블, x: 단일 특성의 값 , a: 특성과 목표 값 사이의 기울기(회귀 계수), b: y축과의 절편

 

특성 값이 여러 개라면? 다중 선형 회귀에서는 각 특성 값들을 선형 결합하여 선형 함수로 표현한다. 

일반적으로 다중 선형 회귀 모델에서는 특성들을 선형 결합시켜서 예측값을 계산한다. 예를 들어, x1, x2, ...,xn이라는 n개의 특성이 있다고 가정하면, 다음과 같이 표현한다 .

y=b+m1x1+m2x2+...+mnxn

y: 목표 값 또는 레이블, x1,x2...xn: 각각의 특성, m1,m2,...mn: 각 특성과 목표 값 사이의 가중치(회귀 계수) b: 편향

 

오차는 예측값과 실제값 간의 차이이다. 이것은 모델이 학습 데이터에 대해 얼마나 잘 맞추는지 측정한다.

1. 평균 절대 오차(MAE, Mean Absolute Error)

MAE는 예측값과 실제값 사이의 절대적인 차이의 평균을 나타낸다. 오차의 절대값을 구해서 더한다. 전체 샘플에 대한 오차 절대값이 얼마냐. 

2. 평균 제곱 오차(MSE, Mean Squared Error)

부호의 영향을 없애는 방법으로 예측값과 실제값 사이의 제곱된 오차의 평균을 나타낸다.

3. 평균 제곱근 오차(RMSE)

MSE의 제곱근을 취한 값으로 예측값과 실제값 간의 평균적인 거리를 나타낸다. 주로 회귀 모델에서 손실 함수로 사용하는 경우에는 평균 제곱 오차(MSE)를 많이 사용한다. RMSE는 오차를 추가적으로 한 번 더 계산하여 제곱근을 취하기 때문에 연산량이 많아진다.

이러한 오차 측정 지표들을 비용 함수로 설정하여 모델을 최적화한다. 모델의 목표는 비용함수를 최소화하는 최적의 파라미터를 찾는 것이다. 최적화 과정에서 경사 하강법과 같은 알고리즘이 사용되어 모델 파라미터를 조정하고, 오차를 줄이는 방향으로 모델을 개선한다. 

 

선형 회귀의 MSE 비용함수

선형 회귀 모델에서의 MSE(평균 제곱 오차)비용 함수는 일반적으로 블록(convex)함수로 간주한다. 블록 함수는 함수 그래프 위에 위치하는 함수이다. 즉, 함수의 곡선이 위로 볼록하게 휘어진 형태를 가지고 있다. 

선형 회귀 모델의 MSE 비용 함수는 모델의 예측값과 실제값 사이의 제곱 오차의 평균을 나타내는 함수이다. 이 함수는 파라미터(모델의 가중치 및 편향)에 대한 이차식으로 표현된다. 연속 함수이며, 기울기가 갑자기 변하지 않고 볼록한 모양을 가지기에 지역 최솟값이 여러 개 존재하지 않고 하나의 전역 최솟값만 존재한다.

 

학습

학습은 모델의 파라미터 공간에서 비용 함수를 최소화하는 모델 파라미터의 조합을 찾는 과정을 말한다. 이는 기계 학습에서 모델을 학습시키는 과정이다. 모델 학습에서는 주어진 학습 데이터셋에 대해 모델 파라미터를 조정하여 손실 함수를 최소화하는 최적의 모델을 찾는다. 이러한 최적화 과정을 수행하는 주요 방법 중 하나는 경사 하강법이다. 

모델의 파라미터가 많을수록 파라미터 공간의 차원이 커지게 되어 최적의 파라미터를 찾는 과정이 더 어려워진다. 파라미터가 적은 경우, 예를 들어 선형 회귀와 같이 파라미터가 몇 개뿐인 경우, 최소 제곱법과 같은 방법으로 모델 파라미터를 추정할 수 있다. 이는 단순하게 데이터 포인트와 모델의 예측 값 간의 오차를 최소화하는 방법으로 모델을 학습시키는 방법이다. 하지만 이 방법은 선형이며 파라미터 수가 적을 때만 적용 가능하다. 

 

경사 하강법(Gradient Descent, GD)

경사 하강법은 함수의 최솟값을 찾기 위해 사용되는 일반적인 최적화 알고리즘 중 하나이다. 이는 함수의 기울기를 활용하여 최적의 파라미터 값을 찾는 방법이다. 

1. 파라미터 초기화: 최적화할 파라미터를 무작위로 초기화한다.

2. 기울기 계산: 손실 함수의 기울기를 계산한다. 이는 각 파라미터에 대한 편미분을 통해 구한다. 기울기는 현재 위치에서 함수가 가장 가파르게 증가하는 방향을 나타낸다. 기울기 벡터는 다변수 함수에서 각 변수에 대한 편미분 값들을 모아 만든 벡터이다. 이 기술이 벡터는 함수이 가장 빠르게 증가하는 방향과 크기를 나타낸다. 경사 하강법은 기울기의 반대 방향으로 파라미터를 업데이트하여 손실 함수를 줄이는 방향으로 진행한다. 

3. 파라미터 업데이트: 기울기의 반대 방향으로 파라미터를 조금씩 업데이트한다. 이 때, 학습률을 사용하여 얼마나 크게 업데이트할지를 결정한다. 학습률을 사용하여 얼마나 크게 업데이트할지를 결정한다. 학습률은 한 번의 업데이트 당 이동 거리를 의미하며, 적절한 학습률을 선택하는 것이 중요하다. 

4. 반복: 위의 단계를 여러 번 반복하여 손실 함수가 최소가 되는 파라미터를 찾는다. 반복 횟수나 정지 조건은 미리 정해진 하이퍼파라미터에 의해 결정된다.

특히, 데이터 특성 값이 클 경우, 이러한 특성의 오차에 큰 영향을 미치게 되어 학습 과정에 불균형을 초래할 수 있다. 이런 경우 전체 학습 데이터셋에 대한 기울기를 계산하는 것은 계산 비용이 매우 높을 수 있다. 이를 해결하기 위해 확률적 경사 하강법이나 미니배치 경사 하강법과 같은 방법을 사용한다. 이 방법들은 전체 데이터 셋을 한 번에 사용하는 것이 아니라, 랜덤하게 선택한 작은 데이터 일부(미니배치)에 대해서만 기울기를 계산하고 파라미터를 업데이트한다.  

 

하이퍼파라미터

  • 모델의 파라미터가 아닌 학습 알고리즘의 파라미터
  • 모델의 학습 과정에 영향을 주지만, 모델의 학습 알고리즘으로부터 직접적인 영향을 받진 않는다. 
  • 학습 전에 사용자가 설정해야하며 학습하는 동안은 일정하게 상수로 유지된다. 

 

배치 경사 하강법 : 학습률

너무 작은 학습률은 학습 시간이 오래 걸리고, 수렴에 소요되는 시간이 매우 커진다. 학습률이 작은 경우, 최적화 과정이 너무 느리게 진행되어 전역 최솟값에 수렴하는 데 오랜 시간이 걸리거나 지역 최솟값에 갇힐 수 있다. 반대로, 너무 큰 학습률은 발산의 위험성을 가지고 있다. 학습률이 너무 크면 경사 하강법은 최솟값을 지나칠 수 있고, 파라미터 업데이트 시 발산하여 최적화 과정을 제대로 수행하지 못할 수 있다. 

이러한 문제를 해결하기 위해 학습률을 동적으로 조절하는 기법이 있다. 이러한 방법은 러닝 메이트를 스케줄링하여 학습률을 조절한다. 예를 들어, 학습 초기에는 큰 학습률로 시작하여 최적이 지점에 가까워질수록 점차 학습률을 줄여간느 방식이 있다. 이는 학습 초기에는 빠르게 최적의 지점으로 수렴하면서, 최적의 지점에 점점 가까워질수록 안정적으로 수렴할 수 있도록 도와준다. 

그레이디언트를 계산하여 파라미터의 반대 방향으로 이동하는 것은 경사 하강법의 핵심 단계 중 하나이다. 이를 통해 손실 함수를 최소화하는 방향으로 파라미터를 업데이트하여 최적의 모델 파라미터를 찾을 수 있다.

 

확률적 경사 하강법(Stochastic Gradient Descent, SGD)

경사 하강법의 변종 중 하나로, 전체 데이터셋을 사용하는 대신 각 단계에서 무작위로 선택한 개별 샘플에 대한 그레이디언트를 계산하여 파라미터를 업데이트하는 방법이다. SGD는 매 스텝에서 하나의 샘플에 대한 그레이디언트를 계산하고 파라미터를 업데이트하기에 개별 단계는 매우 빠르다. 이러한 특성은 매우 큰 학습 집합에 대해서도 학습이 가능하게 만들어준다. 그러나 SGD는 무작위성과 불안정성을 가지고 있다. 각 샘플을 기바능로 파라미터를 업데이트하기 때문에 그레이디언트가 불안정하고 요동치면서 감소하는 경향을 보인다. 이러한 특성으로 인해 SGD는 가끔 지역 최솟값에서 탈출하는 데 도움을 준다. 그러나 때로는 불안정성으로 인해 최적의 결과를 찾지 못할 수도 있다. 

SGD의 학습률을 조정하는 것이 중요한데, 이를 위해 학습 스케줄이 사용된다. 초기에는 보통 높은 학습률로 시작하고, 점차적으로 학습이 진행됨에 따라 학습률을 감소시켜가는 방법이 많이 사용된다. 이러한 학습 스케줄링은 모델이 안정적으로 수렴하도록 도와줄 수 있으며 이는 simulated annealing이라는 물리적인 개념과 유사하다. 

또한, SGD는 온라인 학습에 적합하다. 즉 데이터가 지속적으로 새로 추가되는 경우나 대규모 데이터셋에 대한 효율적인 학습을 위해 사용된다. 

 

미니배치 경사 하강법

모든 학습 데이터를 한 번에 처리하는 것이 아니라, 미니배치(작은 일부 데이터)를 사용하여 그레이디언트를 계산하고 파라미터를 업데이트하는 경사 하강법의 변형이다. 주어진 데이터셋을 작은 미니배치로 나누고, 각 미니배치에 대해 그레이디언를 계산하여 파라미터를 업데이트한다.이는 전체 데이터셋을 사용하는 방법보다 계산 비용을 줄이면서도 SGD보다는 더 안정적인 방법을 제공한다. 

미니배치 경사 하강법은 행렬 연산에 최적화된 하드웨어(GPU 등)를 사용하여 성능을 향상시킬 수 있다. 또한, SGD보다는 덜 불규칙하며 최소값에 더 가까이 접근한다. 하지만, 미니배치의 크기에 따라 SGD보다 더 안정적일 수 있지만, 더 큰 미니패치는 지역 최솟값에서 탈출하기 어려워진다. 

선형회귀와 같은 단순한 모델의 경우, MSE와 같은 비용 함수는 블록함수이다. 이러한 함수는 하나의 전역 최솟값을 가지며, 적절한 학습률과 충분한 시간을 주면 경사 하강법이 전역 최솟값에 수렴하는 것을 보장한다. 

 

특성 스케일링

선형 분류기와 같이 모델 파라미터가 입력 특성과 곱해져서 사용되는 경우, 특성의 스케일이 그레이디언트에 영향을 미친다. 특성들의 스케일이 서로 다르면, 그레이디언트의 크기도 다르게 되어 비용 함수의 형태가 길쭉한 모양이 된다. 이는 경사가 길고 평탄하지 않은 모양이 될 수 있으며 이러한 형태는 학습을 어렵게 만들고 수렴하는 데 오랜 시간이 걸린다. 

예를 들어 하나의 특성의 값이 다른 특성들의 값보다 훨씬 크다면, 해당 특성의 그레이디언트가 상대적으로 크게 되고 이에 따라 파라미터 업데이트에 영향을 많이 주게 된다. 이러한 상황에서는 모델이 전체 공간을 효과적으로 탐색하기 어렵다. 그렇기에 비슷한 특성 스케일을 갖도록 스케일링하는 것이 중요하다. 이를 통해 각 특성의 범위를 일정하게 맞추어 그레이디언트가 더 균일하고, 경사 하강법이 최적의 모델 파라미터를 더 빠르고 효과적으로 찾을 수 있다. 

 

결정 계수

회귀 모델이 주어진 데이터를 얼마나 잘 설명하는지를 수치화하는 지표이다. 평균값으로 예측하는 모델과 비교하여 모델의 성능을 평가한다. 

 

다항 회귀 

데이터가 직선보다 더 복잡한 패턴을 가지고 있다면 해당 특성의 거듭제곱이나 서로 다른 특성을 곱하여 새로운 특성을 추가한다. 이를 통해 기존의 특성들을 확장시키고, 선형 회귀 모델을 사용하여 확장된 특성들 사이의 관계를 모델링한다. 

예를 들어 1차 다항식 (직선)으로는 잘 표현되지 않는 데이터에 대해 2차, 3차, 또는 더 높은 차수의 다항식을 적용하여 데이털르 모델링할 수 있다. 너무 높은 차수를 선택하면 모델이 훈련 데이터에 과적합되어 실제 성능이 떨어질 수도 있다. 

 

학습 곡선

학습 곡선은 학습 데이터의 크기나 학습 반복 횟수에 따른 모델의 성능 변화를 시각적으로 보여준느 그래프이다. 학습 및 검증 데이터의 오차가 매우 근접하고, 둘 다 높은 오차를 보일 때 발생한다. 두 곡선이 수렴하여 더 이상 성능이 개선되지 않는 평평한 형태를 보인다. 

모델의 복잡성을 늘리거나 더 좋은 특성 선택을 통해 성능을 개선할 수 있다. 모델이 데이터의 패턴을 충분히 학습하지 못하므로, 더 복잡한 모델을 사용하거나 특성을 추가하여 모델의 복잡성을 높일 필요가 있다.

 

학습곡선 : 10차 다항 회귀

학습 곡선에서 학습 데이터에 대한 오차는 낮지만, 검증 데이터에 대한 오차는 상대적으로 높거나, 두 곡선 아이에 큰 간격이 있다. 모델이 학습 데이터에 과도하게 적합되어 학습 오차는 낮지만, 새로운 데이터에 대한 일반화 성능이 떨어지는 상황이다. 더 단순한 모델을 사용하거나 학습 데이터를 추가하여 더 일반적인 패턴을 학습해야 한다.

 

선형 회귀 모델의 규제

(모델이 복잡할 수록 패널티 부가해서 모델의 가중치를 제한함)

 

릿지 회귀

릿지 회귀는 선형 회귀의 한 유형으로, 티호노프 규제라는 방법을 사용한다. 이 방법은 모델의 가중치를 가능한 작게 유지하도록 규제한다.

비용 함수

  • 최소화해야 할 목표에 규제 항을 추가한 형태
  • 비용 함수  = 최소 제곱 오차(MSE)+규제항
  • 규제항은 가중치 벡터의 노름의 제곱이다. 

하이퍼파라미터 a

  • 릿지 회귀의 중요한 하이퍼파라미터로, 규제의 강도를 조절한다. 
  • a가 0에 가까워질수록 규제의 효과가 줄어들어 선형 회귀와 유사하다.
  • a가 커질수록 규제 강도가 커져 가중치가 작아지며, 데이터의 평균을 지나는 수평선에 가까워진다. 

입력 특성 스케일링: 릿지 회귀는 입력 특성의 스케일에 민감하므로, 미리 스케일링을 하여 특성들을 동일한 스케일로 맞춰야 한다. 

 

라쏘 회귀 

비용 함수

  • 최소 제곱 오차(MSE)에 규제항을 추가한 형태
  • 규제항은 가중치 벡터의 L1 노름

특성 선택

  • 자동으로 특성을 선택하고 중요하지 않은 특성의 가중치를 0으로 만든다. 

 

엘라스틱넷

릿지 회귀와 라쏘 회귀를 혼합한 선형 회귀 모델이다. r 값을 조절하여 릿지와 라쏘의 비율을 결정할 수 있다. 

 

선형 회귀 모델 선택

  • 일반적으로 규제 없는 건 피하고, 과대적합을 피해기 위해서, 기본적으로 릿지 회귀사용
  • 일부만 중요하다면 라쏘나 엘라스틱넷 사용

 

 

조기 종료 

기계 학습 모델의 과적합을 방지하고 효율적인 학습을 위해 사용된다. 경사 하강법 같은 반복적인 학습 알고리즘을 규제하는 방법으로 검증 에러가 최솟값에 도달하면( = 증가하기 시작하면) 즉시 학습 중지한다. 확률적/미니배치 경사 하강법에서는 최솟값에 도달했는지 확인하기가 어려울 수 있기에 검증 에러가 일정시간동안 최솟값보다 클 때 중간 한다.  (=10번 정도 확인하다가도 성능이 더 좋아지지 않으면 조기 종료)

+에포크 (epoch) : 전체 학습 샘플을 학습에 이용했을 때 1에포크

'사망년 > 머신러닝' 카테고리의 다른 글

비지도 학습  (1) 2023.12.07
분류  (1) 2023.12.07
서울시 공공자전거 수요 예측을 위한 데이터 수집 및 통합 과정  (2) 2023.12.02
02_학습과 평가  (0) 2023.09.21
01_머신러닝 개요  (0) 2023.08.31