Closed antoinecollas closed 7 months ago
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 92.05%. Comparing base (
8a46819
) to head (5681f20
).
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Hello,
Yes, solving constrained QP is possible with scipy link. There are three available solvers for that: trust-constr
, SLSQP
and COLYBA
. I tested them, and SLSQP
is the fastest. Giving the Jacobian (computed analytically) fasten the computation also.
Indeed, CVXOPT is faster (perhaps 10 times faster than scipy for 1000 samples). However, I do not recommend including it in the requirements. I did it for adapt, but run in multiple bugs after new cvxopt releases...
My suggestion is to provide a faster optimization solver, using the Frank-Wolfe algorithm, which can be easily implemented. Frank-Wolfe works well for weighting methods based on MMD or KL minimization, such as KLIEP and KMM. It really speeds up the optimization. cf this paper : https://webdocs.cs.ualberta.ca/~dale/papers/ijcai15.pdf . It could be proposed as an alternative for the user via a solver
argument, to keep track of the original algorithm that uses classic QP solvers.
Thanks for all the infos @antoinedemathelin !
This PR implements the TarS method from http://proceedings.mlr.press/v28/zhang13d.pdf (mainly eq.6). Related issue: #43