티스토리 뷰
728x90
모델의 일반화 오차 종류
편향
- 원래 의도한 기능과는 다르게 한 범주를 다른 범주보다 "특혜"를 주는 등 "불공정"한 결과를 만드는 오류
- 잘못된 가정으로 인해서 발생
- 데이터가 실제로는 2차인데 선형으로 가정해서 과소 적합되는 형태
분산
- 훈련 데이터에 있는 작은 변동에 모델이 과도하게 민감하게 반응해서 나타나는 것
- 자유도가 높은 모델(고차 다항 회귀 모델)이 높은 분산을 가지기 쉬운데 분산이 커지면 과대 적합
줄일 수 없는 오차
- 데이터 자체에 있는 잡음 때문에 발생
- 이 오차는 모델을 가지고 제거할 수는 없고 데이터 소스를 수정하거나 이상치를 감지해서 제거하는 방법을 이용
정리
- 모델의 일반화 오차는 세가지 오차의 합으로 표현
- 모델의 복잡도가 커지면 분산이 늘어나고 편향이 줄어들고 반대로 모델의 복잡도가 줄어들면 편향이 커지고 분산이 작아지게 된다.
- 이를 분산/편향 트레이드 오프라고 한다.
규제
과대 적합을 줄이는 방법 중 하나로 자유도를 줄이는 방법이 있다. 자유도를 줄이기 위해서는 다항식의 차수를 줄이면 된다.
Loss
- L1 Loss: 실제 값과 예측치 사이의 오차의 절대값을 구한 후 전체를 더한다.
편차가 다른 경우 값이 다르게 나오지 않을 수 있습니다. - L2 Loss: 오차 제곱 합: 이상치에 영향을 크게 받음
- Outlier가 적당히 무시되기를 원하면 L1 Loss 를 사용
- Outlier의 등장에 신경을 써야 하면 L2 Loss 를 사용
- 극단치(outlier) : 통계적 자료분석의 결과를 왜곡시키거나, 자료 분석의 적절성을 위협하는 변수값 또는 사례
L1 Loss(MAE, Mean Absolute Error) | L2 loss(MSE, Mean squared Error) |
![]() |
![]() |
일반화 시키는 방법
- 공선성을 다루거나 잡음을 제거해서 과대 적합을 방지
- 모델 복잡도에 패널티를 주는 방법: 규제(영향력이 적은 피처를 제거하거나 영향력을 감소)
더보기
Ridge: L2 정규화, 영향력을 감소
Lasso: L1 정규화, 영향력이 적은 피처가 제거되기도 함
Elaticnet: L1 과 L2 정규화의 조합
Ridge | Lasso | Elasticnet |
|
|
|
비용 함수 ![]() |
![]() |
![]() |
![]() |
조기 종료
- 경사 하강법 과 같은 반복적인 학습 알고리즘을 규제하는 다른 방식은 검증 에러가 최소값에 도달하면 훈련을 중지시키는 것으로 조기 종료라고 합니다.
- 훈련을 할 때 에러는 줄어드는 것이 일반적이지만 교차 검증을 수행할 때 에러가 일시적으로 멈추었다가 다시 상승하는 경우가 있는데 이 경우 훈련 데이터에 과대적합되기 시점입니다.
- 조기 종료는 검증 에러가 최소에 도달하는 즉시 훈련을 멈추는 것
- 이 경우는 반드시 훈련 데이터 와 검증하기 위한 데이터를 나누어서 수행을 해야 합니다.
선형 회귀에서의 데이터 변환
- 선형 회귀 모델은 피처 와 타겟 사이에 선형의 관계가 있다고 가정하고 최적의 선형 함수를 찾아서 결과를 예측하는 방식인데 가장 좋은 성능을 발휘하는 경우는 정규 분포에 가까운 형태인 경우 입니다.
- 특정 값의 분포가 한쪽에 치우친 왜곡된 분포일 경우 예측 성능에 부정적인 영향을 미칠 가능성이 높음
- 피처를 스케일링 하거나 정규화 작업을 수행해서 사용하는데 스케일링하거나 정규화 작업을 수행한 경우가 반드시 성능이 좋지만은 않기 때문에 중요 피처들이나 타겟 값의 분포가 심하게 왜곡된 경우에만 변환 작업을 수행
- 타겟은 거의 대부분 로그 변환을 수행
- 정규 분포로 변환을 하면 원래의 값을 찾을 수 없을 수 있기 때문
- 일반 log 함수를 이용하게 되면 언더플로우가 발생할 수 있기 때문에 log 함수를 적용한 후 에 1을 더해서 언더플로우를 방지하는데 이에 사용되는 함수가 numpy.log1p()
sklearn을 이용해 피처 데이터 세트에 적용하는 변환 작업
- StandardScaler(평균이 0 분산이 1인 표준 정규 분포를 가진 데이터 세트로 변환) 와 MinMaxScaler(최소값이 0 최대값이 1인 분포)
- 앞에서 수행한 Scale 된 데이터에 다항 특성을 추가
- log 함수를 적용하는 log 변환: 일반적으로 선형회귀에서 첫번째 방법으로는 성능 향상을 가져오는 경우가 거의 없으며 두번째 방법이 조금 더 유용하기는 한데 피처가 많은 경우 피처의 수가 기하 급수적으로 늘어나서 과대 적합이 발생할 가능성이 있어서 로그 변환을 많이 시도
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 알고리즘
- 인프런강의후기
- 웹프로그래밍
- Python
- ssafy기자단
- 인프런강의
- 생성형ai
- 티스토리챌린지
- 백준
- 오블완
- 위니브엠베서더
- django
- PANDAS
- 생성형 AI
- 알고리즘이론
- 전자회로
- dataframe
- 더오름
- 프로그래머스
- 제주코딩베이스캠프
- 파이썬
- SSAFY
- 코딩테스트
- 웹개발
- 백준알고리즘
- 위니브
- it도서큐레이션
- 웹
- 인프런
- SSAFYcial
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
250x250