diff --git a/chapter03/linPred.m b/chapter03/linPred.m index c159a54..1ebc439 100644 --- a/chapter03/linPred.m +++ b/chapter03/linPred.m @@ -7,18 +7,17 @@ w = model.w; w0 = model.w0; y = w'*X+w0; + if nargout > 1 beta = model.beta; - if isfield(model,'U') % 3.54 - U = model.U; - Xo = bsxfun(@minus,X,model.xbar); - XU = U'\Xo; - sigma = sqrt(1/beta+dot(XU,XU,1)); - else - sigma = sqrt(1/beta); - end - if nargin == 3 && nargout == 3 - p = exp(logGauss(t,y,sigma)); -% p = exp(-0.5*(((t-y)./sigma).^2+log(2*pi))-log(sigma)); - end + U = model.U; % 3.54 + Xo = bsxfun(@minus,X,model.xbar); + XU = U'\Xo; + sigma = sqrt(1/beta+dot(XU,XU,1)); end + +if nargin == 3 && nargout == 3 + p = exp(logGauss(t,y,sigma)); +% p = exp(-0.5*(((t-y)./sigma).^2+log(2*pi))-log(sigma)); +end + diff --git a/chapter06/demo.m b/chapter06/demo.m index a9d0d07..dac4237 100755 --- a/chapter06/demo.m +++ b/chapter06/demo.m @@ -4,10 +4,29 @@ x = linspace(0,2*pi,n); % test data t = sin(x)+rand(1,n)/2; -model = knReg(x,t,1e-4,@knGauss); -y = knRegPred(model, x); -figure; -hold on; -plot(x,t,'o'); -plot(x,y,'r-'); +% model = knReg(x,t,1e-4,@knGauss); +% y = knRegPred(model, x); +% figure; +% hold on; +% plot(x,t,'o'); +% plot(x,y,'r-'); + +%% test case for kernel regression +lambda = 1e-4; +model_kn = knReg(x,t,lambda,@knLin); +model_lin = linReg(x,t,lambda); + +[y_kn, s_kn] = knRegPred(model_kn, x); +[y_lin, s_lin] = linPred(model_lin,x); + +maxabsdiff(y_kn,y_lin) +maxabsdiff(s_kn,s_lin) +%% test case for knCenter +% kn = @knGauss; +% X=rand(2,100); +% X1=rand(2,10); +% X2=rand(2,5); +% +% isequalf(knCenter(kn,X,X1),diag(knCenter(kn,X,X1,X1))) +% isequalf(knCenter(kn,X),knCenter(kn,X,X,X)); \ No newline at end of file diff --git a/chapter06/knPca.m b/chapter06/knPca.m new file mode 100644 index 0000000..35aa93a --- /dev/null +++ b/chapter06/knPca.m @@ -0,0 +1,6 @@ +function [ output_args ] = knPca( input_args ) +% Kernel PCA + + +end + diff --git a/chapter06/knReg.m b/chapter06/knReg.m index 1f24fe2..d0ae640 100644 --- a/chapter06/knReg.m +++ b/chapter06/knReg.m @@ -18,4 +18,5 @@ model.a = a; model.X = X; model.tbar = tbar; -model.beta = beta; \ No newline at end of file +model.beta = beta; +model.U = U; \ No newline at end of file diff --git a/chapter06/knRegPred.m b/chapter06/knRegPred.m index 1d7e058..a2de44c 100755 --- a/chapter06/knRegPred.m +++ b/chapter06/knRegPred.m @@ -5,21 +5,15 @@ a = model.a; X = model.X; tbar = model.tbar; -y = a'*knCenterize(kn,X,Xt)+tbar; +y = a'*knCenter(kn,X,X,Xt)+tbar; + if nargout > 1 beta = model.beta; - if isfield(model,'U') - U = model.U; - Xo = bsxfun(@minus,X,model.xbar); - XU = U'\Xo; - sigma = sqrt(1/beta+dot(XU,XU,1)); - - sigma = sqrt(c-k'*C^-1*k); - else - sigma = sqrt(1/beta); % 6.67 - end - if nargin == 3 && nargout == 3 - p = exp(logGauss(t,y,sigma)); - end + U = model.U; + sigma = sqrt(knCenter(kn,X,Xt)+1/beta-dot(XU,XU,1)); end + +if nargin == 3 && nargout == 3 + p = exp(logGauss(t,y,sigma)); +end \ No newline at end of file