기계학습의 핵심, Bias와 Variance
이전 글 'Ridge와 Lasso Regression의 쉬운 풀이'에서 우리는 Bias와 Variance를 훑어 보았습니다. 본 글은 bias와 variance의 개념을 다시 한 번 짚고 넘어가는 글입니다. 기계학습(Machine Learning)에 있어 중요한 개념이기 때문에 별도의 주제로 잡아보았습니다.
기계학습이든 딥러닝이든 답을 찾기 위해서는 bias-variance trade-off가 필수입니다.
그렇다면 bias는 무엇이고, variance는 무엇일까요?
[목차]
1. Bias란?
2. Variance란?
3. 모델의 복잡도
기계학습이나 딥러닝 관련 글이나 정보를 찾아보신 분들은 이 분야에서 부르는 bias가 두 가지가 있다는 점을 아실 것입니다. 첫번째는 y = ax + b의 "b"를 bias라고 부르는 경우가 있습니다. 지금 제가 언급하려는 bias는 이 bias는 아닙니다. 제가 이전 글에서부터 이야기했던 bias는 델타, 즉 실제값과 예측값의 차이를 말하는 것입니다.
상단의 그림을 보시면 왼쪽의 underfitting을 나타내는 그림에 대해서는 bias가 높다라고 이야기하고,
오른쪽의 overfitting을 나타내는 그림에 대해서는 실제값(주황색 점)과 예측값(파란색 선)의 차이가 적으니 bias가 낮다라고 이야기합니다. 이런 표현 방식은 위의 그림과 같은 '예측' 모형에서도 적용되고, 하단의 그림과 같은 '분류'모형에서도 적용됩니다.
Variance는 표준편차의 제곱값임을 알고 계실 것입니다. 말로 풀어본다면, 데이터들이 얼마나 평균으로부터 떨어져 있는지를 제곱 형태(크기의 정도를 파악하기 위해)로 바꾸었다고 설명될 것 같네요.
Bias-variance trade-off에 쓰인 variance는 그보다 조금 더 구체적입니다.
여기서의 variance는 train set의 모든 데이터들과 예측값의 차이입니다. 그리고 variance는 모델의 정확성과는 상관이 없습니다. 가령 T1부터 T5까지의 서로 다른 5개의 train set에 대한 과적합된 모델이 있다고 하였을 때는 이 모델의 정확성은 높겠지요. 하지만 궁극적인 목적은 input data와 예측값의 오차를 줄이려는 것이 아니라 진짜 데이터, f(x)를 구하는 것임을 명심하셔야 합니다.
variance가 높을수록 모형은 복잡해집니다. 1,2번의 두 그림(우측)이 이를 설명합니다. 모델의 복잡도가 높다고 하여도 정규화(regularization)등을 통해서 다시 단순하게 만들 수 있습니다. (자세한 내용은 'Ridge와 Lasso Regression의 쉬운 풀이' 참고.) 정규화 작업으로 변수의 계수를 줄이거나 0으로 만들면서 훨씬 단순하게 모형을 바꿉니다. 여러분이 알고 있는 의사결정나무도 이런 변형이 가능하구요.
그렇지 않습니다! Linear Model이 마치 절제된 모형의 느낌이 나니 그렇게 착각하실 수 있는데, '복잡성'은 때에 따라 다릅니다. 단순한 Non-linear model이 엄청나게 길게 풀어낸 Linear Model보다 복잡도가 낮을 수도 있습니다.