archive
[1주차 (4)] 머신 러닝 기본 개념 본문
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 준비과정> 강의 내용을 바탕으로 작성되었습니다.
'ML_AI > 네이버 부클 AI 엔지니어 기초 다지기 : AI Tech 준비과정' 카테고리의 다른 글
[2주차 (2)] 피쳐 엔지니어링 - 2 (0) | 2024.05.06 |
---|---|
[2주차 (1)] 피쳐 엔지니어링 - 1 (0) | 2024.05.06 |
[1주차 (5)] 트리 모델 (0) | 2024.05.02 |
[1주차 (3)] 정형 데이터 전처리 (0) | 2024.05.02 |
[1주차 (2)] EDA, 탐색적 자료 분석 (0) | 2024.05.01 |