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

File: <base>/sources/mlipoff_at_gmail.com/entry2/svmdecision_ML.m (968 bytes)
function [out,prob] = svmdecision_ML(Xnew,svm_struct)
%SVMDECISION evaluates the SVM decision function


alpha = svm_struct.SupportVectors.Alpha;
Xsv = svm_struct.SupportVectors.X;
Ysv = svm_struct.SupportVectors.Y;
bias = svm_struct.Bias;
kfun = svm_struct.KernelFunction;
kfunargs = svm_struct.KernelFunctionArgs;

Xtraining = svm_struct.TrainingData.X;
Ytraining = svm_struct.TrainingData.Y;

indGroupA = find(Ytraining == min(Ytraining));
indGroupB = find(Ytraining == max(Ytraining));

Ytraining(indGroupA) = 1;
Ytraining(indGroupB) = 2;

%do a logit regression on teh training data to get a fit for the
%probability
k = feval(kfun,Xtraining,Xsv,kfunargs); 
ftraining = k*(alpha.*Ysv) + bias;
beta = mnrfit(ftraining, Ytraining);


%by equ (13) in http://cs229.stanford.edu/notes/cs229-notes3.pdf
k = feval(kfun,Xnew,Xsv,kfunargs); %if Xnew is nxd and sv is mxd, k is nxm
f = k*(alpha.*Ysv) + bias;

out = double(f>0);

prob = mnrval(beta, f);
prob = prob(:,2);