to the list of examples

Write a target function for optimization in regression analysis

The target function usually requires additional parameters and must be placed apart from the main module. It is convinient to have several target function and use them in turn.

Contents

Load data from file

fname = 'demo_target_function.csv';
DATA = dlmread(fname,',');
y = DATA(:,1);
x = DATA(:,2:end);
%plot(x);

Tune a linear regression model using a common optimization algorithm

w0 = 0.1*ones(10,1); % parameters
w1 = 0.1*rand(10,1); % additional parameters
lambda =1; % regularization parameter

% run the optimization algorithm
w = fminunc(@target_function,w0,[],x,y);
Warning: Gradient must be provided for trust-region method;
  using line-search method instead.
Optimization terminated: relative infinity-norm of gradient less than options.TolFun.

Plot the results

h = figure; hold on
plot([1:length(y)],y,'r-');
plot([1:length(y)],x*w,'b-');
legend('Raw data','Regression');
xlabel('x');
ylabel('y');
% saveas(h,'demo_target_function_01','png')
close(h);

The target function example

% function err = target(w,x,y,lambda,w1)
% Target function for a demo  optimization problem
%
% err = target(w,x,y,lambda,w1)
%
% w [1,W] parameter vector to be optimized
% x [N,1] independent variable of the regression model
% y [N,1] dependent variable
% lambda [scalar] regularization parameter (optional)
%
% num = nargin;
% if num == 5
%       regul = lambda* sumsqr(w-w1);
% else
%       regul = 0;
% end
% err = sumsqr(y-x*w) + regul;
% return
%

http://strijov.com

% this file: demo_target_function