학습 목적 : 선형 회귀를 더욱 효과 좋고 빠르게 하기 위함.
Multiple Features
**변수**
- 여러 개의 Feature 존재.
- x 아랫첨자 : 몇 번째의 특징.
- n : Feature들의 개수.
- x벡터 윗첨자 : i번째 훈련 자료. (가로)
- x 아랫첨자 j 윗첨자 i : j번째 특징에서 i행 Example. Model calculus
- 다중 Feature 모델 식에 있어 간략한 표기 진행.
- b : 숫자
- w→ : 행 Vector [w1 w2 w3 w4 …]
- w→와 b는 Parameters of the model.
Benefit of Vectorization
기존의 모델링 과정
- 선형 대수 → 인덱스를 1부터 count.
- Python code → 인덱스를 0부터 count.
- 연산량이 많아질수록 연산하는 데에 있어 시간과 Resource가 낭비될 수 있음.
Vectorization for dot (내적)
- 코드의 단순화 Benefit
- 실행 속도 Fast.
- 병렬 연산을 통해 확장성이 좋음.(효율성 증대)
Vectorization for Gradient descent
- 인덱스가 16개라고 가정했을 때.
- Without Vectorization
- 16번의 연산 수행.
- With vectorization
- Array로 하나의 줄에 연산.
Gradient Descent for Multiple Regression
기존의 표기와 Vector 형태의 표기
벡터에 대한 함수로 계산을 Update.
Gradient Descent for multiple linear regression
Case 1. 단일 Feature일 때
w 값이 자체적으로 모두 Update(w가 하나이기 때문)
b 값도 마찬가지겠지만 무엇보다 w,b 값이 동시에 update되어야 함.
Case 2. 여러 개의 Feature일 때
w와 x 값 전체가 아닌 w1 / x1부터 차례로 Gradient가 Update
(w1 ~ wj, x1 ~ xi)
동시에 wj, b값이 Update.
An alternative to gradient descent
Normal Equation(정규 방정식)
- Linear Regression(선형 회귀)에만 해당.
- w,b를 iteration(반복 연산) 없이 Solve할 수 있음.
- 다른 알고리즘의 경우에는 정형화되어있지 않음(Doesn’t generalize)
- Feature의 개수가 10,000개가 넘어갈 시점부터는 연산 속도가 느리다는 한계 존재.
→ 라이브러리를 활용하여 코드에서 구현은 가능하지만 Gradient Descent를 더 추천하는 바.
Feature Scaling Part 1
- 변수 간 range 차이가 너무 큼. → Reasonable 차이
⇒ feature 간 range의 간격이 어느 정도로 설정하느냐에 따라 예측 성능이 상당히 달라짐.
값의 변화 폭에 따라 파라미터 값을 적절히 조정해주어야 함.
- scatter plot 형태는 범위가 크지만 Contour plot는 범위가 적음.
- contour plot은 반복 횟수가 더 많음.
- 특징 크기가 얼추 맞게 rescale해주어야 빠르게 Gradient Descent 작업이 수행될 수 있음.
Detail of Feature Scaling
max 수치로 나눔 → scale의 범위를 Update해준다.
Mean normalization (평균 정규화)
분모 : max range - min range
분자 : x1 - average x(u1)
-1~1 사이의 값으로.
Z-score normalization(Z점수 정규화)
시그마 → 표준 편차.
Standard of Feature Scaling
Checking gradient descent for covergence
Alpha value → Learning Rate
Make sure gradient descent is working
iteration 수가 많아질 수록 비용 함수 J의 값이 작아져야 함.
400번의 iteration을 수행했을 떄 converged된 것을 확인(수렴한 것을 확인.)
[Automatic convergence test]
엡실론 값(0.001, 10의 -3승)보다 비용함수의 감소가 반복 연산 시에 더욱 낮았을 경우, 수렴했다고 선언한다.
(전역 최솟값에 거의 근접했다.)
Choosing the Learning Rate
→ 비용 함수의 미분값 부호가 바뀌는 시점 발생 → 버그가 있거나 학습률이 너무 크게 설정되어 있다는 것임.
학습률의 조정이 매우 중요.반대로 학습률이 너무 적어지면 수행 시간이 너무 오래 걸리는 경향 있음.
Feature Engineering
변수끼리 곱한다.
“이 점 참고”
Polynomial Regression(다항 회귀)
함숫값의 변수가 여러 개이거나 곡선 형태에 있을 때 사용.
함수 곡선 형태에 따라 함수를 고려해야 함.
Feature Scaling을 따졌을 때 3차 함수의 방향보다는 루트나 로그 함수를 추천하는 바.