⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dualgreedygstest.m.svn-base

📁 a function inside machine learning
💻 SVN-BASE
字号:
%A script to test gram schmidt 
clear; 
rand('state',21); 

tol = 10^-7; 
numExamples = 15; 
numFeatures = 10; 
X = rand(numExamples, numFeatures); 

d = data; 
d = addDataField(d, 'X', X, 'examples'); 

[trainData, testData] = splitData2(d, 2/3); 

T = 5;
params.iterations = T; 
params.X.kernel = getDefaultLinearKernel; 

[subspaceInfo, trainInfo] = dualGreedyGSTrain(trainData, params); 
[testInfo, projectionInfo] = dualGreedyGSProject(trainData, testData, subspaceInfo, params); 

%Compare against the primal space Gram Schmidt 
testX = getDataFieldValue(testData, 'X'); 
trainX = getDataFieldValue(trainData, 'X'); 
trainXj = trainX; 
numTrainExamples = size(trainXj, 1); 

Q = zeros(numTrainExamples, T); 
b = zeros(numTrainExamples, T); 

for j=1:T 
    %First, pick the example with max norm 
    [maxNorm, maxInd] = max(sum(trainXj.^2, 2)); 
    b(maxInd, j) = 1/norm(trainXj(maxInd, :));
    Q(:, j) = trainXj(maxInd, :)'/norm(trainXj(maxInd, :)); 
    
    %Deflate Xj 
    trainXj = trainXj  - trainXj*Q(:, j)*Q(:, j)';
end 

%Features are X * Q
newTrainX = trainX*Q; 
newTestX = testX*Q; 

if norm(newTrainX - subspaceInfo.X.tau) > tol 
    error('Features using training set do not match those from primal version');
end

if norm(newTestX - getDataFieldValue(testInfo.data, 'X')) > tol 
    error('Features using training set do not match those from primal version');
end

if norm(b - subspaceInfo.X.b) > tol 
    error('Dual projection vectors using training set do not match those from primal version');
end

%Now we'll just check the project function by projecting the training
%examples 
[subspaceInfo2, trainInfo2] = dualGreedyGSTrain(trainData, params); 
[testInfo2, projectionInfo2] = dualGreedyGSProject(trainData, trainData, subspaceInfo2, params); 

if norm(getDataFieldValue(trainInfo2.data, 'X') - getDataFieldValue(testInfo2.data, 'X')) > tol 
    error('Problem with projection function'); 
end 

%Test against craigs code 
trainK = trainX*trainX';
testTrainK = testX*trainX';

[p,gsind,gsnorm] = greedyGS(trainK, T); 
[newTrainX2] = getProjections(p, trainK);
[newTestX2] = getProjections(p, testTrainK);

if norm(newTrainX - newTrainX2) > tol 
    error('Features on traning set do not match those of craigs'); 
end 

if norm(newTestX - newTestX2) > tol 
    error('Features on traning set do not match those of craigs'); 
end 




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -