TIL_50 : 정규화
72523 단어 TILmachine learningTIL
🙄 편향 & 분산
➡ 편향
- 모델이 너무 간단해서 데이터의 관계를 잘 학습하지 못하는 경우
모델의 편향,bias
가 높다고 함
- 높은 차항의 회귀를 사용해서
training
데이터에 거의 완벽한 곡선을 보이는 모델 - 모델의 복잡도를 늘려서
training
데이터의 관계를 잘 학습 - 편향이 낮은 모델이라고 함
- 편향이 높은 머신 러닝 모델은 너무 간단해서 데이터의 관계를 잘 학습하지 못함
- 편향이 낮은 모델은 주어진 데이터의 관계를 아주 잘 학습함
training
데이터의 관계를 완벽하게 나타내는, 편향이 낮은 모델이 무조건 좋은 것은 아님
➡ 분산
- 데이터 셋 별로 모델이 얼마나 일관된 성능을 보여주는지를 분산,
variance
이라고 함 training set
을 사용했을 때랑,test set
을 사용했을 때
성능에 큰 차이를 보이면 모델의 분산이 크다라고 함
➡ 편향-분산 트레이드오프 (Bias-Variance Tradeoff)
- 일반적으로 편향과 분산은 하나가 줄어들수록 다른 하나는 늘어나는 관계
- 둘 중 하나를 줄이기 위해서는 다른 하나를 포기해야 됨
- 이 관계를 편향-분산 트레이드오프 라고 부름
과소적합
- 단순한 모델은 복잡도가 너무 떨어져 곡선 관계를 학습할 수 없음
- 대신 모델이 간단하기 때문에 어떤 데이터가 주어지든 일관된 성능을 보임
- 위 모델은 편향이 높고, 분산이 낮은 모델
- 모델이 과소적합,
underfit
됐다고 함
과적합
- 복잡한 모델은
training
데이터에 너무 잘 맞는게 문제 training
데이터의 패턴을 학습한 것이 아닌 데이터 자체를 외워버리기 때문에
training
데이터에 대한 성능은 아주 높지만,test
데이터에 대한 성능은 떨어짐- 편향이 낮고, 분산이 높은 모델
- 모델이 과적합,
overfit
됐다고 함
편향-분산 트레이드오프 문제는 머신 러닝 프로그램들의 성능과 밀접한 관계가 있어
편향과 분산, 다르게는 과소적합과 과적합의 적당한 밸런스를 찾아내는 게 중요
➡ scikit-learn으로 과적합 문제 직접 보기
- 과소적합을 막는 방법은 아주 간단함
- 충분히 복잡한 모델을 쓰면 된다
= 선형 회귀 보다는 높은 차원의 다항 회귀를 쓰면 된다
🙄 정규화
➡ 정규화 (Regularization)
- 모델 과적합 현상을 방지해 주는 방법 중 하나
- 가설 함수의 값들이 너무 커지는 걸 방지해서 과적합을 예방
- 과적합된 함수는 보통 위아래로 굴곡이 큰 특징이 있음
- 많은 굴곡을 이용해서
training
데이터를 최대한 많이 통과하도록 하기 위함 - 함수가 급격하게 변화한다는 것은 함수의 계수, 가설 함수는 값들이 굉장히 크다는 뜻
- 정규화는 모델을 학습시킬 때 값들이 너무 커지는 것을 방지
training
데이터에 대한 오차는 조금 커지더라도 가설 함수를 좀 더 완만하게 만듦- 여러 데이터 셋에 대해 더 일관된 성능을 보이기 때문에 과적합을 방지할 수 있음
➡ L1, L2 정규화
- 그동안 좋은 가설 함수의 기준은
training
데이터에 대한 오차가 작은 함수 training
데이터에 대한 오차도 작고 값들도 작아야 한다로 바꿔주자
L1 정규화
- L1 정규화를 사용하는 회귀 모델을
Lasso 회귀 모델
,Lasso 모델
이라고 함
- 은 과적합과 상관이 없기 때문에 의 절댓값은 더해주지 않음
- 을 정규화 항이라고 함
ex) 아래와 같은 5차항 함수 2개가 있다면 :
평균 제곱 오차 항 | 정규화 항 | 손실 | |
---|---|---|---|
5 | 20 | 25 | |
1 | 180 | 181 |
- 가설 함수 는 데이터에 대한 평균 제곱 오차는 보다 크지만
값들이 훨씬 작기 때문에 더 좋은 가설 함수라고 평가
상수
- 는 값들이 커지는 것에 대해 얼마나 많은 페널티를 줄 건지 결정
- 오차와 값 중 어떤 것을 줄이는 게 중요한지는 상수 에 따라 결정
값이 크면 값을 줄이는 게 중요
값이 작으면 평균 제곱 오차를 줄이는 게 중요
L2 정규화
- L1 정규화와 같은 개념
- 더해주는 정규화 항이 다름
- L2 정규화를 사용하는 회귀 모델은
Ridge 회귀 모델
,Ridge 모델
이라고 함
➡ scikit-learn으로 과적합 문제 해결
🙄 L1, L2 정규화 일반화
- 위에는 모두 다항 회귀 모델을 예시로 사용
- 정규화는 모델의 파라미터에 대한 손실 함수를 최소화 하는 모든 알고리즘에 적용 가능
- 손실 함수에 정규화 항 또는 을 더하면 됨
- 그러나 로지스틱 회귀 모델은 자동으로 L2 정규화를 적용
penalty
라는 옵셔널 파라미터로 정규화 기법을 정해 줄 수 있음
LogisticRegression(penalty='none') # 정규화 사용 안함
LogisticRegression(penalty='l1') # L1 정규화 사용
LogisticRegression(penalty='l2') # L2 정규화 사용
LogisticRegression() # 위와 같음: L2 정규화 사용
🙄 L1, L2 정규화 차이점
L1
L2
차이점
- L1 정규화는 여러 값들을 0으로 만듦
- 모델에 중요하지 않다고 생각되는 속성들을 아예 없애버림
- 속성 20개를 사용해 2차 다중 다항 회귀 모델을 만든다면 속성은 총 230개
- 모델을 학습시킬 때 많은 자원(RAM, 시간) 소모
- L1 정규화를 사용하면 속성의 개수를 많이 줄일 수 있음
- L2 정규화는 값들을 0으로 만들기보다는 조금씩 줄임
- 모델에 사용되는 속성들을 L1처럼 없애지 않음
- 딱히 속성의 개수를 줄일 필요가 없다고 생각되면 L2 정규화 사용
Author And Source
이 문제에 관하여(TIL_50 : 정규화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wumusill/TIL51-정규화저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)