Predicting Mortality of ICU Patients: The PhysioNet/Computing in Cardiology Challenge 2012 1.0.0

File: <base>/sources/mlipoff_at_gmail.com/entry2/kernelList.m (1,522 bytes)
function K = kernelList(kernelName)

if strcmp(kernelName, 'linear')
    %K = @(a,b) linearKernel(a, b);
elseif strcmp(kernelName, 'mlp')
    K = @(a,b,k) mlpKernel(a, b, k(1), k(2));
elseif strcmp(kernelName, 'poly')
    K = @(a,b,c) polyKernel(a, b, c(1), c(2));
elseif strcmp(kernelName, 'gauss')
    K = @(a,b, sigma2) gaussKernel(a, b, sigma2);
elseif strcmpi(kernelName, 'ratquad')
    K = @(a,b,c) rationalQuadKernel(a, b, c);
else
    disp('must enter a correct name!')
end

function k = anovaKernel(a, b, sigma, n, d)
%a is m x dim0
%b is n x dim0 (n can equal m)
%k is mxn
k = zeros(size(a,1), size(b,1));

for k = 1:n
    for i = 1:size(a,1)
        for j = 1:size(b,1)
            k(i,j) = k(i,j) + (exp(-sigma*((a(i,:).^k)-(b(j,:).^k)).^2)).^d;
        end
    end
end
end

function k = rationalQuadKernel(a, b, c)
%a is m x dim0
%b is n x dim0
%k is mxm
k = zeros(size(a,1), size(b,1));
for i = 1:size(a,1)
    for j = 1:size(b,1)
        x = a(i,:);
        y = b(j,:);
        k(i,j) = 1-(norm(x-y).^2/(norm(x-y).^2+c));
    end
end
end

function k = polyKernel(a, b, c, d)
%a is m x dim0
%b is n x dim0
%k is mxn
k = (a*b' + c).^round(d);
end

function k = mlpKernel(a, b, k1, k2)
%a is m x dim0
%b is n x dim0
%k is mxn
%used for ann as well
k = tanh(k1*(a*b') + k2);
end

function k = gaussKernel(a, b, sigma2)
%a is m x dim0
%b is n x dim0
%k is mxm
k = zeros(size(a,1), size(b,1));
for i = 1:size(a,1)
    for j = 1:size(b,1)
        k(i,j) = exp((norm(a(i,:)-b(j,:)).^2)/sigma2);
    end
end
end

end