]> granicus.if.org Git - liblinear/commit
Add mixed diagonal preconditioner to TRON method
authorb92paul <b92paul@gmail.com>
Tue, 17 Oct 2017 10:51:40 +0000 (18:51 +0800)
committerb92paul <b92paul@gmail.com>
Tue, 17 Oct 2017 10:51:40 +0000 (18:51 +0800)
commitc923f559c944e2e16031f14f99c07653b8e5fd04
treebd47edcfbc44792e08196e281ac7d4853a88953b
parent3e01492c3ff4cb5b590911b6a22738bac636255e
Add mixed diagonal preconditioner to TRON method

We use (1-alpha)*I + alpha*diag(H_k) with
alpha=0.01 as a preconditioner to run PCG in TRON
method.

Following lines are the changes:
- Change TRON::trcg to TRON::trpcg with
additional argument M for PCG iterations
- Add l2r_l2_svc_fun::get_diagH and
l2r_l2_svc_fun::get_diagH to get diagonal
component of Hessian
- Add static function uTMv for weighted dot
for vector u and v with weight M

For detailed analysis, please check
http://www.csie.ntu.edu.tw/~cjlin/papers/tron_pcg/precondition.pdf
linear.cpp
tron.cpp
tron.h