DeepLearning - 다중 선형 회귀
다중선형회귀, 텐서플로 용어
복습
평균제곱오차는 왜 나왔었을까.
오차를 그냥 더해버리면 양수 오차와 음수 오차가 서로 상쇄되어 ‘틀린 크기’를 정확히 알 수 없다. 그러므로, 그 오차를 제곱시킴으로써 양수로 평균을 내버리는 방법을 택한다. 그래서 나온 평균제곱오차(MSE, Mean Squared Error)가 아래의 수식을 가졌었다.
1. 다중 선형 회귀
앞서 선형 회귀에서 오차가 있음을 확인했으니, 더 정교한 예측을 위하여 변수의 개수를 늘려야 한다
예시
- 다이어트 과정에서, 운동시간에 대한 변수를 추가한다
코드화
x1 = np.array([1, 2, 3, 4, 5]) # 다이어트 경과일
x2 = np.array([30, 60, 60, 40, 50]) # 운동 시간(m)
y = np.array([46.0, 46.2, 45.9, 45.8, 45.7]) # 몸무게
를 Z축으로 생각하여 3차원의 세상을 생각해도 좋다.
- 예측값을 구하는 식
predY = (a1*x1) + (a2*x2) + b
error = y - predY # 오차 = 실제값(Y) - 예측값(predY)
- 편미분 값(경사하강법의 평균제곱 오차 편미분 식 참고))
n = len(x1) # 변수 개수(n)
pDiff_a1 = (2/n) * sum(-x1 * (error)) # a1에 대한 편미분
pDiff_a2 = (2/n) * sum(-x2 * (error)) # a2에 대한 편미분
pDiff_b = (2/n) * sum(-(error)) # b에 대한 편미분
a1 = a1 - lr*pDiff_a1 // 학습률(lr) 곱하기
a2 = a2 - lr*pDiff_a2
b = b - lr*pDiff_b
2. 선형 회귀, 다중 선형 회귀 모델 in 텐서플로
가중치(w, weight)
- 기울기 a: 변수 x에 어느 정도의 가중치를 곱할지를 결정
편향(bias)
- 절편 b: 데이터의 특성에 따라 부여된 값
머신러닝에서의 용어
-
평균제곱오차 ⊃ 손실 함수(loss function)
-
경사하강법 ⊃ 옵티마이저(Optimizer)