-
🤖Machine Learning_편향과 분산(Bias & Variance)머신러닝 2024. 2. 21. 13:16
마지막으로 회귀 문제를 풀 때, 발생하는 편향과 분산이라는 문제점을 공부하고 이 문제점들을 해결하기 위해 어떤 방법을 취할 수 있는지 알아보자.
01. 학습 데이터 vs 평가 데이터
데이터는 학습 데이터와 평가 데이터로 나눌 수 있는데 모델 학습에 사용되는 데이터 셋은 학습 데이터, 오직 모델의 평가만을 위해 사용되는 데이터셋은 평가데이터라고 한다.
💡평가 데이터는 절대로 모델 학습에 사용되서는 안된다.
학습 데이터셋에 대해 100%의 정확도로 학습하였다고 하더라도 평가 데이터에대해 100% 정확도를 낼 수 있을지는 확신할 수 없다.
그렇다면 평가 데이터에 대한 몇가지 궁금증이 생긴다.
- 평가 데이터는 학습 데이터와 같은 분포를 가지는 데이터 셋일까?
우리가 데이터를 제공 받을 때 평가 데이터와 학습 데이터를 따로 제공받는 것이 아니라 데이터 셋 하나를 제공받고 데이터 안에 각 데이터 샘플들 마다 피처와 라벨을 가지고 있다.
이런 상황에서 랜덤하게 평가 데이터를 만들기에 일반적으로 비슷한 분포를 가지게 된다.
- 평가 데이터는 어느 정도의 크기를 가져야 할까?
업무에 따라 다르긴 하지만 데이터가 들어오면 10% ~ 20% 내지의 데이터 셋을 평가 데이터로 사용하게 된다.
02. 편향과 분산의 균형
편향과 분산의 문제가 무엇인지 배우기 전에 모델의 복잡도가 무엇을 의미하는지 알아보자.
ax + b 라는 선형 모델을 만들었다고 가정하면 이 선형모델은 기울기와 절편이라는 두 가지 파라미터를 가지게 된다.
반면 이차 함수 형태의 비선형 모델을 만들었다고 가정한다면 파라미터는 세 가지가 된다.
이런 식으로 선형 모델에서 비선형 모델로 넘어갈수록 모델의 파라미터 수가 점점 증가하고, 파라미터 수가 많아지면 학습 할 수 있는 파라미터가 많아져 데이터에 대한 학습을 더욱 완벽하게 진행할 수 있다.
이럴 때 모델의 복잡도가 증가하였다 즉, 파라미터의 수가 증가하였다라고 한다.
데이터를 학습할 때 선형모델로 학습하는 것보다 비선형 모델로 학습하는 것이 보다 완벽하게 학습할 수 있는 것이다.
** 모델의 복잡도가 높을 때 반복횟수를 높이면 높일수록 완벽한 학습이 가능해진다.
그러나 평가 데이터는 학습 데이터의 분포와 같을수도 혹은 다를 수도 있기에 두 가지 문제가 발생한다.
데이터가 많은 상황(Under-fitting)과 데이터가 적은 상황(Over-fitting, 과적합)일 때 다른 문제가 발생한다.
먼저, 데이터가 무수히 많은 상황에서 모델의 복잡도가 높을수록 학습 데이터셋에 대한 정확도가 증가하는데 모델의 복잡도가 낮을수록 즉, 파라미터의 수가 적으면 적을수록 학습 데이터 셋에 대한 정확도가 굉장히 낮아진다.
반면, 절대적인 학습 데이터셋의 수가 굉장히 적은 상황에선 평가 데이터와 학습 데이터가 다른 분포를 가질 수 있어서 학습 데이터셋에 대해 완벽하게 학습한 모델(비선형 모델) 보다 학습 데이터를 완벽히 학습하지 못한 모델(선형모델)이 오히려 오차가 적은 평가 정확도가 떨어지는 문제점이 발생할 수 있다.
이를 과적합이라 부른다.
편향과 분산은 모두 알고리즘이 가지고 있는 에러의 종류이다.
모델의 예측값에 대한 평균과 실제 파라미터의 차이를 편향이라 하고 학습 데이터에 대한 정확도라고 이해할 수 있다.
학습 데이터를 가지고 여러가지 추정들을 해 그 추정들의 평균값을 내린 후 그 평균값과 실제 완벽한 파라미터와의 차이를 말하는 것이다.
그에 반해 분산은 실제 파라미터 값이 아니라 예측한 파라미터와 예측한 파라미터의 평균의 제곱값에 대한 평균으로
분산이 적다는 말은 여러번 추정을 하여도 매 번 비슷한 분포를 가진다는 것이고 분산 에러가 크다는 것은 파라미터에 대해 여러 번 추정을 했을 때, 분산 값이 크다는 것이다.
즉, 추정할 때마다 예측값의 차이가 크다는 것을 의미한다.
그렇다면 분산값이 작을 때, 편향값은 어떻게 될까?
정답은 모른다이다.
예측을 일관되게 하였다 하더라도 실제 완벽한 파라미터가 값과 평균값은 다른 위치에 있을 수 있기 때문이다.
분산과 편향이 어떠한 관계가 있다고 말하기는 힘들지만 편향은 under-fitting과 분산은 over-fitting과 관련이 있는 개념이다.
편향은 실제 파라미터와 예측한 파라미터의 평균 간의 차이를 의미하기 때문에 학습 데이터 셋의 정확도와 관련이 있는 under-fitting과 관련이 있다.
편향이 크다는 것은 모델이 실제 관계를 제대로 학습하지 못하고 있는 경우를 나타내는 것으로 모델이 너무 간단하거나 적은 수의 변수를 사용하여 복잡한 데이터 패턴을 잡아내지 못할 때 발생하고
under-fittig은 모델이 훈련 데이터에서도 일관된 예측을 제공하지 못하는 경우를 의미하는 것으로 이는 모델이 너무 단순하거나, 데이터를 충분히 학습하지 못하였거나, 너무 높은 편향을 가지고 있을 때 발생하므로
편향과 under-fitting은 모두 모델이 데이터를 제대로 학습하지 못하는 상황을 말한다.
분산은 평가 데이터셋에 대한 정확도라는 over-fitting과 유사하다.
분산과 과적합은 둘 다 모델이 훈련 데이터에 너무 많이 집착하여 새로운 데이터에 대한 예측이 부정확해지는 현상을 의미한다.
분산은 모델이 훈련 데이터에 대해 너무 민감하게 반응해 작은 변동에도 크게 영향을 받는 경우로 모델이 훈련 데이터에 너무 딱 맞게 fitting 되어 있어 새로운 데이터에 대한 예측이 불안정해지는 것을 말한다.
과적합 또한 모델이 훈련 데이터에 너무 맞춰서 있어서 새로운 데이터에 대한 일반화 능력이 떨어지는 경우이기에 두 개념은 모두 모델이 훈련 데이터에 집중해 새로운 데이터에 대한 성능이 나빠지는 현상을 설명한다.
위 개념은 머신러닝과 딥러닝 전반에 모두 적용되는 개념이다.
요약하자면 편향은 모델의 복잡도가 낮으면 낮을수록 (선형 모델일수록) under-fitting 현상이 심해 편향에 대한 에러가 굉장히 크지만 모델의 복잡도가 높아질수록 학습 데이터셋을 완벽하게 맞추고 under-fitting문제가 해결되어 편향 문제가 줄어들게 된다.
반면, 분산은 모델의 복잡도가 낮을 경우(선형 모델일 경우) 어떤 데이터셋이 들어와도 일관된 에러의 크기를 보여주기에 분산은 매우 작지만 모델의 복잡도가 올라갈수록 학습 데이터에 완벽하게 맞춰지는 over-fitting 문제가 발생하기에 다른 데이터셋에 대한 오차는 들쑥날쑥하다.
💡모델의 복잡도 또한 실험을 통해 최적의 복잡도를 알아내야 한다.
어떻게 균형을 맞출 수 있을까?
일반적으로 모델의 복잡도를 키우고, 과적합을 막는 방법은 무엇이 있을까?
03. 검증 데이터
검증 데이터란 전체 데이터를 학습 데이터, 검증 데이터, 평가 데이터로 나누는 것으로 모델의 학습 정도를 검증하기 위한 데이터셋이다.
검증 데이터는 모델 학습(파라미터를 찾는 과정)에 직접적으로 참여하지 못하지만 평가 데이터와의 가장 큰 차이점은 학습 시에 볼 수 있는가이다.
검증 데이터는 학습 중간에 계속해서 평가를 통해 실제 과적합문제를 막기 위해 가장 좋은 성능의 파라미터를 저장해 준다.
이렇게 최적의 값으로 저장된 파라미터를 가지고 마지막에 평가 데이터셋에 대해 평가를 진행해 모델에 대한 정확도를 알아낸다.
04. LOOCV
이렇게 검증 데이터 셋을 나눠줄 때, 랜덤 샘플링이나 하이퍼파라미터를 통해 정할 수도 있지만 랜덤으로 생성된 검증 데이터셋을 하나만 사용하는 것은 편향된 결과를 줄 수도 있기에 머신러닝에서는 이러한 하이퍼파라미터를 없애주기 위해 LOOCV라는 방법을 만들었다.
LOOCV는 모든 데이터 샘플에 대해 검증을 진행하는 방법으로 n번 수행한 검증데이터셋에서 발생한 오차값의 평균을 내어 가장 좋은 모델의 파라미터를 저장한다.
그러나 여러 개의 모델에 대해 모두 LOOCV를 수행할 경우 시간이 비용이 많이 들게 된다.
05. K-fold 교차 검증
그래서 나온 개념이 K-fold 교차 검증이다.
학습 데이터와 검증 데이터를 단순하게 k개로 나눠 k번 교차 검증을 진행한다.
그렇다면 k의 값이 커지면 어떤 것이 바뀔까?
k값이 커진다는 것은 결국 LOOCV과 같아진다는 것을 의미한다.
1. 학습 데이터의 수는 커진다 : n개의 학습데이터가 있다면 검증하는 것은 1개의 데이터이고 나머지 n-1개의 데이터는 학습 데이터이기에
2. Bias 에러값은 작아지고, Variance 에러값은 커진다 : 모델의 복잡도가 어느 정도 크다고 하면 학습 데이터의 수가 증가하면 편향은 작아지고, 분산은 커진다.
3. 계산 비용이 증가한다 : 계산의 횟수가 증가하면 계산 비용은 따라 증가한다.
06. 규제
이전까지는 데이터셋을 어떻게 사용해야 하는지에 대한 개념을 가지고 검증 데이터 셋을 살펴보았다면 이번에는 손실함수측면을 살펴보자.
모델의 복잡도가 커진다는 것은 모델의 파라미터 수가 많아진다는 것을 의미하고 모델의 복잡도가 커질수록 과적합이 발생할 가능성이 커진다.
그렇다면 복잡도가 큰 모델의 정의하고, 그중 중요한 파라미터만 학습하면 안되는 걸까?
복잡도가 큰 모델을 정의한다면 under-fitting에 대한 위험은 사라지지만 over-fitting에 대한 가능성은 커진다.
그렇다면 복잡도가 매우 큰 모델들을 정의해 우선 under-fitting을 해소하고 그 중 중요한 파라미터만을 추려 학습한다면 over-fitting도 줄어든다는 개념에서부터 출발한 것이 바로 정규화이다.
중요한 파라미터만 학습한다는 말은 반대로 필요 없는 파라미터의 값은 0으로 만들어 사용을 하지 않는 것이다.
그에 관한 정규화는 RIdge와 Lasso 두 가지가 존재한다.
07. Ridge 회귀
Ridge 회귀는 선형 회귀의 한 유형으로, 주로 다중공선성이 발생하는 경우 모델의 성능을 향상하기 위해 사용된다.
다중 공선성은 입력 변수들 간에 높은 상관관계가 있는 경우에 발생하며, 이는 일반적으로 선형 회귀 모델에서 문제가 될 수 있다.
Ridge 회귀는 이러한 다중 공선성을 감소시키고 모델의 일반화 성능을 향상하기 위해 L2 규제를 사용한다.
Ridge 회귀의 핵심 아이디어는 회귀 계수의 크기를 제한함으로써 모델의 복잡성을 줄이는 것이다.
이를 위해 손실 함수에 패너틸 항을 추가하고, 이 패널티 항은 회귀 계수의 제곱합을 통해 규제한다.
이렇게 하면 모델이 입력 변수들 간의 상관관계를 고려하면서도 모델의 복잡성을 적절히 조절할 수 있다.
간단히 말해, Ridge 회귀는 선형 회귀 모델에 L2 정규화를 적용하여 과적합을 방지하고 모델의 일반화 성능을 향상하는 방법이다.
08. Lasso 회귀
Lasso 회귀는 Ridge 회귀와 유사한 선형 회귀의 한 유형이다.
Ridge 회귀가 L2 정규화를 사용하는 반면, Lasso 회귀는 L1 규제를 사용하여 모델의 성능을 향상 시킨다.
Lasso 회귀는 주로 특성 선택(feature selection)의 목적으로 사용된다.
모델에서 중요한 특성만 선택하고 나머지 특성은 무시하여 모델을 더 간결하게 만드는 데 도움이 된다.
Lasso 회귀는 손실 함수에 L1 패널티 항을 추가하여 모델의 복잡성을 제한한다.
이러한 패널티 항은 회귀 계수의 절댓값의 합으로 계산된다.
따라서 Lasso 회귀는 일부 회귀 계수를 정확히 0으로 만들어 해당 특성을 모델에서 제외하는 효과를 가진다.
이는 모델의 해석이 용이해지고, 불필요한 특성을 제거하여 과적합을 방지하고 모델의 일반화 성능을 향상시키는 데 도움이 된다.
간단히 말해, Lasso 회귀는 선형 회귀 모델에 L1 규제를 적용하여 특성 선택과 모델의 복잡성을 제어하는 방법이다.
이를 통해 중요한 특성을 식별하고 모델의 해석이 용이한 간결한 형태로 만들 수 있다.
Ridge와 Lasso 중에 무엇이 더 좋은가를 따질 수는 없지만 일반적으로 Ridge(L2)를 더 많이 사용한다.
정규화에 대한 하이퍼파라미터의 값이 커지면 Bias 에러값과 Variance 에러값은 어떻게 변하게 될까?
정규화에 대한 하이퍼파라미터의 값이 커지게 되면 필요 없는 파라미터를 0으로 보내는 현상을 더 키워라라는 의미가 되기에 모델의 복잡도(파라미터의 수)가 줄어든다.
모델의 복잡도가 줄어들면 Bias 에러값은 커지고 (파라미터의 수가 줄어들어 학습 데이터셋을 잘 표현하지 못한다.) Variance 에러값은 작아진다.(모델의 복잡도가 줄어들어 어떤 데이터가 들어와도 비슷비슷하게 잘 못 맞춘다.)
Ridge를 사용했을 때보다 Lasso를 사용했을 때 파라미터가 더욱 희소해진다(사라진다).
0을 값을 가진 파라미터가 더 많아지게 하는 방법은 무엇이 있을까?
1. 하이퍼파라미터의 값을 키워준다.
2. 지수값을 줄인다.
-> 더 좋은 결과를 가져올지는 확신할 수 없다.
'머신러닝' 카테고리의 다른 글
🤖 정확도, 정밀도, 재현율, 특이도, F1 점수? (0) 2024.02.26 🤖 데이터 유출(Data Leakage)와 파이프라인(pipeline) (1) 2024.02.26 🤖Machine Learning_최적화(Optimization) (0) 2024.02.20 🤖Machine Learning_Regression(회귀) (0) 2024.02.20 🤖Machine Learning? (0) 2024.02.20