Contents
Description demo_regression_CV.m
Demonstrates usage of ml_general_CV for regression on a variety of kernelized L2 regression functions
clear all close all generateData_sigmoid
usage of RBF kernelized L2 regression
options_kn = []; options_kn.lambdaL2 = 8; options_kn.basisFunc = @ml_kernel_rbf; options_kn.basisOptions.sigma = 0.5; options_kn.subModel = @ml_regression_L2; options_kn.subOptions.addBias = 1; model_kn = ml_regression_basis(Xtrain, ytrain, options_kn); yhat_kn = model_kn.predict(model_kn, Xtest); testError_kn = mean(abs(yhat_kn - ytest)); fprintf('Averaged absolute test error with %s is: %.3f\n', ... model_kn.name, testError_kn);
Averaged absolute test error with Regression under Basis Change with: RBF Kernel is: 0.046
usage of RBF kernelized L2 regression with CV on sigma
options_cv1 = []; options_cv1.lambdaL2 = 8; options_cv1.subModel = @ml_regression_basis; options_cv1.subOptions.subModel = @ml_regression_L2; options_cv1.subOptions.basisFunc = @ml_kernel_rbf; options_cv1.subOptions.subOptions.addBias = 1; options_cv1.paramNames = 'basisOptions.sigma'; options_cv1.paramValues = [0.5 1 1.5 2 2.5]'; options_cv1.nParams = 1; options_cv1.loss = 'sq'; model_cv1 = ml_general_CV(Xtrain, ytrain, options_cv1); yhat_cv1 = model_cv1.predict(model_cv1, Xtest); testError_cv1 = mean(abs(yhat_cv1 - ytest)); fprintf('Averaged absolute test error with %s is: %.3f\n', ... model_cv1.name, testError_cv1); fprintf('Best %s is: %.3f\n', options_cv1.paramNames, ... model_cv1.bestParams);
Averaged absolute test error with CV on: basisOptions.sigma is: 0.029 Best basisOptions.sigma is: 2.500
usage of RBF kernelized L2 regression with CV on sigma and lambda (L2 regularizer)
options_cv2 = []; options_cv2.subModel = @ml_regression_basis; options_cv2.subOptions.subModel = @ml_regression_L2; options_cv2.subOptions.basisFunc = @ml_kernel_rbf; options_cv2.subOptions.subOptions.addBias = 1; options_cv2.paramNames = {'basisOptions.sigma', 'lambdaL2'}; options_cv2.paramValues = {[0.5 1 1.5 2 2.5]', [0.5 1 1.5 2 2.5]'}; options_cv2.nParams = 2; options_cv2.loss = 'sq'; model_cv2 = ml_general_CV(Xtrain, ytrain, options_cv2); yhat_cv2 = model_cv2.predict(model_cv2, Xtest); testError_cv2 = mean(abs(yhat_cv2 - ytest)); fprintf('Averaged absolute test error with %s is: %.3f\n', ... model_cv2.name, testError_cv2); fprintf('Best %s is: %.3f\n', options_cv2.paramNames{1}, ... model_cv2.bestParams(1)); fprintf('Best %s is: %.3f\n', options_cv2.paramNames{2}, ... model_cv2.bestParams(2));
Averaged absolute test error with CV on: basisOptions.sigma & lambdaL2 is: 0.029 Best basisOptions.sigma is: 2.500 Best lambdaL2 is: 1.000
plotRegression1D(Xtrain, ytrain, model_kn, model_cv1, model_cv2);
