aboutsummaryrefslogtreecommitdiff
path: root/tests/aux/testje.m
diff options
context:
space:
mode:
authorGertjan van den Burg <burg@ese.eur.nl>2016-09-22 11:50:58 +0200
committerGertjan van den Burg <burg@ese.eur.nl>2016-09-22 11:50:58 +0200
commit55a628da1e04e41d6dab8cbda9b8ed946970e13e (patch)
tree8093f1507542bf9c2d04b0d9102b81e5c207614e /tests/aux/testje.m
parentRemove commented out code (diff)
downloadgensvm-55a628da1e04e41d6dab8cbda9b8ed946970e13e.tar.gz
gensvm-55a628da1e04e41d6dab8cbda9b8ed946970e13e.zip
More unit tests for optimize
Also added auxiliary Octave files used to construct the unit tests
Diffstat (limited to 'tests/aux/testje.m')
-rw-r--r--tests/aux/testje.m79
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/aux/testje.m b/tests/aux/testje.m
new file mode 100644
index 0000000..aaad1f7
--- /dev/null
+++ b/tests/aux/testje.m
@@ -0,0 +1,79 @@
+clear;
+
+rand('state', 123456);
+
+n = 8;
+m = 3;
+K = 3;
+
+y = [ 2 1 3 2 3 3 1 2]';
+
+U = SimplexGen(K);
+
+UU = zeros(n, K-1, K);
+
+for jj=1:K
+ UU(:, :, jj) = U(y, :) - U(jj*ones(n, 1), :);
+end
+
+VV = zeros(n, K-1, K);
+for i=1:n
+ for j=1:K-1
+ for k=1:K
+ VV(i, j, k) = U(y(i), j) - U(k, j);
+ end
+ end
+end
+
+Z = [ones(n, 1), -1 + 2 * rand(n, m)];
+
+V = -1 + 2 * rand(m+1, K-1);
+
+ZV = Z*V;
+
+Q = zeros(n, K);
+for i=1:n
+ for j=1:K
+ Q(i, j) = ZV(i, :) * (U(y(i), :) - U(j, :))';
+ end
+end
+
+% calculate loss
+kappa = 0.5;
+p = 1.5;
+%rho = ones(n, 1);
+rho = zeros(n, 1);
+for i=1:K
+ nk = sum(y == i);
+ rho(y==i) = (n/(K*nk));
+end
+lambda = 0.123;
+
+H = zeros(n, K);
+for i=1:n
+ for j=1:K
+ q = Q(i, j);
+ if (q <= -kappa)
+ H(i, j) = (1 - q - (kappa + 1)/2.0);
+ elseif (q <= 1)
+ H(i, j) = (1/(2*kappa + 2)) * (1 - q)^2;
+ else
+ H(i, j) = 0;
+ end
+ end
+end
+
+R = zeros(n, K);
+I = eye(K);
+for i=1:n
+ R(i, :) = I(y(i, :), :);
+end
+R = ~logical(R);
+
+J = eye(m+1);
+J(1, 1) = 0;
+
+L = sum((H.^p).*R, 2).^(1/p);
+L = 1/n * sum(rho.*L) + lambda * trace(V'*J*V);
+
+% DON"T REMOVE YET!! \ No newline at end of file