머신 러닝

[머신러닝 코세라 강의] (2주차) "Cost function 의 벡터 표현" Machine Learning (by Andrew Ng)

마빈 Marvin 2022. 5. 29. 20:53

 

2주차 테스트를 풀고, 프로그래밍 과제도 완료하였습니다. 프로그래밍 과제는 매트랩이나 옥타브로 하는데, 저는 매트랩으로 수행하였습니다. 홈페이지에서 토큰을 생성해주는데, 매트랩에서 코드를 시행하고 "submit" 을 창에 입력하면 이메일과 토큰을 입력하라고 합니다. 생각보다 체계적이어서 신선했습니다. 프로그래밍 과제는 cost function 과 gradient descent 를 함수 코드에 직접 생성하는 것인데, 수식 이해에 도움이 됩니다. 

 

매트랩 cost function 코딩

 

과제를 풀다가 추가할 수식/프로그램 코드가 있어서 내용을 추가합니다. 

 

Cost function

 

cost function 수식입니다. 이전 링크에서 gradient scent 수식의 매트릭스 형태는 작성하였는데, cost function 은 직접적으로 다루지 않은 것 같아서 표기합니다. 

 

$\frac{1}{m} \sum_{i=1}^m \Big( h_\theta (x_i) - y_i  \Big)^2$

$= \frac{1}{m} \Big( \theta' x_i - y_i \Big)^2$

$= \frac{1}{m} \Big[ (\theta' x_1 - y_1) (\theta' x_1 - y_1) + ... + (\theta' x_n - y_n) (\theta' x_m - y_m)  \Big]$

$= \frac{1}{m} \begin{bmatrix} \theta' x_1 - y_1 \\ \theta' x_2 - y_2 \\ ... \\ \theta' x_n - y_n \end{bmatrix}' \begin{bmatrix} \theta' x_1 - y_1 \\ \theta' x_2 - y_2 \\ ... \\ \theta' x_n - y_n \end{bmatrix}$

$= \frac{1}{m} (\theta' x - y)' (\theta' x - y)$

 

(Matlab Code) for loop

매트랩 과제 수행 중에 vectorization 코드가 잘 안되서, loop 로 수행했습니다. Vectorization 이 아직은 완전히 익숙하지는 않은 것 같네요. 파이썬으로 추후 연습을 더 해보아야겠습니다. 

 

temp1 = theta(1) - alpha*(sum(X*theta - y)/m);

temp2 = theta(2) - alpha*(sum((X*theta - y).*X(:,2))/m); 

theta(1) = temp1; 

theta(2) = temp2;