Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

archive

[1주차 (4)] 머신 러닝 기본 개념 본문

ML_AI/네이버 부클 AI 엔지니어 기초 다지기 : AI Tech 준비과정

[1주차 (4)] 머신 러닝 기본 개념

안정민 2024. 5. 2. 15:47

1. Underfitting & Overfitting

- fit이라는 표현은 데이터를 잘 설명할 수 있는 능력, Underfitting 은 데이터를 잘 설명하지 못 하였음을, Overfitting은 데이터를 너무 과하게 설명하였음을 의미하는 용어

- 우리의 데이터셋은 전체의 일부분에 불과하다, 이를 이용하여 전체 데이터셋에 대해 머신러닝 모델이 잘 동작하도록 훈련 시키는 것이 우리의 목적이다.

 

-만약 일부의 데이터셋, 즉 우리가 가진 데이터셋이 전체의 데이터셋과 유사 -> overfitting 이 BEST

-그러나 우리의 데이터셋은 매우 비율적으로 작기 때문에 이러할 확률이 아주 작음

 

** 데이터로 보지 못하였던 데이터, 새로운 비즈니스적 가치를 생산해내는 것이 목표, 그렇기 때문에...

-> 데이터가 모든 것을 잘 설명해야함

-> 원본 데이터는 이유가 명백하지 않다면 절대 훼손하면 안 된다.

-> 실제 워크플로우에서는 데이터 셋 기획 또한 매우 중요한 절차

-일반적인 방법은, 우리가 가지고 있는 데이터셋을 분석, 그 중 전체 데이터셋을 잘 대변할 수 있는 데이터셋을 추출하여 머신러닝에 투입하는 것이다.

 

-Underfitting 방식을 방지하는 방법 : 더 많은 데이터로 더 오래 훈련시키기, feature을 더 많이 반영해준다던지, variance가 높은 머신러닝 모델을 사용하면 어느정도 방지 가능

 

-Overfitting 방지 기법 :  정규화 기법 , 즉 모델이 노이즈 데이터에 민감하게 반응하지 않게 데이터를 규제화

(1) Early Stopping

(2) Parameter norm penalty

(3) Data Augmentation

(4) Noise Robustness

(5) Label Smoothing

(6) Dropout

(7) Batch Normalization

- 주황색으로 칠해진 부분은 정형 데이터에 사용할 수 있는 기법들임.

 

(1) Early Stopping

- Validation 데이터에서 지속적으로 에러가 증가하기 시작하는 지점 바로 이전에 Stop 하는 방법

-Training 에러는 계속해서 줄어들고 있으나, Validation 에러는 어느 지점에서부터는 에러가 상승하게 된다, 적정선을 찾아내는 것이 Early Stopping, 우리는 이러한 관계를 Trade-off 관계라고 정의한다.

 

(2) Parameter Norm Penalty

-노이즈의 민감하지 않게 모델을 훈련하는 방법

-패널티 훈련 전인 초록색은 노이즈에 민감하게 반응하는 반면, 트레이닝 후인 파란색 선은 노이즈에 민감하게 반응하지 않는 것을 확인할 수 있다.

 

(3) Data Augmentation

- 컴퓨터 비전 : 원본 이미지를 회전, 뒤집기, 늘리기 등의 기법을 활용하여 다양화시키는 것

-데이터를 의도적으로 증강시켜 머신러닝 모델에게 더 다양한 경험을 할 수 있도록 하는 것

-의미 있는 데이터가 많을 수록 분석하는 것이 용이해진다.

- 방식 소개 : Smote

-주로 imbalance한 데이터를 밸런싱할 때 사용되는 기법 중 하나

-모든 데이터에 대해 증강시키는 것이 아니라 imbalance한 데이터를 기준으로 증강을 진행함

-imbalance한 데이터를 하나 찾아 기준으로 설정하고, 이 데이터를 기준으로 근처에 있는 데이터를 찾아내고, 이 두 데이터 사이에 있는 데이터를 생성해내는 방식으로 데이터 증강

 

(4) Dropout

- 무작위로 노드의 연결을 끊어버리는 방식의 정규화 기법

-모든 feature을 사용하는 것이 아니라, 특징의 일부만을 사용하는 방법이다.

- tree와 유사, 즉 tree 내부에도 불필요한 데이터가 있을 수 있음, 우리는 이를 가지치기하여 나무가 잘 자라나도록 조정할 수 있다

 

 

 

2. Validation 전략

-Test dataset : 가장 중요한 데이터 셋, 테스트 데이터셋을 바탕으로 정량적인 비교가 진행이 되어야하기 때문이다.

