반응형
벌써 Week2다 뿌애앵
데이터 검증(Validation)
모델이 데이터를 제대로 학습했는지, 새로운 데이터에 대해 잘 일반화할 수 있는지 확인하는 과정이다.
- 목적: 과적합(overfitting)이나 과소적합(underfitting)을 방지하고 모델 성능을 평가 하기 위해 사용된다.
- 검증 데이터: 학습에 사용되지 않는 데이터를 통해 모델이 얼마나 잘 일반화되는지 측정한다.
⚠️과적합(overftting)과 과소적합(underfitting)은 머신러닝 모델이 데이터를 학습하는 과정에서 발생할 수 있는 대표적인 문제이다.
과적합(Overfitting)
정의:
모델이 훈련 데이터에 지나치게 적합하여 학습 데이터는 높은 성능을 보이지만, 새로운 데이터(테스트 데이터)에서는 성능이 저하되는 현상이다.
특징:
- 훈련 데이터에서는 정확도는 높다.
- 테스트 데이터(또는 새로운 데이터)에서의 정확도는 낮다.
- 모델이 데이터의 노이즈나 불필요한 패턴까지 학습한다.
원인:
- 모델이 너무 복잡함(매우 많은 파라미터나 높은 자유도).
- 데이터가 부족하거나, 데이터가 지나치게 특정 패턴을 치우쳐 있음.
- 훈련 데이터에 대한 지나친 반복 학습.
해결 방법:
- 더 많은 데이터 확보: 모델이 일반화할 수 있도록 데이터 양을 늘린다.
- 모델 단순화: 파라미터 수를 줄이거나, 간단한 모델을 선택한다.
- 정규화(Reqularization): 과적합을 방지하는 페널티를 모델에 추가한다.
- 드롭아웃(Dropout): 신경망에서 일부 뉴런을 무작위로 비활성화하여 학습한다.
- 교차 검증(Cross Validation): 데이터를 효율적으로 나누고 검증한다.
과소적합(Underfitting)
정의:
모델이 훈련 데이터의 패턴을 충분히 학습하지 못한 상태로, 훈련 데이터와 테스트 데이터에서 성능이 낮은 현상이다.
특징:
- 훈련 데이터와 테스트 데이터 모두에서 성능이 낮다.
- 모델이 데이터의 중요한 패턴을 놓친다.
원인:
- 모델이 너무 단순하다(파라미터가 부족하거나 자유도가 낮다).
- 학습 데이터가 불충분하거나 부적절한 전처리.
- 학습이 충분히 진행되지 않음(학습 횟수 부족).
해결방법:
- 모델 복잡성 증가: 더 많은 파라미터나 고급 모델을 사용한다.
- 특성 추가(Feature Engineering): 데이터에 더 유용한 정보를 포함시킨다.
- 더 오래 학습: 학습 과정을 더 진행하여 패턴을 잘학습하게 한다.
- 데이터 전처리 개선: 데이터 정규화나 스케일일 등 적절한 전처리를 수행한다.
적합한 상태(Optimal Fit)
모델이 훈련 데이터에서 학습한 패턴을 테스트 데이터에서도 잘 적용하여 훈련데이터와 테스트 데이터 모두에서 높은 성능을 보이는 상태를 목표로 한당!
데이터 분할(Splitting Data)
데이터를 모델 학습과 평가 목적으로 나누는 과정이다.
데이터 분할 비율
- 훈련 데이터 (Training Data): 60 - 80%
모델이 학습시키는 데 사용되는 데이터. - 검증 데이터 (Validation Data): 10 - 20%
모델의 하이퍼파라미터를 조정하거나 성능을 평가하는 데 사용되는 데이터. - 테스트 데이터 (Test Data): 10 - 20%
모델 성능을 최종적으로 확인하는 데 사용되는 데이터.
데이터 분할 방법
- 무작위 분할 (Random Split):
- 데이터를 랜덤하게 나눠 각 세트에 데이터가 고르게 분포되도록 하는 방법이다. 데이터셋의 분포가 균일하다면 적합한 방법이다.
- 순환 분할 (Rotation Split):
- 데이터를 시계열 데이터처럼 순서가 중요한 경우, 일정한 구간 단위로 나누는 방법이다.
- 예: 과거 데이터를 훈련에 사용하고 미래 데이터를 검증에 사용 한다.
- 🔔확인해야할 부분
- 데이터의 분포가 모든 분할 세트에서 비슷해야 모델이 특정 패턴에 과적합하지 않다.
- 시계열 데이터처럼 순서가 중요한 경우는 무작위 분할보다 순환 분할이 적합하다.
k-fold란?
데이터를 k로 나누는 방법이다. 각 분할된 데이터를 fold라고 부른다.
k값: 데이터셋을 몇 개로 나눌지 결정한다. (일반적으로 5또는 10을 사용한다.)
k-fold cross validation
k-fold를 활용해 모델 성능을 검증하는 방법이다.
- 방법:
- 데이터를 k개의 fold로 나눈다.
- 한 번에 하나의 fold를 검증용 데이터로 사용하고, 나머지 fold를 훈련 데이터로 사용한다.
- 이 과정을 k번 반복해서 모델의 성능을 기록한다.
- 최족으로 k번의 성능을 평균 내어 모델의 일반화 성능을 평가한다.
- 장점:
- 데이터를 최대한 활용할 수 있다.
- 과적합 방지 및 일반화 성능 평가에 유리하다.
- 단점:
- 데이터셋이 매우 클 경우 계산 비용이 높아질 수 있다.
- 예시:
- k = 5인 경우:
- 데이터를 5개의 fold로 나눈다.
- 첫 번째를 검증용 데이터로 사용하고, 나머지 4개를 훈련 데이터로 사용한다.
- 이를 5번 반복해 5개의 결과를 평균 낸다.
- k = 5인 경우:
정리
- 데이터 검증(Validation): 모델 성능을 평가하기 위한 단계.
- 데이터 분할(Splitting Data): 학습/검증/테스트 데이터로 나눔.
- 무작위 분할, 순환 분할 방법 존재.
- k-fold: 데이터를 k개의 그룹으로 나누는 방법
- k-fold cross validation: k개의 그룹을 교차 검증으로 활용하여 모델 성능을 평가하는 방법.
그렇다! 역시 정리를 하면서 공부하니 조금씩 더 알꺼같다 갈길은 멀지만! 꾸준히!
** 그냥 하루하루 개인 공부한 것을 끄적 거리는 공간입니다.
이곳 저곳에서 구글링한 것과 강의 들은 내용이 정리가 되었습니다.
그림들은 그림밑에 출처표시를 해놓았습니다.
문제가 될시 말씀해주시면 해당 부분은 삭제 하도록하겠습니다. **
반응형
'public void static main > AI' 카테고리의 다른 글
[Discussion] 성능이 비슷한 모델들 중 최적 모델은 어떻게 선택할 것인가? (0) | 2025.01.20 |
---|---|
[DataModeling] Clustering 그리고 Distance Norms...... (0) | 2025.01.15 |
[Discussion] KNN(K-Nearest Neighbors)알고리즘에서 스케일링(Scaling)이 중요한 이유 (0) | 2025.01.14 |
[Discussion] SVM(Support Verctor Machine)과 KNN(K-Nearest Neighbors) (1) | 2025.01.14 |
[DataModeling] 회귀분석(Regression Analysis) (0) | 2025.01.14 |
댓글