🔥 메타코드에서 머신러닝 입문 부트캠프 강의를 듣고 있다. 머신러닝 강의에서 그냥 무지성으로 돌렸던 코드에 대해 깊이 이해하고, 내 손으로 최적의 파라미터를 뽑아내고, 하이퍼파라미터 튜닝도 해보고 싶다. 지난 글에서는 경사하강법에 대해 배워서 엄청 어려웠는데, 머신러닝에서 중요한 개념이라 겨우 진도 뺌..! 이번 내용은 그나마 이해하기 어렵지 않았다. 휴 빅분기 실기에 대한 복습도 되고, 조금 더 정확한 개념 이해에도 도움이 되길 바라며...! 글 시작
4. 편향(Bias)과 분산(Variance) - 학습 데이터와 평가 데이터
머신러닝에서, 모델을 학습시킬 때는, 가지고 있는 데이터를 학습 데이터와 평가 데이터로 나누게 된다.
학습데이터는 모델 학습(머신러닝)에 사용하는 데이터셋이고, 평가 데이터는 모델의 평가만을 위해 사용되는 데이터셋으로 절대로 모델 학습에 사용하면 안 된다.
현업에서는 이를 간과하고 학습시킬 때 사용한 데이터를 가지고 평가하는 일도 있다고 한다.
단순하지만 중요한 부분이니 절대 놓치지 않도록 조심해야지..
평가 데이터의 크기
가지고 있는 데이터의 10~20% 정도를 평가 데이터(Test Data)로 사용한다.
학습 데이터와 평가 데이터의 분포
실제로 하나의 데이터셋을 수집한 다음, 일반적으로 랜덤 샘플링 방식을 통해 일부를 뽑아내어 평가 데이터셋으로 사용한다. 따라서 대수의 법칙에 의해 학습 데이터와 평가 데이터는 비슷한 분포를 가지게 된다.
머신러닝에서, 모델의 파라미터 수가 많아질수록 모델의 복잡도가 증가하게 된다.
파라미터 수가 늘어난다는 것은, 모델에 영향을 미치는 요인의 수가 늘어난다는 것이다.
즉, 선형 모델(y = ax + b)의 요인(a, b)보다 비선형 모델(y = ax^2 + bx + c)의 요인(a, b, c)이 훨씬 복잡하다고 볼 수 있다.
일반적으로, 반복 횟수(epoch)를 늘리면 주어진 데이터에 완벽한 학습으로 다가간다.
여기에서 과소적합(under-fitting)과 과적합(over-fitting) 개념이 등장한다.
데이터의 수가 엄청 많지만 파라미터 수가 적으면, 학습 정확도가 낮다. 즉, under-fitting될 가능성이 높다.
엄청나게 많은 데이터가 어떤 복잡한 모양을 이루고 있을 때, 파라미터 수가 적으면 단순 직선으로 이를 설명하려 할 수 있으므로 기대보다 한참 못 미치는 정확도를 보인다.
쉽게 예를 들면, 꽃 사진을 학습하는 모델이라 치자. 그럼 장미, 해바라기, 튤립 등 다양한 꽃을 보여주면서 파라미터를 '꽃잎 모양', '꽃의 색깔' 등 단순한 몇 개로만 설정한다면 장미와 튤립처럼 말려 있는 붉은 색 꽃은 다 같은 꽃으로 해석할 수 있다는 것! 다 비슷한데욥? 이렇게..
데이터 수가 적고, 파라미터 수가 많으면 학습 정확도가 높아진다. 대신 평가데이터에 대해서는 형편 없는, over-fitting이 나타날 수 있다.
학습 데이터 수가 10개밖에 안 된다고 해보자. 10가지 꽃 사진을 엄청 세세하게 배우고 익힌 모델이 있다. 예를 들면, 돌담의 장미 덩굴 같은 걸 학습했다고 치자. 학습 데이터에 대해서는 완벽하게 학습한 모델에게, 평가 데이터에서 똑같은 장미를 꽃다발로 제시하면, 모델은 그 꽃이 장미인줄 알기 힘들 것이다. 즉, 평가 정확도가 낮아질 것이다. 이를 학습 데이터에 대해 과하게 적합되었다(over-fitting)고 한다.
평균 제곱 오차(MSE)를 생각해보자. MSE 는 평균, 제곱, 오차라는 말 그대로,
각 데이터에 대한 실제 값과 예측값의 차이인 오차를, 제곱하고, 이들을 평균한 값이다.
이 식에 -세타햇 평균, +세타햇 평균을 더하고 빼서 동일한 식을 만들어 준다.
그런 다음, 이를 전개하고 정리하다 보면, 마지막에 분산과 편향의 제곱을 더한 값이 남게 된다.
보다 직관적으로 설명을 하면, 세타는 신만이 알고 있는 최적의 파라미터 값, 세타 햇은 그 세타를 예측한 값이라고 했을 때, 세타와 세타햇의 차이는 편향이고, 이는 학습데이터에 대한 정확도를 나타낸다. 위 그림을 참고하자.
분산은 실제로, 세타햇과 세타햇평균의 차이 제곱 평균이다. 아래쪽 그래프 그림을 참고해보자. 분산이 크면 그래프가 넓어진다.
일반적으로는 분산과 편향이 trade-off 관계이다.
내가 이해한대로 설명해 보자면...(얕은 이해에 주의)
예를 들어, 중국집에 가서 10명이서 메뉴를 시킨다고 해보자. 각자 시키고 싶은 메뉴를 시키라고 하면 다양한 메뉴가 나오니 분산은 커지겠지만, 원하는 메뉴를 시키기 때문에 실제 원하는 메뉴와 주문한 메뉴 사이의 편향은 줄어든다. 그러므로 다양한 메뉴를 인정하는 것(많은 파라미터)은 일반적으로 분산을 늘리고 편향을 줄인다.
반대로 메뉴를 통일해버리면(파라미터 수 제한), 분산은 줄어들겠지만 불만(원하는 메뉴와 주문한 메뉴 간 차이, 편향)은 커질 것이다.
ㅠ-ㅠ 너무 세세한 부분을 고려하면 분산이 커지고, 너무 다 퉁쳐버리면 분산은 작아지지만 편향이 커진다는 느낌을 이런 느낌으로 이해해보았다...ㅋㅋ
즉, 모델 복잡도를 적당히 잘 정해야 한다는 뜻(위 예로 치면, 짜장+짬뽕+볶음밥 중 고르세요. 라고 하는 정도로)
일반적으로는 분산과 편향이 트레이드 오프 관계이지만, 4가지 경우가 나타날 수 있다. 분산과 편향 모두 낮은 경우, 분산은 높지만 편향은 낮은 경우, 편향은 높지만 분산이 낮은 경우, 둘 다 높은 경우 이렇게! 그림을 참고해 보자.
편향은 under fitting, 분산은 over fitting과 관련이 있다.
아까 비유했던 중국집 메뉴 선택을 생각해 보면, 모든 사람의 메뉴 선택 다양성을 인정하면 분산이 늘어나겠지? 그런데 그 사람이 그 메뉴만 좋아한다는 착각을 할 수도 있다. A과장님은 잡채밥만 시키네? 이렇게. 그래서 다음엔 다른 게 먹고 싶을 수 있음에도 그냥 과장님 잡채밥 시켜놨어요^^하고 over-fitting(고정관념에 가까운...?)에 사로잡힐 수 있다는...ㅋㅋ
반대로, 걍 메뉴 다 짜장면으로 통일해! 라고만 했던 기업이라면 A과장님이 짜장면을 좋아해서 시킨 것인지 그냥 마지 못해 먹은 건지 모르겠지... 그러니까 과장님이 뭘 좋아하는지 하나도 모르는 사람이 되는.... 좀 무심한... 상황
여러가지 내가 이해할 수 있는 방향으로 이해해 보곤 있으나, 정확한 비유도 아닐 것 같아서 그냥 느낌만 참고해 주었음 좋겠다. 머신러닝 개념은 어렵지만 그만큼 배우는 점도 많은 것 같아서 좋다. 휴... 10월이 이제 3일밖에 안 남았는데 얼른 바싹 들어야지....!!
* 메타코드 서포터즈로서 강의를 제공받아 작성하였습니다. 이미지를 클릭하면 홈페이지로 이동합니다.
'빅데이터분석' 카테고리의 다른 글
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (7) 로지스틱 회귀 (1) | 2024.10.31 |
---|---|
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (6) 편향과 분산의 Trade-off를 해결하는 방법 (1) | 2024.10.27 |
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (4) 경사하강법(Gradient Descent) (1) | 2024.10.20 |
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (3) 선형 회귀(Linear Regression)와 최적화(optimization) (1) | 2024.10.20 |
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (2) 머신러닝에 사용되는 기본 수학 개념 (2) | 2024.10.13 |