반응형
선형회귀
- 일반적으로 선형 모델은 입력 특성의 가중치 합과 편향을 더해 예측한다
- 선형 회귀 모델 예측 식
- $\hat y = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + ... + \theta_n x_n $
- $\hat y $ : 예측값
- n : 특성 수
- $x_i : i번째 특성값 $
- $\theta_j : j번째 파라미터 $
- $\hat y = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + ... + \theta_n x_n $
- 선형 회귀 모델의 벡터형태 예측식
- $ \hat y = h_\theta (x) = \theta^T \cdot x $
- 선형 회귀 모델 예측 식
모델 훈련
- 모델이 훈련 세트에 가장 잘 맞도록 모델 파라미터를 설정하는 것
정규방정식(normal equation)
- 비용 함수를 최소화하는 $\theta$ 값을 찾기 위한 해석적인 방법
- 바로 결과를 얻을 수 있는 수학공식
- $ \hat \theta = (X^T \cdot X)^{-1} \cdot X^T \cdot y $
- $\hat \theta $ : 비용 함수를 최소화 하는 $\theta $ 값
- $y : y^{(1)}부터 y^{(m)} 까지 포함하는 타겟 벡터 $
import numpy as np
import matplotlib.pyplot as plt
X = 2 * np.random.rand(100,1)
y = 4 + 3 * X + np.random.randn(100,1)
fig = plt.figure()
scatter = plt.scatter(X,y)
plt.show()
X_b = np.c_[np.ones((100,1)) , X]
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
print(theta_best)
# 출력
#[[3.94905756] $\theta_0 =4$
# [2.97976129]] $\theta_1 = 3$
# 노이즈 때문에 정확히 재현x
- 정규방정식을 활용
X_new = np.array([[0],[2]])
X_new_b = np.c_[np.ones((2,1)), X_new]
y_predict = X_new_b.dot(theta_best)
y_predict
plt.plot(X_new,y_predict,"r-")
plt.plot(X,y,"b.")
plt.axis([0,2,0,15])
plt.show()
경사 하강법(Gradient Descent)
- 여러 종류의 문제에서 최정의 해법을 찾는 최적화 알고리즘
- $\theta$를 임의의 값으로 시작해서 한번에 조금씩 비용함수가 감소되는 방향으로 알고리즘이 최솟값에 수렴할 때까지 점진적 향상시킨다
- 학습률이 작으면 수렴하기위해 반복 진행 ,시간 ↑
- 학습률이 크면 알고리즘이 더 큰 값으로 발산하여 해법을 찾지 못함
배치 경사 하강법
- 매 스텝에서 훈련 데이터 전체를 사용
learning_rate = 0.1
n_iterations = 1000
m = 100
theta = np.random.randn(2,1)
for iteration in range(n_iterations):
gradients = 2/m * X_b.T.dot(X_b.dot(theta) - y)
theta = theta - learning_rate * gradients
확률적 경사 하강법
- 매 스텝에서 한개의 샘플을 무작위로 선택하여 그래디언트 계산
- 적은 데이터 처리로 알고리즘 속도 향상
- 큰 훈련 셋 훈련 가능
- 확률적이기 때문에 배치 경사 하강법보다 불안정
n_epochs = 50
t0, t1 = 5, 50
def learning_schedule(t):
return t0 / (t+t1)
theta = np.random.randn(2,1)
for epoch in range(n_epochs):
for i in range(m):
random_index = np.random.randint(m)
xi = X_b[random_index: random_index+1]
yi = y[random_index:random_index+1]
gradients = 2*xi.T.dot(xi.dot(theta) -yi)
eta = learning_schedule(epoch * m + i)
theta = theta -eta *gradients
미니배치 경사 하강법
- 미니배치라 부르는 임의의 작은 샘플 세트에 대해 그래디언트 계산
- 임의의 작은 샘플 세트에 대해 그래디언트 계산
- 장점 : 행렬 연산에 최적화되 하드웨어를 사용하여 얻는 성능 향상
다항회귀
- 각 특성이 거듭제곱으로 추가된 특성을 포함한 데이터셋에 선형 모델을 훈련시키는 방법
- 가지고 있는 데이터가 직선(단순)이 아닌 비선형 데이터를 학습할 때 사용 가능
로지스틱 회귀
- 샘플이 특정 클래스에 속할 확률 추정에 사용
# 본 게시물은 핸즈온 머신러닝을 읽고 게시하였습니다.
반응형
'핸즈온 머신러닝' 카테고리의 다른 글
Chapter 5 서포트 벡터 머신(svm) (0) | 2020.09.18 |
---|---|
Chapter3 분류 (0) | 2020.04.11 |
CHAPTER 2 머신러닝 프로젝트 처음부터 끝까지 (0) | 2020.03.26 |
CHAPTER 1 한눈에 보는 머신러닝 (0) | 2020.03.25 |
댓글