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

Quickfixing the ACSD #513

Draft
wants to merge 10 commits into
base: develop
Choose a base branch
from

Conversation

RandomDefaultUser
Copy link
Member

As per offline discussion with @nerkulec, this PR seeks to improve the ACSD by

  1. Providing a better similarity measure (the "S" in ACSD)
  2. Providing a better distance measure (the "D" in ACSD)

The ACSD up to now operates on the assumption that for two distinct grid-points, both electronic and ionic local structure should be the same; it measures the distance between reality and idealized case to this effect. As @nerkulec has pointed out, there are two problems with the current approach:

Regarding 2.: the ACSD also penalizes for cases where the bispectrum descriptors are more dissimilar than the LDOS vectors, which it shouldn't. The only case we care about is the same bispectrum descriptors yielding different LDOS vectors (i.e., bispectrum descriptors are less dissimilar than LDOS vectors). This can be fixed by simply clipping the distance metrics rather than taking their absolute value, and has already been implemented here.

Regarding 1.: The cosine similarity is not the best metric for this kind of investigation. We compare similarities on two different vector spaces, and the cosine similarity is not equipped for that. There seem to be approaches to adapt it (e.g., here), but if I understand correctly, that requires to solve an eigenvalue problem. One may also think about the Jaccard distance, since the bispectrum descriptors are not really a vector denoting a direction but more a set of coefficients; of course, the Jaccard distance is designed for binary sets, so we would have to adapt this to float values. At any rate, I think @nerkulec already had a good idea for this problem, but when we talked about this in person, I didn't take proper notes. Could you maybe share your idea here again and/or implement it?

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

Successfully merging this pull request may close these issues.

2 participants