juuuding

[Supervised Machine Learning: Regression and Classification] Regression with multiple input variables - Multiple linear regression 본문

인공지능/코세라 머신러닝 특화과정

[Supervised Machine Learning: Regression and Classification] Regression with multiple input variables - Multiple linear regression

jiuuu 2023. 10. 16. 13:46

 Multiple Features

 

 이전 내용에서는 변수(특징)이 하나인 경우를 다뤘다. 예를 들어 집 값을 결정하는 요소가 집의 크기 하나 뿐이였다는 것이다. 이것과 달리 이번 단원에서는 집 값을 결정하는 요소를 여러개로 설정해볼 것이다. 즉, "multiple features (vairables)"를 사용할 것이다. 

하나의 feature을 가질 때
여러 개의 features를 가질 때

 위의 식에서 w와 x는 벡터이며 이를 상기시키기 위해 선택적으로 윗부분에 기호를 넣기도 한다. 우리는 이 식을 "dot product"를 사용하며 아래 식과 같이 표현할 수 있다. 

 이처럼 입력 특성이 여러 개 있는 모델을 "multiple linear regression (다중 선형 회귀)" 모델이라고 한다. 참고로 multivariate regression(다변량 회귀)라는 것이 있는데, 이것은 multiple linear regression과 다르므로 여기서 사용하지 않도록 주의한다. 

 

 

 Vectorization

 

 multiple linear regression을 빠르게 처리하기 위해서는 벡터화의 과정이 필요하다. 벡터화는 컴퓨터 하드웨어에서 병렬 처리가 가능하므로 벡터화를 하지 않을 때보다 속도가 훨씬 빨라진다.

 

※ 선형대수에서 배열의 시작 값은 1이고, 코드에서 배열의 시작 값은 0이다. 

 

① 벡터화 사용X 😞

f=w[0]*x[0]+w[1]*x[1]+w[2]*x[2]+b

 

② 벡터화 사용X 😐

f=0
for i in range(0,n):
	f=f+w[i]*x[i]
f=f+b

 

③ 벡터화 사용O 😊

f=np.dot(w,x)+b

 

 Gradient descent에서도 벡터화를 사용할 수 있다. parameter w, b 중 w만 고려한다 하고, 학습률을 0.1로 설정한다면 w_i=w_i-0.1d_i를 입력해주어야 한다. 다음 코드는 이 경사 하강에 벡터화를 사용했을 때의 코드와 하지 않았을 때의 코드이다.

import numpy as np

w= np.array([0.5, 1.3, 3.4])
d= np.array([0.3, 0.2, 0.4])

# 벡터화 사용
w=w-0.1*d

# 벡터화 사용 X
for i in range(0,3):
    w[i]=w[i]-0.1*d[i]

 

 

 Gradient Descent Multiple Regression

 

[One feature]

① w

 

② b

 

[n features (n≥2)]

① w

 

② b

 

※ w, b 꼭!! "동시" 업데이트

 

 

 

🔎 numpy 벡터화 깃허브 정리

https://github.com/jiuuu26/Artificial-Intelligence/blob/main/Supervised%20Machine%20Learning%3A%20Regression%20and%20Classfication/2.%20Regression%20with%20multiple%20input%20variables/Multiple%20linear%20regression.md