📄 dualsparsegeneralfeaturesbound.m.svn-base
字号:
function [newTrainX, newTestX, subspaceInfo] = dualSparseGeneralFeaturesBound(trainX, trainY, testX, params)
%A function to run dualSparseGeneralFeatures3 and then use the bound to
%choose the number of iterations
%First, extract some features
params.verboseInfo = 1;
[newTrainX, newTestX, subspaceInfo] = dualSparseGeneralFeaturesLM3(trainX, trainY, testX, params);
iterations = size(newTrainX, 2); %Might be different from requested iterations
kernelFunction = char(params.kernelFunctionName);
kernelParams = params;
boundParams = params.boundParams;
boundParams.A = subspaceInfo.A;
boundParams.kernelFunction = kernelFunction;
boundParams.kernelParams = params;
fprintf('Computing covariance bound on resulting features ... ');
expectationBound = covarianceBound(trainX, trainY, newTrainX, boundParams);
%Heuristic for selecting cost of each feature - 20 gives 354 features with SMC
featureCost = abs(expectationBound(2) - expectationBound(1))/20;
featureCosts = cumsum(ones(iterations , 1)*featureCost);
expectationBound = expectationBound - featureCosts;
[maxCov, maxCovFeatures] = max(expectationBound);
fprintf(' ... optimal number of features is %d\n', maxCovFeatures);
newTrainX = newTrainX(:, 1:maxCovFeatures);
newTestX = newTestX(:, 1:maxCovFeatures);
subspaceInfo.numFeatures = maxCovFeatures;
subspaceInfo.expectationBound = expectationBound;
%Clear variables
subspaceInfo = rmfield(subspaceInfo, 'A');
subspaceInfo = rmfield(subspaceInfo, 'tau');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -