클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

머신러닝의 이해 4 - 머신러닝 개념 정리 및 과대적합 · 과소적합 · 일반화에 대하여 본문

인공지능/머신러닝

머신러닝의 이해 4 - 머신러닝 개념 정리 및 과대적합 · 과소적합 · 일반화에 대하여

huenuri 2024. 9. 13. 16:51

지금까지 배운 내용을 머신러닝 내용을 한번 정리하는 시간을 갖기로 하자. 첫날 수업의 영상이 없어 걱정이었는데 이렇게 선생님이 한번 복습으로 정리해주시니 이해가 잘 되었다.


 
 

1. 머신러닝 개념 정리하기

 
머신러닝은 새로운 데이터가 들어왔을 때 이전 데이터에서 이 데이터를 예측하는 과정을 말한다. 학습 알고리즘을 통해서 성능을 높여나가는 것이 우리의 최종 목적이 된다.
 

 
클래스의 개수에 따라 달라지는데 2개이면 이진분류, 3개 이상이면 다중 분류라고 한다. 이번에는 머신러닝 7 과정에 대해서 정리해보기로 하자.
 

 
전처리 과정을 통해 이상치나 결측치를 채워준다. 단위변환은 KNN 모델에서 많이 사용하는데, 이 모델은 새로 들어온 데이터와 원래 있는 데이터의 최근 거리를 계산한다. 그렇기에 데이터들의 단위가 중요하게 적용된다.
모델 이름을 지어주기 전에 커스텀을 해주는데 이것을 하이퍼 파라미터라고 한다. 이웃 모델의 하이퍼 파라미터는 이웃의 수이다.


 

 

2. 키와 몸무게 데이터를 활용하여 BMI 예측 실습하기

 

 
Orange는 코드 몰라도 단순 위젯을 사용해 데이터 분석을 할 수 있는 도구이다. 데이터를 가져와서 데이터 테이블에 담아주는데, 데이터를 불러오기 위해 테이블 형태로 담는 기능이라고 할 수 있다.
이렇게 500개의 데이터가 들어와서 500개가 나가는 것도 볼 수 있다.


 
 
데이터를 분류하는 과정은 매우 중요하므로 다시 한번 살펴보기로 하자. 데이터는 X와 Y로 나누어주는데, X는 문제 데이터라고도 한다. 입력 특성이 되는 데이터로서 각각의 특성에 영향을 미쳐 결과를 나타내는 데이터는 정답 데이터라고 한다.
문제 데이터는 입력 특성(feature), 속성(attribute), 독립변수라고 하며, 정답데이터는 라벨(label), taget, 종속변수라고 한다.
이렇게 바로 학습을 하고 잘 학습을 했는지 평가를 하는데, 한정된 데이터를 학습시키기 위해 데이터를 나누어준다. 이때 , 학습은 7, 평가는 3을 사용한다.

 
오렌지에서는 Data Sampler가 데이터를 나누어준다.
 

 
70이 기본이고 아래에 보면 데이터가 350이 들어와서 150이 나가는 것을 볼 수 있다. 연결되는 데이터는 train과 test로 나누어진다. 연결되는 곳을 더블클릭 해보면 70%는 훈련 데이터에, 나머지 30%는 평가 데이터에 넣어준다.
 

 
이 나눠진 데이터로 학습과 평가를 하게 되는데, 두 개의 모델을 사용해서 진행해보았다. KNN 모델은 최근접 이웃 모델로 각각의 특성에 따라 새로 들어온 모델의 가장 가까운 곳을 자신의 라벨로 예측한다. tree 모델은 의사결정 나무라고도 하는데 두 개의 데이터를 예측과 평가했을 때, CA라고 하는 분류 정확도를 나타낸다.
 

 
정확도는 0~1의 값을 가지고 1에 가까울수록 정확한 모델이라고 할 수 있다. 하지만 무조건 1에 가깝다고 좋은 수치는 아니다. 일반화하는 과정이 중요하다. 여기에 대해서 한번 학습해보기로 하자.


 
 
 

3. 일반화, 과대적합, 과소적합

일반화, 과대적합, 과소적합을 잘 알고 있어서 성능 좋은 모델을 만들 수 있다. 일반화는 모든 모델에 적용하여 동일한 정확도가 나오는 것을 의미한다. 모든 모델에 적용하여 비슷한 성능이 나오는 것이 좋은 모델이 된다.
 

아기는 이러한 것이 공이라고 학습을 하게 된다.
 
 

 
하지만 축구공만을 공이라고 생각한 아기는 농구공이나 공프공은 공이라고 생각하지 못하는데 이를 과대적합이라고 한다. 이는 특성 유형에 대해서만 과하게 학습을 해서 다른 데이터가 들어왔을 때 제대로된 성능을 내지 못하는 경우를 말한다. 한 가지 데이터에만 학습이 되어 있어 시야가 좁아져 있기에 새로 들어온 데이터에 대해 성능을 내지 못하는 것이다.


 
 
 

이번에는 엄마가 아기에게 모든 공은 그냥 둥글다고 두리뭉실하게 학습을 시켰다. 
 
 
 

이번에는 train 데이터도 test 데이터에 대해서도 제대로된 학습을 하지 못한 경우이다.
 
 
 

대부분 과대적합일 경우가 많다. KNN 모델에서 이웃의 수를 1로 잡으면 어떻게 될까? 가까이 있는 곳의 데이터를 예측하게 되니 과대적합이 되는 경우가 많이 발생한다. 이웃의 수를 너무 크게 잡으면 어떻게 될까? 이런 경우에는 학습이 제대로 되지 않아 과소적합이 될 확률이 크다.
하나의 모델에 과하게 학습된 KNN 모델은 이웃의 수가 적을수록 과대적합이고, 이웃의 수가 많을수록 과소적합이 된다. 그중 3, 5, 7이 일반화된 모델로 본다.
 
 

 
 
 
 

train 데이터와 test 데이터의 차가 별로 나지 않아야 좋은 모델이다.


 
 
 

학습을 마치고

첫째날 수업을 선생님께서 한번 복습시켜주셔서 정말 좋았다. 첫 수업 영상이 없는 것도 참 괜찮았다. 그러면서 오히려 자료를 많이 찾아보고 스스로 공부가 많이 되었기 때문이다.
이 시간을 통해 어떤 상황에서든 감사해야 한다는 것을 깨닫게 되었다. 사실 일상을 살아가다보면 불만 사항이 생기고 도무히 이해가 안되는 분노하는 상황도 많이 발생한다. 아침에 난 그런 문제로 에너지를 많이 소진하기도 했었다.
 
하지만 지나고나면 그 모든 과정이 꼭 필요했다는 걸 알게 되고 오히려 더 좋은 결과로 승화되는 걸 많이 보게 된다. 티스토리의 블로그를 하루에 15개밖에 공개할 수 없다는 것에 대해서도 그냥 감사히 받아들이기로 했다. 여러번 이 일에 대해 문제를 제기했지만 전혀 받아들여지지 않는 걸 보면 회사의 방침이 어쩔 수 없는 것 같았다.
내가 해결할 수 없는 문제에 대해서는 받아들이는 것도 마음의 행복을 찾는 좋은 길이다.