[핸즈온 머신러닝] 제 4장 정리
📗강의노트/핸즈온 머신러닝

[핸즈온 머신러닝] 제 4장 정리

728x90
반응형

Jupyter Notebook Markdown 이용해서 수식, 코드 입력하고 HTML출력해서 포스팅하는게 더 편리하네요!




Part. 4 Model Training 정리

Keyword

선형 회귀 :

 : 예측값  : 특성의 수  : 모델 파라미터

 : 모델 파라미터

는 행벡터를 의미

는 샘플의 특성 벡터

MSE :

가설 - 실제의 제곱들의 합의 평균 => 평균 제곱 오차라고 불린다.

정규방정식 :

비용 함수를 최소화하는 를 찾기 위한 해석적인 방법이다.

 : 비용 함수를 최소화하는  의 값

 :  ~  까지 포함하는 타깃 벡터

 : 훈련 세트

계산복잡도 :

 크기가 되는 의 역행렬을 계산한다. (n은 특성 수)

특성 수가 많아지면 정규방정식이 느려진다!

경사하강법 ( Gradient Descent ) :

비용 함수를 최소화하기 위해 반복해서 파라미터를 조정해가는 것. 최저접을 향해 계속 내려가는 것

비용 함수의 현재 그래디언트를 계산하고 그래디언트가 감소하는 방향으로 진행한다. 그래디언트가 0이 되면 최솟값 도달!

모든 특성이 같은 스케일을 갖도록 만들어야 한다.

학습률 ( learning_rate ) :

경사하강법에서 사용되는 파라미터로, 스텝의 크기를 말한다.

학습률이 너무 낮을 경우 수렴하기 위한 반복이 많아야 해서 시간이 오래 걸린다.

반면에 학습률이 너무 크면 알고리즘을 더 큰 값으로 발산하게 되어 적절한 해법을 찾을 수 없게 된다.

적절한 학습률을 찾으려면 그리드 탐색을 사용한다.

전역 최솟값(global minumum) / 지역 최솟값(local minimum) :

말 그대로이다. 전역 최솟값에 다다르도록 하는 것이 바람직하다. 지역 최솟값에 갇히지 않도록 해야한다.

볼록 함수 ( Convex Function ) :

의 형태(밥그릇 모양), 의 형태는 오목 함수라고 한다. 지역 최솟값이 없고, 하나의 전역 최솟값이 있다. 이는 연속된 함수이고 

기울기가 갑자기 변하지 변하지 않는다는 것을 말한다.

특성들의 스케일이 매우 다르면 길쭉한 타원 모양인 비용 함수가 나올 수 있다. ( scale이 작은 변수가 더 길쭉하게 표현 : 영향력을 더 크게 하려고 )

배치 경사 하강법 :

매 경사 하강법 스텝에서 전체 훈련 세트 에 대해 계산한다. 그래서 매우 큰 훈련 세트에서는 아주 느리다. 하지만 특성 수에는 민감하지 않다.

특성 수가 많다면 정규방정식 보다는 경사 하강법이 더 빠르다.

그래디언트 ( Gradient ) :

모델 파라미터가 조금 변경될 때 비용 함수가 얼마나 바뀌는지 계산한 것. MSE의 편도함수로 계산 가능하다.

그래디언트를 이용하여 경사 하강법의 스텝을 알 수 있다.

 는 학습률이다.

확률적 경사 하강법 ( SGD ) :

매 스텝에서 딱 한 개의 샘플을 무작위로 선택하고 그 하나의 샘플에 대한 그래디언트를 계산한다. 매 반복에서 매우 적은 데이터만 처리하기 때문에 알고리즘이 확실히 훨씬 빠르다.

반면에, 확률적이기에 배치 경사 하강법 보다 불안정함. 위아래로 요동치면서 평균적으로 감소!

비용함수가 불규칙할 때, 배치 경사 하강법 보다 전역 최솟값을 찾을 가능성이 높다.

