Add dual method to `omisvm()` function
skent259 opened this issue · comments
Two options for adding the dual:
- Transform data with data replication, then pass down to
misvm()
method
- Pro: Uses current code
- Pro: Should require fewer tests
- Con: can't figure out how to handle quick kernel computations. Current data rep functions directly replicate the kernel, which is fast, but I need to figure out how to do this on new predictions.
- Con: the way code was set up requires a few "hacks", especially in scaling
- Write a new dualqp fit and model function in the omisvm case that solves the modified problem
- Pro: I have the formulation mostly figured out
- Con: Still need to figure out what the objective looks like
- Pro: could re-use some of the lower level code
- Con: con't figure out how to handle quick kernel computations on new data
The key barrier is the kernel computation. There might be a nice way to do this if selected
is consistent and can be recovered from the original x matrix?
Implemented with #44
Lingering issues:
- The performance doesn't look super great using the dual. Perhaps after data replication this problem is harder to solve. I'm not 100% sure why this happens though. Tried adding weights to help.
- The function takes a long time on medium sized datasets. This can be alleviated with the s parameter, though performance drops from some basic testing (this is expected).