4.1 선형회귀
RMSE 나 MSE 를 최소화하는 θ 를 찾아가는게 훈련
MSE 를 최소화하는것이 RMSE를 최소화하는것과 같은결과를 내면서 더 간단함.
4.1.1 정규 방정식
사실 최적의 θ 를 찾는 수학공식 즉 정규방적식(normal equation) 이 있음.
즉 X 와 y 만 가지고 최적의 θ 를 찾을수는 있다는 뜻임.
(※ 유사역행렬(pseudoinverse)을 사용하기도함. 무어-펜로즈(Moore-Penrose) 역행렬이라고 하며 특이값 분해(SVD) 를 통해 계산. )
이런 식으로 구할수 있음.
는 기존에서 어떤 낮은 임계값보다 작은 모든수를 0으로 바꾸고 나머지 값은 역수로 치환후 전치를 해줌
실제 m < n 이거나 역행렬이 없다면 정규방적식을 이용할수 없지만 유사역행렬을 이용하면 구할수 있음.
4.1.2 계산 복잡도
정규방적식은 (n+1) x (n+1) 인 X * X 의 역행렬을 계산해야함 . 이때 복잡도는 O(n^2.4) ~ O(n^3) 사이임
다만 위 방식 사용시 O(n^2) 로 가능함.
즉 증가량이 일단은 크기에 훈련샘플이 많거나 특성이 많으면 시간이 오래걸리는건 어쩔수 없음.
4.2 경사하강법 (Gradient descent)
일반적으로 사용하는 최적화 알고리즘. θ에 대해 현재의 gradient 를 계산후 감소하는 방향으로 진행.
이때 중요한것이 학습률(Learning rate)이다. 너무 작으면 학습이 오래걸리고 크면 최소점이 수렴하지 못한다.
J(θ) 가 위처럼 되있으면 최소점을 찾기 쉬울텐데 아닌경우(전역최솟값 != 지역 최솟값) 에는 문제가 발생할 수 있다.
이런 경우뿐만아니라 중간에 x 축과 평행한 지점이 발생할 수도 있다.
다행히 선형회귀를 위한 MSE 는 convex 형태이다.
다만 차원이 커질수록 해당 지점에서의 경사를 찾기는 더 어려워진다.
4.2.1 배치 경사 하강법
현재의 위치에서 감소하는 방향을 찾으려면 θ 가 조금 바뀔때 비용(y 축) 이 얼마나 바뀌는지 계산해야 한다. 이를 편도함수(partial derivative) 라고 함.
이때 모든 방향으로의 편도함수를 계산하는 방법은
로 간단하게 계산이 가능.
이 방법은 매 step 전체 데이터를 사용한다.
그라디언트 벡터가 구해지면 반대방향으로 가야하므로
그럼 반복횟수는 ?
변화하는 세타가 허용오차(tolerance) ε 보다 작아지면 거의 도달한 걸로 보고 멈추면 됨.
4.2.2 확률적 경사 하강법
배치 경사 하강법은 전체 데이터를 사용하므로 데이터가 많아지면 너무 느려짐 그래서 매스텝 한개의 샘플을 무작위로 선택후 그 샘플에 로 그라디언트를 계산. 즉 속도는 엄청 올라가지만 훨씬 불안정함. 반복함에 있어 최소값으로 가기는 가지만 그 경로가 매우 혼잡함. 이러한 혼잡함? 덕분에 전역 최솟값을 찾는데는 오히려 도움이 됨. 최솟값에 도달을 위해서는 학습률을 점점 줄여주는 방법으로 찾음. 이때 학습률을 결정하는 함수를 학습 스케쥴(learning schedule) 이라고 부름.
책에서 사용한 핛습 스케쥴
4.2.3 미니배치 경사 하강법 (mini-batch gradient descent)
샘플 전체 또는 하나를 사용하는것이 아니라 적은수의 샘플(미니배치) 을 사용해서 학습하는것. SGD 보단 덜 불규칙적이고 최솟값에 더 가까이 도달가능 but local minimum 에서 나오기는 더 힘들수도 있음.
4.3 다항 회귀 (polynomial regression)
가진 데이터가 직선형태가 아닐때(비선형 데이터).
사용할때 degree = d 이고 특성이 n 이면 앞의 식 만큼의 배열로 변환됨.
4.4 학습 곡선
degree를 올려서 training data에 잘 맞춘다고만 잘 훈련된것은 아님. overfitting 이 일어날 수 있기 때문임. 확인하는 방법은 교차검증도 있지만 학습곡선을 봐도 됨. training data 를 train & validation set 으로 나눠서 그래프를 그려보면됨.
이때 비용그래프사이가 멀면 과대적합 이 된것을 알 수있음.
4.5 규제가 있는 선형 모델
과대적합을 줄이는 법은 모델 규제 즉 자유도를 줄이는 방법이다.
4.5.1 릿지 회귀
비용함수에 또 다른 비용을 추가하는것. 알파는 모델을 얼마나 규제할지이다. 알파가 0 이면 그냥 선형회귀랑 같다.
이때 bias (θ0) 는 안건든다. i=1부터 시작이다.
알파가 커질수록 직선에 가까워지게 되며 모델의 분산을 줄어든다. but bias 는 커지게 된다.
릿지 회귀를 계산하기 위한 정규방적식은 아래
A 는 bias 부분인 (0,0) 부분은 0 인 (n+1) * (n+1) 단위행열
4.5.2 라쏘 회귀
라쏘(lasso : least absolute shrinkage and selection operator)
제곱대신 그냥 절대값 사용.
라쏘는 덜 중요한 특성의 가중치를 그냥 제거 해버리려함
즉 자동으로 특성을 선택하고 희소모델(sparse model)을 만듦
라쏘의 비용함수는 세타1~n 일때 미분이 불가. 하지만 서브그레디언트 벡터(subgradient vector) 사용시 GD 적용 가능
4.5.3 엘라스틱넷 (elastic net)
릿지 + 회귀. r을 통해 혼합비율을 조절. r=0 이면 릿지, r=1이면 라쏘
4.5.4 조기 종료 (early stopping)
검증 에러가 최소값 도달시 바로 훈련을 중지 시키는 것. 과대적합을 방지해줌
beautiful free lunch 라고 불리기도 함
4.6 로지스틱 회귀 (logistic regression)
샘플이 특정 클래스에 속할 확률을 추정하는데 사용
4.6.1 확률 추정
로지스틱 회귀모델도 입력 특성의 가중치 합을 계산 (+ 편향). 차이점은 결과를 출력하는게 아닌 결과값의 로지스틱을 출력
로지스틱 σ 은 [0,1] 을 출력하는 시그모이드 함수다.
X 가 한 클래스에 속할확률을 추정하면 쉽게 예측값을 수할수 있다. (0.5보다 크냐 작냐로)
4.6.2 훈련과 비용 함수
로직스틱 회귀모델은 θ 을 찾아가는게 훈련이다.
전체 훈련세트에 대한 비용함수는 모든 훈련샘플의 비용의 평균임.
이를 로그 손실(log loss) 이라 부르며 아래 식으로 표현
이를 구하는 정규방정식은 없음. 하지만 GD로 전역최솟값을 찾을수 있음을 보장.
이 비용함수의 j 번째 모델 파라미터 θj 에대해 편미분한 식은 아래와 같음.
각 샘플에 대해 예측오차를 계산하고 j번째 특성값을 곱해서 평균을 낸것.
4.6.3 결정 경계
4.6.4 소프트맥스 회귀
여러개의 class 에대한 확률로 나타내는걸 소프트맥스 회귀(softmax regression) or 다항 로지스틱 회귀(multinomial logistic regression)라 함.
샘플 x 에 대해 점수 s(x) 를 계산후 그 점수를 소프트맥스 함수에 적용하여 각 크랠스의 확률을 추정
로지스틱은 바로 확률이 가장 높은 클래스를 선택
모델이 어케 훈련하는지 함 보자.
모델이 타겟 클래스에 대해 높은 확률을 추정하도록 만드는 것이 목표다. 이땐 크로스 엔트로피(cross entropy)를 최소화하는것이 타깃클래스 예측 확률을 낮추는 것을 막으므로 적합함. 얼마나 잘 예측했는지의 정도로도 사용됨.
※
Θ 은 각 class별 확률이 들어있다 생각하면 편함.
이때의 그라디언트 벡터는
'공부 > 핸즈온 머신러닝' 카테고리의 다른 글
핸즈온 머신러닝 2 chap 8 차원 축소 (1) | 2021.02.26 |
---|---|
핸즈온 머신러닝 2 chap 7 앙상블 학습과 랜덤 포레스트 (0) | 2021.02.25 |
핸즈온 머신러닝 2 chap 6 decision tree (0) | 2021.02.24 |
SVM 추가 (0) | 2021.02.23 |
핸즈온 머신러닝 2 chap 5 SVM (0) | 2021.02.23 |