무작위성의 단점을 해결하기 위해서는 "학습률"을 점진적으로 감소시키면 된다.

학습 스케줄 :

매 반복에서 학습률을 결정하는 함수

에포크 ( Epoch ) :

일반적으로 한 반복에서 m번 되풀이 되고, 이 때 각 반복을 에포크라고 함.

미니배치 경사 하강법 :

미니배치라고 부르는 임의의 작은 샘플 세트에 대해 그래디언트를 계산하는 것.

미니배치를 어느 정도 크게하면 SGD보다 덜 불규칙하다.

결국 미니배치 경사 하강법이 SGD보다 최솟값에 더 가까이 도달하게 될 것이다.

한편으로는 지역 최솟값에서는 빠져나오기 힘들 수 있다.

다항 회귀 :

각 특성의 거듭제곱을 새로운 특성으로 추가하고, 포함한 데이터셋에 선형 모델을 훈련시키는 것이다.

모델이 단순(과소적합), 복잡(과대적합)

학습 곡선 :

훈련 세트 ~ 검증 세트 학습 곡선 좁음 (RMSE)

모델이 훈련 데이터에 과소적합되어 있다면 훈련 샘플을 더 추가해도 효과가 없다. 더 복잡한 모델을 사용하거나 더 나은 특성을 선택해야함.

훈련 세트 ~ 검증 세트 학습 곡선 공간 생김 (RMSE)

훈련 데이터에서 모델 성능이 검증 데이터에서보다 훨씬 낫다는 뜻이고, 과대적합 모델의 특징이다. 더 큰 훈련 세트를 사용하면 두 곡선이 점점 가까워진다.

편향/ 분산 트레이드오프 :

편향

: 편향이 크면 과소적합될 가능성 높아짐

분산

: 훈련 데이터에 있는 작은 변동에 모델이 과도하게 민감하기에 나타남 자유도가 높으면(다항 차수 높음) 높은 분산을 가지기 쉬워 훈련 데이터에 과대적합되기 쉽다.

편향/ 분산 트레이드 오프

: 모델 복잡도 증가 ( 감소 ) -> 분산 증가 ( 감소 ) / 편향 감소 ( 증가 )



규제가 있는 선형모델 :

과대적합을 갑소시키는 좋은 방법은 모델을 규제하는 것 이다. ( 자유도 낮춤 ) (ex. 다항식 차수를 낮추는 것 )

릿지 회귀 ( Ridge )


 가 기존 비용 함수 (MSE)에 추가됨.

(  이면 기존 선형 회귀와 같아짐 )

규제항은 훈련하는 동안에만 비용 함수에 추가된다. 모델의 훈련이 끝나면 모델의 성능을 규제가 없는 성능 지표로 평가한다.

