코세라 지도학습 강의 2주차엔 다중회귀와, 다중회귀에 따른 경사하강법을 학습하게 된다.
다중회귀 그냥 파이썬으로 돌릴땐 참 쉬웠는데 ... (아련
#4. Multiple linear regression
Multiple features
표기방식 협의
- i번째 집에 대한 특징을 벡터로 나타낼때 표기법과 i번째 집의 j번째 특징을 나타날때 표기법 헷갈리지 말기
- f(x) = w1*x1 + w2*x2 + w3*x3 ... +b = 결국 w의 벡터들과 x의 벡터들간의 매칭곱 + b 로도 표현 가능
Vectorization
w = [w1, w2, w3] n=3
x = [x1, x2, x]
b = 상수
→ numpy 사용 시 np.array([w1,w2,w3])으로 선언 가능
벡터가 없다면 아래처럼 수행해야 함
- 하나하나 합치기 : w1*x1 + w2*x2 + w3*x3 ... +b
- 반복문 사용하기 : for i in range (0,n) : f = f + w[j] * x[j] \ f=f+b
벡터가 있다면 단순하게 가능
- 벡터간 매칭해서 곱하고 b를 더해라 : f = np.dot(w,x) + b
- 경사하강법을 구할때에도 넘파이를 이용한 벡터를 사용하는 것이 도움이 됨. parameter가 늘어나거나 n 수가 높아지면 더욱 도움이 됨
Gradient descent for multiple linear regression
기존에 학습한 경사하강법의 경우 변수가 한개인 경우로 학습했으나, 다중회귀의 경우엔 x가 n개이고 w가 n개 이므로 w에 대한 업데이트 식이 n개 (w1~wn까지) 있다고 보면 됨. 다만 b의 경우 한개이므로 일원회귀와 동일하게 볼 수 있음
참고. Normal equation(정규방정식?)
선형회귀에서만 먹히는 방식으로 기존 경사하강법처럼 반복하지 않고 w,b를 구할 수 있음
다른 알고리즘에서는 적용되지 않으며 featrue수가 만개 이상이 될 경우 느려지는 단점이 있음
사용하는 머신러닝 라이브러리 백단에서 선형회귀 시 경사하강법 대신 이를 사용하는 경우가 있으니 참고해야 함