728x90
4장 모델 훈련¶
4.1 선형 회귀¶
- 선형 모델은 입력 특성의 가중치 합과 편향(절편)이라는 상수를 더해 예측을 만듦
4.1.1 정규방정식¶
- 비용 함수를 최소화하는 값을 찾기 위한 해석적인 방법, 이를 정규방정식이라고 합니다.
- 유사역행렬 자체는 특잇값 분해(SVD)라 부르는 표준 행렬 분해 기법을 사용해 계산
4.1.2 계산 복잡도¶
- 정규방정식에서 역행렬 계산하는 것보다 SVD 방법에서 사용하는 계산 방법이 훨씬 더 빠름
4.2 경사 하강법(GD)¶
- 여러 종류의 문제에서 최적의 해법을 찾는 일반적인 최적화 알고리즘
- 학습률 하이퍼파라미터가 중요
4.2.1 배치 경사 하강법¶
- 반복 횟수를 아주 크게 지정하고 그레이디언트 벡터가 아주 작어지면, 즉 벡터의 노름이 어떤값(허용오차)보다 작아지면 경사 하강법이 최솟값에 도달한 것이므로 알고리즘을 중지합니다.
4.2.2 확률적 경사 하강법¶
- 배치 경사 하강법의 가장 큰 문제는 매 스템에서 전체 훈련 세트를 사용해 그레이디언트를 계산
- 확률적 경사 하강법은 매 스텝에서 한 개의 샘플을 무작위로 선택하고 그 하나의 샘플에 대한 그레이디언트를 계산
- 확률적이므로 배치 경사 하강법보다 훨씬 불안정
- 비용 함수가 매우 불규칙할 때(확률적 경사 하강법) 지역 최솟값을 건너뛰도록 도와주므로 전역 최솟값을 찾을 가능성이 높음
- 확률적 경사 하강법의 무작위성은 지역 최솟값에서 탈출시켜줘서 좋지만 알고리즘을 전역 최솟값에 다다르지 못하게 한다는 점에서 좋지 않음. 학습률을 점진적으로 감소시키므로써 이 문제를 해결할 수 있다.(담금질 기법)
4.2.3 미니배치 경사 하강법¶
- 미니배치라 부르는 임의의 작은 샘플 세트에 대해 그레이디언트를 계산
- 미니배치 경사 하강법의 주요 장점은 행렬 연산에 최적화된 하드웨어, 특히 GPU를 사용해서 얻는 성능 향상
4.3 다항 회귀¶
- 다항 회귀 : 각 특성의 거듭제곱을 새로운 특성으로 추가하ㄱ, 이 확장된 특성을 포함하는 데이터셋에 선형 모델을 훈련시키는 것
4.4 학습 곡선¶
- 훈련 데이터에서 성능이 좋지만 교차 검증 점수가 나쁘다면 과대적합된 것, 만약 모두 좋지 않으면 과소적합
- 과대적합 모델을 개선하는 한 가지 방법은 검증 오차가 근접할 때까지 더 많은 훈련 데이터를 추가하는 것
- 모델의 복잡도가 커지면 통상적으로 분산이 늘어나고 편향은 줄어듦(반대로는 편향이 커지고 분산이 작아짐) 이를 트레이드오프라고 부름
4.5 규제가 있는 선형 모델¶
- 과대적합을 감소시키는 좋은 방법은 모델을 규제하는 것(자유도를 줄이거나, 다항 회귀 모델 같은 경우 다항식의 차수를 감소)
4.5.1 릿지 회귀¶
- 규제가 추가된 선형 회귀
- 릿지 회귀는 스케일에 민감하여 데이터의 스케일을 맞추는 것이 중요
4.5.2 라쏘 회귀¶
- 중요한 특성의 가중치를 제거하려함(자동으로 특성 선택을 하고 희소 모델을 만듦)
4.5.3 엘라스틱넷¶
- 릿지 회귀와 라쏘 회귀를 절충한 모델
- 혼합 비율(r)을 사용, r=0이면 릿지 회귀와 같고 r=1이면 라쏘 회귀와 같음
- 보통 규제가 약간 있는 것이 대부분의 경우 좋음, 릿지를 기본적으로 많이 사용하지만 특성이 몇 개뿐이라고 의심되면 라쏘나 엘라스틱넷이 낫습니다.
4.5.4 조기 종료¶
- 반복적인 학습 알고리즘을 규제하는 방식은 검증 에러가 최솟값에 도달하면 바로 훈련을 중지하는 것, 이를 조기 종료라 함
4.6 로지스틱 회귀¶
- 샘플이 특정 클래스에 속할 확률을 추정하는 데 널리 사용
4.6.4 소프트맥스 회귀¶
- 로지스틱 회귀 모델은 여러 개의 이진 분류기를 훈련시켜 연결하지 않고 직접 다중 클래스를 지원하도록 일반화될 수 있음, 이를 소프트맥스 회귀 또는 다항 로지스틱 회귀라고 함
연습문제 풀이¶
1. 수백만 개의 특성을 가진 훈련 세트에서는 어떤 선형 회귀 알고리즘을 사용하나요?
- 보통은 확률적 경사 하강법(SGD), 미니배치 경사 하강법을 사용한다. 훈련 세트의 크기가 메모리에 맞다면 배치 경사 하강법도 가능하다. 하지만 정규방정식은 계산 복잡도가 "특성의 갯수"에 따라 매우 빠르게 증가하기에 사용할 수 없다.
- 확률적 경사 하강법(SGD), 미니배치 경사 하강법, 배치 경사 하강법 O / 정규방정식 X
2. 훈련 세트에 있는 특성들이 각기 다른 스케일을 갖고 있다. 이런 데이터에 잘 작동하지 않는 알고리즘은? 그 이유는? 문제 해결은 어떻게 하는가?
- 길쭉한 타원형의 비용함수가 형성된다. 경사하강법 (GD) 알고리즘이 수렴하는데 오래걸린다. 그래서 이를 해결하기 위해서는 데이터의 스케일을 조절해야한다. "정규방정식"은 스케일 조정없이도 잘 작동한다. 그리고 "규제가 있는 모델"은 특성의 스케일이 다르면 지역 최적점에 수렴할 수도 있다. 실제로 규제는 가중치가 커지지 못하게 제약을 가하므로 값이 작으면 큰 값의 특성에 비해 무시되는 경향이 있다.
3. 경사 하강법으로 로지스틱 회귀 모델을 훈련시킬 때 지역 최솟값에 갇힐 가능성이 있을까요?
- 로지스틱 회귀 모델의 비용함수는 볼록함수(Convex) 하기 때문에 지역 최솟값에 갇힐 가능성이 없고, 전역 최솟값으로 향한다.
4. 충분히 오랫동안 실행하면 모든 경사 하강법 알고리즘이 같은 모델을 만들어낼까요?
- 최적화할 함수가 (logistic regression, linear regression처럼) 볼록 함수이고 학습률이 너무 크지 않다고 가정하면, 모든 경사 하강법 알고리즘이 전역 최솟값에 도달하고 결국에는 비슷한 모델을 만들 것이다. 하지만 학습률을 점진적으로 감소시키기 않는다면, 확률적 경사 하강법(SGD) 과 미니배치 경사하강법은 전역 최적점 주변을 맴돌게 될 것 이다. 즉, 오랫동안 훈련해도 다른 모델을 형성할 수 있다는 것.
5. 배치 경사 하강법을 사용하고 에프크마다 검증 오차를 그래프로 나타냈다. 검증 오차가 일정하게 상승되고 있다면 어떤 일이 일어나고 있는 것 일까? 이 문제를 어떻게 해결할 수 있는가.
- 학습률이 너무 높고 알고리즘이 발산하고 있을 가능성이 높다. 이는 과대적합(Overfittin)되고 있음을 의미하기도 한다. 이럴 때는 검증 에러가 최솟값에 도달했을 때, 학습을 조기 종료하는 것이 해결책이다.
6. 검증 오차가 상승하면 미니배치 경사 하강법을 즉시 중단하는 것이 좋은 방법인가요?
- 무작위성 때문에 SGD나 미니배치 GD 모두 매 훈련 반복마다 학습의 진전을 보장하지 못한다. 일찍 멈추게 된다면, 최적점에 도달하기 전에 멈추게 될 수도 있다. 더 나은 방법으로는 정기적으로 모델을 저장하고 오랫동안 진전이 없을 때, 저장된 것 중 가장 좋은 모델로 복원하는 것이다.
7. 어떤 경사 하강법 알고리즘이 가장 빠르게 최적 솔루션의 주변에 도달할까요? 실제로 수렴하는 것은 어떤 것 인가요? 다른 방법들도 수렴하게 만들 수 있나요?
- 확률적 경사 하강법 (SGD)는 한 번에 하나의 훈련 샘플만 사용하기 때문에 훈련 반복이 가장 빠르다. 하지만 시간만 충분하다면 배치 경사 하강법이 실제로 수렴한다. SGD나 미니 GD를 수렴하게 하려면 학습률을 점진적으로 감소시켜야 최적점 주변을 도는 것을 방지할 수 있다.
8. 다항 회귀를 사용했을 때 학습 곡선을 보니 훈련 오차와 검증 오차 사이에 간격이 큽니다. 무슨 일이 생긴 걸까요? 이 문제를 해결하는 세 가지 방법은 무엇인가요?
- 검증 오차가 훈련 오차보다 훨씬 더 높으면 모델이 훈련 세트에 과대 적합 되었을 가능성이 높다. 이를 해결하기 위해서는
- 다항 차수를 낮춘다. 자유도를 낮춘다면 과대적합이 줄어들 것이다.
- 모델을 규제하는 것. 비용함수에 L2 penalty(Ridge)나 L1 penalty(Lasso)를 추가한다. 이 방법도 모델의 자유도를 낮춘다.
- 훈련 세트의 크기를 증가시킨다.
9. 릿지 회귀를 사용했을 때 훈련 오차와 검증 오차가 거의 비슷하고 둘 다 높았습니다. 이 모델에는 높은 편향이 문제인가요, 아니면 높은 분산이 문제인가요? 규제 하이퍼파라미터 α 를 증가시켜야 할까요, 아니면 줄여야 할까요?
- 훈련 오차와 검증 오차가 거의 비슷하고 매우 높다면 모델이 훈련 세트에 과소적합되었을 가능성이 높다. 즉, 높은 편향을 가진 모델이다. 따라서 규제 하이퍼파라미터 α 를 감소시켜야한다. α 를 증가시킬수록 복잡도가 떨어짐. α 를 낮춰야 분산이 증가하고 편향이 감소함.
10. 다음과 같이 사용해야 하는 이유는?
- 평범한 선형 회귀 (아무런 규제가 없음) 대신 릿지 회귀
→ 규제가 있는 모델이 규제가 없는 모델에 비해 성능이 좋다. 그래서 평범한 회귀보다는 릿지 회귀가 선호된다.
- 릿지 회귀 대신 라쏘 회귀
→ 라쏘 회귀는 l1 패널티를 사용하여 가중치를 완전히 0으로 만드는 경향이 있다. 가장 중요한 가중치를 제외하고는 모두 0이 되는 희소한(Sparse)한 모델을 만든다. 그리고 "자동으로 특성 선택"의 효과를 가지므로 단지 몇 개의 특성만 실제 유용할 것이라고 의심될 때 사용하면 좋다. 확신이 없다면 릿지 회귀를 사용해야 합니다.
- 라쏘 회귀 대신 엘라스틱넷
→ 몇 개의 특성이 강하게 연관되어 있거나 / 특성 수가 훈련 샘플보다 많을 때 라쏘가 불규칙적으로 행동하여 엘라스틱넷이 더 선호된다. 하지만 추가적인 하이퍼파라미터가 생기게 된다. 불규칙한 행동이 없는 라쏘를 원하면 엘라스틱넷에 l1_ratio를 1에 가깝게 하면 된다. (ratio = 0(Ridge) ~ 1(Lasso))
11. 사진을 낮과 밤, 실내와 실외로 분류하려 한다. 두 개의 로지스틱 회귀 분류기를 만들어야 할까, 아니면 하나의 소프트맥스 회귀 분류기를 만들어야 할까?
- 배타적인 클래스가 아니기에 (4가지 조합 모두 가능) 두 개의 로지스틱 회귀 분류기를 훈련시켜야 한다.
12. 조기 종료를 사용한 배치 경사 하강법으로 소프트맥스 회귀를 구현해보세요.
In [1]:
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:80% !important;}</style>"))
C:\Users\20229069\AppData\Local\Temp\ipykernel_2744\529043151.py:1: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display
from IPython.core.display import display, HTML
728x90
'Book report > 핸즈온 머신러닝' 카테고리의 다른 글
[핸즈온 머신러닝] Chapter 6. 결정 트리 (0) | 2024.04.01 |
---|---|
[핸즈온 머신러닝] Chapter 5. 서포트 벡터 머신 (0) | 2023.09.12 |
[핸즈온 머신러닝] Chapter 3. 분류 (0) | 2023.08.28 |
[핸즈온 머신러닝] Chapter 2. 머신러닝 프로젝트 처음부터 끝까지 (0) | 2023.08.04 |
[핸즈온 머신러닝] Chapter 1. 한눈에 보는 머신러닝 (0) | 2023.07.26 |