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

Add automatic-clustering as custom-view attribute #175

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

chadbrower0
Copy link
Contributor

@chadbrower0 chadbrower0 commented May 23, 2023

This is a prototype of coloring users in an opinion dot display, by automatically clustering the users, and then assigning the same color to all users in the same cluster.

Memory use is O( number_of_users x number_of_proposals ). Processor use is O( number_of_users^2 x number_of_proposals ).

Arguably, the clustering logic should go in a separate file, and run in a worker thread started only on-demand.

@tkriplean
Copy link
Member

Chad, this is pretty awesome! Some notes:

  • on larger forums, ensureUsersClustered will hang because of the computational complexity. Unfortunately, that also means forum load will hang because ensureUsersClustered is called via get_participant_attributes, even when the opinions view dialogue isn't opened up.
  • A name like "opinion similarity" would probably be better than "user clustering"

I'm really happy to get some code that can construct the opinion similarity network amongst users. There's a related network, the "influence" network that is constructed to create some kind of measure of the influence of a participant on other participants in the forum (e.g. by writing a pro or con that gets lots of inclusions, or a proposal that is voted up).

I would love to provide a direct network view into these networks using a force-directed layout or something similar. I wrote about it a little bit at https://consider.consider.it/data-analytics-dashboard-design-development-priorities-33-24910, and I have some sketches in my sketchbook. While I've been thinking about these network visualizations as part of the host interface, I'm also curious if it would make sense to make them accessible to everyone.

@chadbrower0
Copy link
Contributor Author

I've added additional halting parameter MAX_GROUP_USERS_FRAC, to prevent all users ending up in the same cluster. You may need to adjust the parameter values to get better results.
Also, I've moved the clustering method to a separate worker thread. It appears to prevent freeze-up when clustering is slow, though I don't know what other effects might occur in a real forum with a large number of users.

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.

None yet

2 participants