DataScience/DeepLearning

[딥러닝 필기] week1. Machine Learning Basics

neopin 2022. 2. 24. 21:44

Goal of Machin Learning

  • 주어진 데이터를 가장 잘 설명하는 모델을 찾아라

Steps of Machine Learning

  • Step 1: 여러 종류의 모델 중에서 하나를 선택
  • Step 2: 함수가 주어진 데이터에 가장 잘 부합하도록 가중치를 잘 조정한다.

 

가장 잘 설명하는 모델이란?

  • 주어진 데이터와 오류를 최소화하는 함수
  • 오류는 오차, RSS, ...

가장 잘 설명하는 모델을 찾는 방안

  1. 주어진 데이터와 오류를 최소화하는 함수를 임의로 정한다.
  2. Residual Sum of Square 꼴로 변환한다.
  3. 모든 가중치 축으로 편미분한 값이 0이 되는 가중치를 찾는다.
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from numpy as np

x = np.array([[0, 1, 1, 2]]).T
y = np.array([0, 1, 2, 1])

poly_regressor = PolynomialFeatures(degree = 2)
X_poly = poly_regressor.fit_transform(X)
poly_regressor.fit(X_poly, y)

lin_reg = LinearRegression()
lin_reg.fit(X_poly, y)

print(lin_reg.coef_)

 

Gradient Descent Method

  • Step
    • Randomly chose an initial solution, W
    • Repeat 

  • 예시) 
# 가중치 임의로 생성
w2 <- 2
w1 <- 1
w0 <- 0

# 에타를 0.01로 설정
etha <- 0.01

# 반복횟수는 10000회!
n <- 10000

run_time <- 0
while (run_time < n) {
  run_time = run_time + 1
  
  new_w0 <- w0 - (etha * (8 *w0 + 8 *w1 + 12*w2 -  8)) # E'/w0' 사용
  new_w1 <- w1 - (etha * (12*w1 + 20*w2 + 8 *w0 - 10)) # E'/w1' 사용
  new_w2 <- w2 - (etha * (36*w2 + 20*w1 + 12*w0 - 14)) # E'/w2' 사용
  
  w0 <- new_w0
  w1 <- new_w1
  w2 <- new_w2
  
  print(paste0(run_time, " ", w2," ", w1," ", w0))
}

# 가중치 반올림하여 출력
round(w2,2)
round(w1,2)
round(w0,2)