]> granicus.if.org Git - liblinear/commit
Stopping conditon of dual CD method for L1- and L2-loss SVM is changed
authorChih-Jen Lin <cjlin@csie.ntu.edu.tw>
Wed, 28 Oct 2020 09:01:51 +0000 (17:01 +0800)
committerChih-Jen Lin <cjlin@csie.ntu.edu.tw>
Wed, 28 Oct 2020 09:01:51 +0000 (17:01 +0800)
commit475dfdbae1fa61d6507e9e5c9d5e132b52e00de5
treeb11a72b365a3136dd0c407dfe9fbf23d2b37db42
parent964c916e050bd4a81a7ab54a011f706f5b46c8f3
Stopping conditon of dual CD method for L1- and L2-loss SVM is changed

Currently the stopping condition is M-m <= \epsilon, where

M = max proj_gard(alpha) and m = min proj_grad(alpha).

This condition works well in practice, but we must ensure that the
following situation does not occur.

  M, m >> 0  or M,m << 0
but
  M - m <= \epsilon.

From the optimality condition, |M| and |m| must be close to zero.
For example, because

  grad_i f(0) = -1, for all i.

M=m= -1 and they satisfy M-m <= \epsilon.  Thus we add |M| <=\epsilon
and |m| <= \epsilon$ into the stopping condition.  In fact we can use
only these two inequalities as the stopping condition, but for
historical reasons we keep M-m <= \epsilon as the main condition to
check.
linear.cpp