규제항은  와 같이 표현된다. ( 는 특성의 가중치 벡터 ( ~  )

이는 가중치 벡터의  노름이다.

입력 특성의 스케일에 민감하기 때문에, 수행하기 전에 데이터의 스케일을 맞추는 것이 중요하다.

가 증가할수록 ( 모든 가중치 거의 0 : 모델 복잡도 감소 ) 분산은 낮아지고, 편향은 높아진다.

라쏘 회귀 ( Lasso )


가중치 벡터의  노름을 사용한다.

라쏘 회귀의 중요한 특징은 덜 중요한 특성의 가중치를 완전히 제거하려고 한다는 점이다. 자동으로 특성을 선택하고 희소 모델을 만든다.

  • 서브그래디언트 벡터 : 미분이 불가능한 지점 근방 그래디언트들의 중간값

엘라스틱넷 ( Elastic Net )


릿지 회귀와 라쏘 회귀를 절충한 모델

혼합 비율 r( Ridge : r= 0 / Lasso : r=1 )을 통해 절충함

적어도 규제가 약간 있는 것이 대부분의 경우에 좋으므로 일반적으로 평범한 선형 회귀는 피해야한다.

릿지가 기본이 되지만 실제로 쓰이는 특성이 몇 개뿐이라고 의심되면 라쏘나 엘라스틱넷

특성 수가 훈련 샘플 수보다 많거나, 특성 몇 개가 강하게 연관되어 있을 때는 라쏘가 문제를 일으키므로, 엘라스틱넷을 사용한다.

조기 종료 ( early stopping ) :

검증 에러가 최솟값에 도달하면 바로 훈련을 중지시키는 것.

검증 에러가 멈췄다가 다시 상승하는 현상은 모델이 훈련 데이터에 과대적합되기 시작했다는 것을 말하기 때문에 조기 종료가 필요하다.

학습을 멈추고 검증 에러가 최소였을 때의 모델 파라미터로 되돌리는 것.

로지스틱 회귀 ( Logistic Regression ) :

선형 회귀 모델과 같이 로지스틱 회귀 모델은 입력 특성의 가중치 합을 계산한다. 바로 결과를 출력하는 것이 아니라, logistic을 출력한다.

0과 1사이의 값을 출력하는 " 시그모이드 함수" 이다.

로지스틱 함수 :

S자 형태로 나타난다.

로지스틱 비용 함수 :

y=0(1)일 때, 앞부분이 1(0) 뒷 부분이 0(1)

로지스틱 비용 함수의 편도함수 :

각 샘플에 대한 예측 오차 계산, j 번째 특성값을 곱해서 모든 훈련 샘플에 대해 평균을 낸다.

결정 경계 ( Decision Boundary ) :

샘플들의 class를 구분하는 기준선

소프트맥스 회귀 ( Softmax Regression ) :

여러 개의 이진 분류기를 훈련시켜 연결하지 않고 직접 다중 클래스를 지원하도록 일반화될 수 있다.

  • 클래스 k에 대한 소프트맥스 점수 :

 : 각 클래스가 가지는 파라미터 벡터

  • 소프트맥스 함수 :

 : 클래스 수

 :샘플 x에 대한 각 클래스의 점수를 담고있는 벡터

 : 샘플 x에 대한 각 클래스의 점수가 주어졌을 때, 샘플이 클래스 k에 속할 추정 확률

소프트맥스 회귀 분류기는 한 번에 하나의 클래스만 예측함. ( 하나의 사진 여러 얼굴 인식 X )

크로스 엔트로피 ( Cross Entropy ) 비용 함수 :

크로스 엔트로피를 최소화 하는 것은 타깃 클래스에 대해 낮은 확률로 예측하는 모델을 억제하는 것

사실 로지스틱 비용 함수와 같은 형태

  • 크로스 엔트로피의 그래디언트 벡터 :

추정 확률 - 실제에 샘플의 특성을 곱 후 합, 평균


Coding

In [ ]:
from sklearn.linear_model import Ridge, Lasso, ElasticNet, SGDRegressor

X.dot(y) #  행렬 X와 y을 곱셈해줌 

np.linalg.inv() # linalg의 역행렬 계산 함수

X.ravel() # 다 펼친다. []를 다 풀어줌 : 1차원으로

from sklearn.preprocessing import PolynomialFeatures   # 각 특성의 제곱을 하여 새로운 특성으로 추가

from sklearn.base import clone 
# clone : Constructs a new estimator with the same parameters.
# 동일한 파라미터를 가지고 새로운 추정치를 만들어낸다. 

np.meshgrid()  
# meshgrid : gridpoint를 만드는 과정을 도와줌 ( 그리드 포인트란 좌표쌍을 말한다.
# 영역내에서 변화하는 과정을 보고 싶을 때 그리드포인트들에 대해 함수를 계산해야
# 하는데 이를 meshgrid가 해준다. )

np.unravel_index() 
# unravel_index는 원하는 숫자의 indices를 알려줌 
In [7]:
a = np.array([[1,2,3],[4,5,6]])
a.ravel()
Out[7]:
array([1, 2, 3, 4, 5, 6])


728x90
반응형