dualsparsegeneralfeaturesbound.m.svn-base

来自「a function inside machine learning」· SVN-BASE 代码 · 共 38 行

SVN-BASE
38
字号
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 + =
减小字号Ctrl + -
显示快捷键?