From 39e62a38bf8725dba7c044f2395d5307a26ded08 Mon Sep 17 00:00:00 2001 From: Jan Klemkow Date: Fri, 11 May 2012 00:56:04 +0200 Subject: Add optimization method. --- opt_pred.m | 16 ++++++++++++++++ run_tests.m | 10 ++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 opt_pred.m diff --git a/opt_pred.m b/opt_pred.m new file mode 100644 index 0000000..26e8df8 --- /dev/null +++ b/opt_pred.m @@ -0,0 +1,16 @@ +function pred = opt_pred(real_data, pred_list) + + err_list = []; + + for i = 1:size(pred_list, 2) + err_list = [err_list; sum(abs(real_data - pred_list{i}))]; + end + + [min_err, idx] = min(err_list); + + pred = []; + + for i = 1:size(idx, 2) + pred = [pred pred_list{idx(i)}(:,i)]; + end +end diff --git a/run_tests.m b/run_tests.m index 836a3fe..0d44f1a 100644 --- a/run_tests.m +++ b/run_tests.m @@ -14,6 +14,10 @@ lq_data = [log_data(:,1:334) quad_data(:,335) log_data(:,336:570)]; sevenday_data = repmat(sevenday_pred(train_data, 4), 2, 1); random_data = rand_pred(train_data, 14); +pred_list = {mean_data regress_data quad_data log_data lq_data sevenday_data random_data}; + +opt_data = opt_pred(real_data, pred_list); + % plot prediction quallity [meqerr, meterr] = calc_error('mean', real_data, mean_data); [reqerr, reterr] = calc_error('regress', real_data, regress_data); @@ -23,9 +27,10 @@ random_data = rand_pred(train_data, 14); [lqqerr, lqterr] = calc_error('l&q reg.', real_data, lq_data); [seqerr, seterr] = calc_error('sevenday', real_data, sevenday_data); [raqerr, raterr] = calc_error('random', real_data, random_data); +[opqerr, opterr] = calc_error('optimize', real_data, opt_data); -qerr = [meqerr reqerr quqerr loqerr lqqerr seqerr raqerr]; -terr = [meterr reterr quterr loterr lqterr seterr raterr]; +qerr = [meqerr reqerr quqerr loqerr lqqerr seqerr raqerr opqerr]; +terr = [meterr reterr quterr loterr lqterr seterr raterr opterr]; bar(qerr); bar(terr); @@ -36,6 +41,7 @@ log_err = sum(abs(real_data - log_data)); lq_err = sum(abs(real_data - lq_data)); sevenday_err = sum(abs(real_data - sevenday_data)); random_err = sum(abs(real_data - random_data)); +opt_err = sum(abs(real_data - opt_data)); err = [mean_err;regress_err;quad_err;log_err;lq_err;sevenday_err;random_err]; min_err = sum(min(err)); -- cgit