?? som_quality.m
字號:
function [mqe,tge] = som_quality(sMap, D)%SOM_QUALITY Calculate the mean quantization and topographic error.%% [qe,te] = som_quality(sMap, D)%% qe = som_quality(sMap,D);% [qe,te] = som_quality(sMap,sD);%% Input and output arguments: % sMap (struct) a map struct% D the data% (struct) a data struct% (matrix) a data matrix, size dlen x dim%% qe (scalar) mean quantization error% te (scalar) topographic error%% The issue of SOM quality is a complicated one. Typically two% evaluation criterias are used: resolution and topology preservation.% If the dimension of the data set is higher than the dimension of the % map grid, these usually become contradictory goals. %% The first value returned by this function measures resolution and the% second the topology preservation.% qe : Average distance between each data vector and its BMU.% te : Topographic error, the proportion of all data vectors% for which first and second BMUs are not adjacent units.%% NOTE: when calculating BMUs of data vectors, the mask of the given % map is used.%% For more help, try 'type som_quality' or check out the online documentation.% See also SOM_BMUS.%%%%%%%%%%%%% DETAILED DESCRIPTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% som_quality%% PURPOSE%% Calculates two quality measures for the given map.%% SYNTAX%% qe = som_quality(sM,sD);% qe = som_quality(sM,D);% [qe,te] = som_quality(...);%% DESCRIPTION%% This function measures the quality of the given map. The measures are% data-dependent: they measure the map in terms of the given% data. Typically, the quality of the map is measured in terms of the% training data. The returned quality measures are average quantization% error and topographic error.%% The issue of SOM quality is a complicated one. Typically two evaluation% criterias are used: resolution and topology preservation. There are% many ways to measure them. The ones implemented here were chosen for% their simplicity.%% qe : Average distance between each data vector and its BMU.% Measures map resolution.% te : Topographic error, the proportion of all data vectors% for which first and second BMUs are not adjacent units.% Measures topology preservation.%% NOTE: when calculating BMUs of data vectors, the mask of the given % map is used. The mask affects the quantization errors, too.% If you want the quantization errors without the weighting given% by the mask, you can use the following code: % bmus = som_bmus(sMap,D); % this uses the mask in finding the BMUs% for i=1:length(bmus), % dx = sMap.codebook(bmus(i),:)-D(i,:); % m - x% dx(isnan(dx)) = 0; % remove NaNs % qerr(i) = sqrt(sum(dx.^2)); % euclidian distance% end% qe = mean(qerr); % average quantization error%% Please note that you should _not_ trust the measures blindly. Generally,% both measures give the best results when the map has overfitted the% data. This may happen when the number of map units is as large or larger% than the number of training samples. Beware when you have such a case.%% REFERENCES%% Kohonen, T., "Self-Organizing Map", 2nd ed., Springer-Verlag, % Berlin, 1995, pp. 113.% Kiviluoto, K., "Topology Preservation in Self-Organizing Maps", % in the proceeding of International Conference on Neural% Networks (ICNN), 1996, pp. 294-299.%% INPUT ARGUMENTS%% sMap (struct) Map struct.% D The data to be used.% (matrix) A data matrix, size dlen x dim.% (struct) A data struct.%% OUTPUT ARGUMENTS% % qe (scalar) mean quantization error% te (scalar) topographic error%% EXAMPLES%% qe = som_quality(sMap,D);% [qe,te] = som_quality(sMap,sD);%% SEE ALSO% % som_bmus Find BMUs for the given set of data vectors.% Copyright (c) 1997-2000 by the SOM toolbox programming team.% http://www.cis.hut.fi/projects/somtoolbox/% Version 1.0beta juuso 220997% Version 2.0beta juuso 151199%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% check arguments% input argumentsif nargin < 2, error('Not enough input arguments.'); end% dataif isstruct(D), D = D.data; end[dlen dim] = size(D);% calculate topographic error, too?if nargout==1, b=1; else b=[1:2]; end[bmus qerrs]= som_bmus(sMap,D,b);inds = find(~isnan(bmus(:,1)));bmus = bmus(inds,:);qerrs = qerrs(inds,:);l = length(inds);if ~l, error('Empty data set.'); end% mean quantization errormqe = mean(qerrs(:,1));if length(b)==2, % topographic error Ne = full(som_unit_neighs(sMap.topol)); tge = 0; for i=1:l, tge = tge+(Ne(bmus(i,1),bmus(i,2)) ~= 1); end tge = tge / l;else tge = NaN;endreturn;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -