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

Is there any implementation of INDSCAL MDS? #1

Open
davips opened this issue Jun 4, 2023 · 2 comments
Open

Is there any implementation of INDSCAL MDS? #1

davips opened this issue Jun 4, 2023 · 2 comments

Comments

@davips
Copy link

davips commented Jun 4, 2023

This implementation worked 33x faster than sklearn's smacof in my laptop for a small dataset: 500x5.
Is there any implementation of INDSCAL MDS?
Is it possible to adapt or workaround this current implementation for that?

@SethEBaldwin
Copy link
Owner

Glad to see that MDSCUDA is providing speed improvements on your machine!

I have to admit that I'm not familiar with INDSCAL MDS. However, the reason this implementation works is because the SMACOF algorithm which minimizes the MDS loss consists of repeated matrix multiplication (see here for an explanation).

Unfortunately I can't commit to doing any additional work on this repository, but if you are interested in a version with INDSCAL, the first step would be to check that there is a variant of the SMACOF algorithm for INDSCAL MDS. If there is, then it is likely that this repo could be tweaked to work for the case of INDSCAL MDS.

@davips
Copy link
Author

davips commented Jun 4, 2023

Thanks for the answer. Congratulations for the hardwork!

I think so. At least, the smacof R package implements it.
INDSCAL is the same as MDS with the difference of accepting multiple dissimilarity matrices as input AFAIK.

It seems to be a variant of smacof there:
"... (MDS) based on stress minimization using majorization (smacof): ratio/interval/ordinal/spline MDS on symmetric dissimilarity matrices, MDS with external constraints on the configuration, individual differences scaling (idioscal, indscal), MDS with spherical restrictions, and ratio/interval/ordinal/spline unfolding (circular restrictions, row-conditional). Various tools and extensions like jackknife MDS, bootstrap MDS, permutation tests, MDS biplots, gravity models, unidimensional scaling, drift vectors (asymmetric MDS), classical scaling, and Procrustes are implemented as well"

Perhaps I will find some time, or a student willing, to learn and extend your numba scheme to INDSCAL.

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

No branches or pull requests

2 participants