DisTools introductory example, pseudo-Euclidean embedding
Get rid of old figures. Take a dataset (other examples are kimia_shapes
, chickens
and protein
)
delfigs
A = catcortex
Now we find an embedding into a pseudo-Euclidean space. This is only possible if A is symmetric and has a zero diagonal. The mapping is found by pe_em. The dimensionalities of the positive and negative subspaces can nbe retrieved by signature and the dataset is mapped into the PE-Space.
W = A*pe_em;
sig = signature(W);
X = setname(A*W,'PE Space');
The dimensions (features) of X are ranked that X(:,1:sig(1))
contains the positive space starting with the most significant direction (largest eigenvalue) and X(:,sig(1)+1:sig(1)+sig(2))
contains the negative space, starting with the most significant direction (most negative eigenvalue). A scatterplot of these two most significant dimensions (most positive and most negative) can thereby be made as follows.
scatterd(X(:,[1 sig(1)+1]));
title('Pseudo Euclidean Space')
xlabel('First positive dimension')
ylabel('First negative dimension')
Compare with the first two positive directions:
figure;
scatterd(X(:,[1 2]));
title('Pseudo Euclidean Space')
xlabel('First positive dimension')
ylabel('Second positive dimension')
Classifiers in in PE-space should use its specific definition of distances. For some classifiers this is possible, e.g. nmc
, knnc
and parzenc
. The pseudo-Euclidean variants of the last two classifiers however, should be identical to the corresponding classifiers for the dissimilarity data itself, knndc
and parzenddc
if these representations are based on the same objects. Normal density based classifiers (ldc
,udc
and qdc
) in PE-space do not depend on the signature as it cancels in the computation of squared distances. The interpretation of normal densities in pe-spaces is, however, disputable as such densities have no proper definitions in such spaces.
In the following experiment these classifiers are compared for various spaces. the associated psace ('ass'
), the positive space ('pos'
) and the negative space ('neg'
) are all Euclidean. The pseudo-Euclidean classifiers (pe_nmc, pe_knnc, pe_parzenc
) are for these spaces identical to the original variants (pe_nmc, pe_knnc, pe_parzenc
)
Define the classifiers:
U = {pe_nmc,ldc,pe_knnc,pe_parzenc}
Define the mappings to the subspaces
Wass = euspace(W,'ass');
Wpos = euspace(W,'pos');
Wneg = euspace(W,'neg');
Map the original dissimilarities to these subspaces and name the resulting datasets properly
Xass = setname(A*Wass,'Ass Space');
Xpos = setname(A*Wpos,'Pos Space');
Xneg = setname(A*Wneg,'Neg Space');
Run a crossvalidation for all datasets on all classifiers
crossval({X,Xass,Xpos,Xneg},U,5,5)
Compute for every space a set of learning curves as well:
figure;
e = cleval(A*W,U,[],5);
plote(e);
title('PE Space');
figure;
e = cleval(A*Wass,U,[],5);
plote(e);
title('Associated Space');
figure;
e = cleval(A*Wpos,U,[],5);
plote(e);
title('Positive Space');
figure;
e = cleval(A*Wneg,U,[],5);
plote(e);
title('Negative Space');
Finally, show all figures:
showfigs
Return to DisTools Introductory Examples |