Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Interface for LowRankModels.jl #44

Open
tlienart opened this issue Jan 22, 2019 · 5 comments
Open

Interface for LowRankModels.jl #44

tlienart opened this issue Jan 22, 2019 · 5 comments
Labels
enhancement New feature or request

Comments

@tlienart
Copy link
Collaborator

tlienart commented Jan 22, 2019

(I know there's still #35 waiting to be done but the models for which there already is a ScikitLearn.jl interface are somewhat easier to write interfaces for which, hopefully, will make me confident enough to help out on more complex stuff later).

LowRankModels.jl implements quite a lot of interesting stuff:

  • PCA (iterative approach so should be seen as "approxPCA" afaik)
  • QPCA (quadratically regularised PCA)
  • NNMF (non neg matrix facto)
  • KMeans (note they explicitly say it's not the most efficient way of doing KMeans so while we may want to offer an interface for it, there may be something better later [1])
  • RPCA (robust PCA)

[1] how do you envisage competing algorithms for the same task? E.g. if two packages do KMeans and implement MLJBase? Or, in fact, if two packages implement PCA like here and MultivariateStats?

I'm happy to try implement an interface for these.

@ablaom
Copy link
Member

ablaom commented Jan 22, 2019

That would be wonderful!!

Regarding competing algorithms, let me continue the discussion here

@ablaom
Copy link
Member

ablaom commented Jan 22, 2019

Just a warning. If you are implementing transformers rather than supervised models (e.g. PCA) then there is no coerce method and the user may present the input X to fit/predict in any Query.jl iterable table format. Ideally, transform will then be an object of the same data type (assuming it is a supported sink type). So you will need some familiarity with Query.jl. I am currently working on some more MLJBase utilities to make this less painful but WIP.

@tlienart
Copy link
Collaborator Author

tlienart commented Jan 22, 2019

Ok thanks, I will try and might again need some guidance in a WIP PR. I thought I'd mimic some of the stuff that you looked at for MultivariateStats

@ablaom
Copy link
Member

ablaom commented Jan 22, 2019

I only implemented RidgeRegressor from there.

@ablaom
Copy link
Member

ablaom commented Jan 22, 2019

The transformers we have live in src/builtins/Transformers.jl, the best example is Standardizer. However, it is not in a good state but I am working on that right now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants