우리의 목표는 cost function값이 최소가 되는 새터를 찾는다고 하였습다.

먼저 새터를 찾는다는 것이 무엇인지 확인해 볼 필요가 있을 것 같습니다.


앞서 plot을 통해 x, y를 표시하던 그래프에 cost function으로 오차율을 나타내고

실제 새터를 그래프로 그려보면서 수동으로 새터를 찾아 보겠습니다.


먼저 새터를 그리는 함수부터 정의해봅니다.


* 새터를 표시하는 plot 함수


function plotManualTheta(x, y, theta)

plot(x(:,2) , y, 'rx', 'MarkerSize', 5); % first plot


hold on; % keep previous plot visible

plot(x(:,2), x*theta, '-') % second plot

legend('Training data', 'Linear regression') % legend

hold off % don't overlay any more plots on this figure


end


: hold on - plot을 고정 시키는 명령어

: legend - 범례

: hold off - plot 고정 해제


: plot(x(:,2), x*theta, '-') 

 - 두번째 plot을 그리는 x, y 데이터 입니다.

 - 여기서 두번째 파라미터에는 x와 theta에서 들어온 값을 곱해 줍니다.

 - 행렬 곱을 이용하여 x = 1 * 2, y = 2 * 1 행렬을 곱하여 1*1행렬로 계산하여 그래프를 표시 합니다.



예제를 통해 알아 보겠습니다.

>> data = load('ex1data1.txt');

>> y = data(:, 2);

>> m = length(y);

>> x = [ones(m, 1), data(:,1)];

>> theta = zeros(2, 1);


* 새터가 0,0 일때

>> computeCost(x, y, theta)

h =  6222.1

ans =  32.073

>> plotManualTheta(x, y, theta)


* 새터가 0, 1일때

>> theta = [0; 1]


>> computeCost(x, y, theta)

h =  1444.5

ans =  7.4459

>> plotManualTheta(x, y, theta)



위와 같이 계속 하다 보면 최적의 새터를 찾을 수 있습니다.


'ML > octave구현 - w1' 카테고리의 다른 글

[octave] 임의 값 예측  (0) 2016.03.07
[octave] GradientDescent  (0) 2016.03.07
[octave] Cost Function 구하기  (0) 2016.03.06
[octave] 데이터 뿌리기 (plot)  (0) 2016.03.06
[octave] 파일 읽기  (0) 2016.03.06

+ Recent posts