Skip to content

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.

2 participants