1 | %TQDC Trade-off Quadratic Discriminant (Regularized Bayes Normal Classifier)
|
---|
2 | %
|
---|
3 | % W = TQDC(A,ALF,R,S,DIM)
|
---|
4 | %
|
---|
5 | % INPUT
|
---|
6 | % A NxK dataset (N points in a K-dimensional space)
|
---|
7 | % ALF Trade-off parameter, ALF in [0,1] (optional; default: ALF = 0.1)
|
---|
8 | % R,S Additional regularization parameters, 0 <= R,S <= 1
|
---|
9 | % (optional; default: no regularization, i.e. R,S = 0)
|
---|
10 | % DIM Dimension of subspace structure in covariance matrix (default: K)
|
---|
11 | %
|
---|
12 | % OUTPUT
|
---|
13 | % W Quadratic Bayes Normal Classifier mapping
|
---|
14 | %
|
---|
15 | % DESCRIPTION
|
---|
16 | % Computation of the quadratic classifier between the classes of the dataset
|
---|
17 | % A assuming normal densities. Each class covariance matrix Gi (i=1..C) is
|
---|
18 | % modeled as a convex combination between the original class covariance Gi and
|
---|
19 | % the diagonal marix Gdiag retrieved from the overall weighted (by priors)
|
---|
20 | % covariance matrix. So,
|
---|
21 | % Gi = (1-ALF)*Gi + ALF*Gdiag
|
---|
22 | % If ALF=0, then you will get QDC.
|
---|
23 | % If ALF=1, then you will get NMSC.
|
---|
24 | %
|
---|
25 | % R and S (0 <= R,S <= 1) are additional parameters used for regularizing the
|
---|
26 | % resulting covariance matrices by
|
---|
27 | % Gi = (1-R-S)*Gi + R*diag(diag(Gi)) + S*mean(diag(Gi))*eye(size(Gi,1))
|
---|
28 | % This covariance matrix is then decomposed as Gi = W*W' + sigma^2 * eye(K),
|
---|
29 | % where W is a KxM matrix containing the M leading principal components.
|
---|
30 | %
|
---|
31 | % The use of soft labels is supported. The classification A*W is computed by
|
---|
32 | % NORMAL_MAP.
|
---|
33 | %
|
---|
34 | % DEFAULT
|
---|
35 | % ALF = 0.1
|
---|
36 | % R = 0
|
---|
37 | % S = 0
|
---|
38 | % DIM = K (data dimension)
|
---|
39 | %
|
---|
40 | % EXAMPLES
|
---|
41 | % PREX_MCPLOT, PREX_PLOTC.
|
---|
42 | %
|
---|
43 | % REFERENCES
|
---|
44 | % 1. R.O. Duda, P.E. Hart, and D.G. Stork, Pattern classification, 2nd
|
---|
45 | % edition, John Wiley and Sons, New York, 2001.
|
---|
46 | % 2. A. Webb, Statistical Pattern Recognition, John Wiley & Sons,
|
---|
47 | % New York, 2002.
|
---|
48 | %
|
---|
49 | % SEE ALSO
|
---|
50 | % MAPPINGS, DATASETS, NMC, NMSC, LDC, UDC, QDC, QUADRC, NORMAL_MAP
|
---|
51 |
|
---|
52 | % Copyright: R.P.W. Duin, E. Pekalska, D.M.J. Tax and P. Paclik
|
---|
53 | % ela.pekalska@googlemail.com
|
---|
54 | % Faculty EWI, Delft University of Technology and
|
---|
55 | % School of Computer Science, University of Manchester
|
---|
56 |
|
---|
57 |
|
---|
58 | function w = tqdc(a,alf,r,s,dim)
|
---|
59 |
|
---|
60 | if (nargin < 5)
|
---|
61 | prwarning(4,'Subspace dimensionality DIM not provided, assuming K.');
|
---|
62 | dim = [];
|
---|
63 | end
|
---|
64 | if (nargin < 4)
|
---|
65 | prwarning(4,'Regularisation parameter S not given, assuming 0.');
|
---|
66 | s = 0;
|
---|
67 | end
|
---|
68 | if (nargin < 3)
|
---|
69 | prwarning(4,'Regularisation parameter R not given, assuming 0.');
|
---|
70 | r = 0;
|
---|
71 | end
|
---|
72 | if (nargin < 2)
|
---|
73 | prwarning(4,'Trade-off parameter ALF not given, assuming 0.1.');
|
---|
74 | alf = 0.1;
|
---|
75 | end
|
---|
76 |
|
---|
77 | % No input arguments: return an UNTRAINED mapping
|
---|
78 | if (nargin < 1) | (isempty(a))
|
---|
79 | w = prmapping(mfilename,{alf,r,s,dim});
|
---|
80 | w = setname(w,'Trade-off Bayes-Normal-2');
|
---|
81 | return
|
---|
82 | end
|
---|
83 |
|
---|
84 |
|
---|
85 | % TRAIN the classifier
|
---|
86 | islabtype(a,'crisp','soft');
|
---|
87 | isvaldset(a,2,2); % at least 2 objects per class and 2 classes
|
---|
88 |
|
---|
89 | [m,k,c] = getsize(a);
|
---|
90 |
|
---|
91 | % If the subspace dimensionality is not given, set it to the data dimensionality.
|
---|
92 | if (isempty(dim)),
|
---|
93 | dim = k;
|
---|
94 | end
|
---|
95 |
|
---|
96 | if (dim < 1) | (dim > k)
|
---|
97 | error ('Number of dimensions DIM should lie in the range [1,K].');
|
---|
98 | end
|
---|
99 |
|
---|
100 | % Assert whether A has the right labtype.
|
---|
101 | islabtype(a,'crisp','soft');
|
---|
102 |
|
---|
103 | % Get mean vectors and class covariance matrices.
|
---|
104 | [U,G] = meancov(a);
|
---|
105 |
|
---|
106 | % Calculate means and priors.
|
---|
107 | pars.mean = +U;
|
---|
108 | pars.prior = getprior(a);
|
---|
109 |
|
---|
110 | % in the NMSC limit:
|
---|
111 | Gtot = zeros(c,k);
|
---|
112 | for j = 1:c
|
---|
113 | Gtot(j,:) = diag(G(:,:,j))';
|
---|
114 | end
|
---|
115 | Gtot = diag(pars.prior*Gtot);
|
---|
116 |
|
---|
117 | % Calculate class covariance matrices.
|
---|
118 |
|
---|
119 | pars.cov = zeros(k,k,c);
|
---|
120 | for j = 1:c
|
---|
121 | F = G(:,:,j);
|
---|
122 | F = (1-alf)*F + alf*Gtot;
|
---|
123 |
|
---|
124 | % Regularize, if requested.
|
---|
125 | if (s > 0) | (r > 0)
|
---|
126 | F = (1-r-s) * F + r * diag(diag(F)) +s*mean(diag(F))*eye(size(F,1));
|
---|
127 | end
|
---|
128 |
|
---|
129 | % If DIM < K, extract the first DIM principal components and estimate
|
---|
130 | % the noise outside the subspace.
|
---|
131 |
|
---|
132 | if (dim < k)
|
---|
133 | [eigvec,eigval] = preig(F);
|
---|
134 | eigval = diag(eigval);
|
---|
135 | [dummy,ind] = sort(-eigval);
|
---|
136 |
|
---|
137 | % Estimate sigma^2 as avg. eigenvalue outside subspace.
|
---|
138 | sigma2 = mean(eigval(ind(dim+1:end)));
|
---|
139 |
|
---|
140 | % Subspace basis: first DIM eigenvectors * sqrt(eigenvalues).
|
---|
141 | F = eigvec(:,ind(1:dim)) * diag(eigval(ind(1:dim))) * eigvec(:,ind(1:dim))' + sigma2 * eye(k);
|
---|
142 | end
|
---|
143 | pars.cov(:,:,j) = F;
|
---|
144 | end
|
---|
145 |
|
---|
146 | w = prmapping('normal_map','trained',pars,getlab(U),k,c);
|
---|
147 | w = setname(w,'Trade-off Bayes-Normal-2');
|
---|
148 | w = setcost(w,a);
|
---|
149 |
|
---|
150 | return;
|
---|