-프로젝트 결과물로 직결, 최대한 전체 데이터를 대표하는 데이터셋으로 설정하는 것이 좋음

-최대한 테스트 데이터셋을 변경하는 것을 지양해야, 프로젝트의 원활한 진행을 방해할 수 있다, 그래도 우리가 컨트롤할 수 있는 Validation dataset을 변경하는 것이 이상적이기 때문

 

-Validation dataset : 내가 만들고 있는 머신러닝 모델을 테스트셋에 적용하기 전에, 모델의 성능을 평가하기 위해 사용하는 데이터셋으로, 이를 통해 정규화 기법을 적용할 수 있다

-이는 테스트 데이터셋과 최대한 유사하게 구성하는 것이 좋다.

-그러나 테스트 데이터셋의 자료를 접근할 수 없는 경우? (예측의 경우) -> 따라서 문제의 맥락을 파악하고, 최대한 전체 데이터셋과 유사한 데이터로 구성하는 것이 바람직하다.

 

-Train dataset : 머신이 보고 학습하는 데이터

-Validation 데이터를 정해진다면 나머지 데이터로 자동으로 정해짐, 그러나 노이즈 데이터에 대한 handling에 따라 셋이 달라질 수 있음

 

-Hold-out Validation : 하나의 validation set을 고정한다는 의미, 하나의 트레인과 하나의 밸리데이션을 사용한다는 뜻이다.

-만약 나눌 때 클래스의 비율을 고려하지 않는다면 문제가 발생할 수 있으니 주의해야 한다.

**어떻게 train set과 validation set을 나눌 수 있을까? 

(1) Random sampling : 랜덤하게 배치, 전체 데이터셋을 대표할만한 데이터셋이 아닐 가능성이 있을 수 있음, 더 좋은 방법이 필요하다

(2) Stratified split : 가장 대중적으로 많이 사용되는 방법, 특정 카테고리의 비율을 일정하게 유지하며 나누는 방법

-보통은 8:2로 하는 것이 대중적이나 유동적으로 변환 가능, scikit-learn의 라이브러리를 활용하면 구현이 가능하다

 

 -Cross Validation : 테스트와 밸리데이션 셋을 여러 개 구성하는 방식 (<-> Holdout validation)

- 각 쌍에 적합한 여러 개의 모델을 생성, test dataset에 대해 점수를 매겨 가장 적합한 모델을 찾아내는 방식

- k fold 기법이 가장 대표적인 기법 중 하나임

 

-셋을 나누는 기법으로 위의 Random sampling 과 Stratified split 을 동시에 적용 가능하며, 위의 그림은 Stratified split을 적용한 kfold 기법을 도식화한 것이다.

-셋을 여러 개로 나눌 때 클래스 별 데이터의 크기를 비율과 동일하게 맞춘 것을 볼 수 있음 

 

-Group K-fold 기법은 나눌 때 이를 뭉쳐있게 구성하는 방식, 같은 그룹이 동일한 폴드에 들어가지 않도록 split하는 기법

-이러한 기법이 가능할 조건 -> 그룹은 항상 폴드 갯수보다 커야 함

 

-시계열 데이터의 경우 데이터의 순차 시간을 고려해 셋을 선정

-시계열 데이터이기 때문에 이러한 방법을 선정하는 이유는 미래 데이터를 가지고 과거 데이터를 예측하는 일을 방지하기 위함이다.

-앞쪽 폴드로 갈 수록 데이터의 수가 작아질 수 있는데, 이를 감안해야 한다.

 

 

 

3. 모델의 재현성 (Reproducibility)

- 반복해서 실행하였을 때 똑같은 조건 하에 같은 결과가 도출, 샘플링이 되어야 모델의 성능을 측정할 수 있기 때문에 재현성이 필요하다

-머신러닝의 랜덤성 때문에 우리가 풀고자하는 문제의 데이터가 매번 바뀌게 된다면 모델의 성능 측정 시 우리가 설정한 feature범위나 전처리 과정이 적절한 지 판단할 수 없게 된다.

-random성을 제거하는 작업이 필요 -> Fix Seed

- 이를 통해 머신러닝 모델에게 했던 작업 ( Feature 엔지니어링, 모델 파라미터 핸들링)들이 의미가 있는 행동이었는지 아닌지에 대해 validation 셋을 통해 확인 가능해진다.

 

 

4. Machine Learning workflow

 

 

 

 

 

 

 

본 포스트의 학습 내용은 부스트클래스 <AI 엔지니어 기초 다지기 : 부스트캠프 AI Tech 준비과정> 강의 내용을 바탕으로 작성되었습니다.