Download this file

35 lines (29 with data), 659 Bytes

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function [nll,g,H,T] = LogisticLoss(w,X,y)
% w(feature,1)
% X(instance,feature)
% y(instance,1)
[n,p] = size(X);
Xw = X*w;
yXw = y.*Xw;
nll = sum( ([zeros(n,1) -yXw]));
if nargout > 1
if nargout > 2
sig = 1./(1+exp(-yXw));
g = -X.'*(y.*(1-sig));
else
g = -X.'*(y./(1+exp(yXw)));
end
end
if nargout > 2
H = X.'*diag(sparse(sig.*(1-sig)))*X;
end
if nargout > 3
T = zeros(p,p,p);
for j1 = 1:p
for j2 = 1:p
for j3 = 1:p
T(j1,j2,j3) = sum(y(:).^3.*X(:,j1).*X(:,j2).*X(:,j3).*sig.*(1-sig).*(1-2*sig));
end
end
end
end