How to visualize user clusters?

I have an application in which users interact with each other. I want to visualize these interactions so that I can determine if user clusters exist (in which interactions occur more often).

I have assigned a two-dimensional point for each user (where each coordinate is between 0 and 1). My idea is that the points of two users get closer to each other when they interact, “attractive power”, and I just re-look at my interaction logs again and again.

Of course, I need a “repulsive force”, which will also make users disperse, otherwise they will all collapse at one point.

At first I tried to control the lowest and highest of each XY coordinates and normalize their positions, but this did not work, several users with a small amount of interactions remained at the edges, and the rest all collapsed into the middle.

Does anyone know which equations I should use to move the points, both for the “attractive” force between users in their interaction, and the “repulsive” force to stop them all collapsing into one point?

Edit: In response to a question, I should indicate that I am dealing with 1 million users and about 10 million interactions between users. If anyone can recommend a tool that could do this for me, I'm all ears :-)

+3
source share
3

, , spring , : dx = -k*(x-l). dx - , x - , l - , k - spring, , spring , 0,1. l > 0 , .

"" , : dx = k / x^2. , , tweak k, .

+2

: -, log- . .

: Graphviz, "neato" "fdp". man:

  neato  draws  undirected graphs using ``spring'' models (see Kamada and
  Kawai, Information Processing Letters 31:1, April 1989).   Input files
  must  be  formatted  in the dot attributed graph language.  By default,
  the output  of  neato  is  the  input  graph  with  layout coordinates
  appended.

  fdp  draws  undirected  graphs using a ``spring'' model. It relies on a
  force-directed approach in the spirit of Fruchterman and Reingold  (cf.
  Software-Practice & Experience 21(11), 1991, pp. 1129-1164).

, , - . , , , , .

, , . , - (a node ).

; - ( , , , ..).

, .

+1

spring - : node . , . , , , . , , : , , .

Also, if you only have a few nodes, I would do it in 3D. The extra size of freedom allows you to create better solutions, and you should be able to visualize clusters in 3D, if not better than 2D.

0
source

Source: https://habr.com/ru/post/1697132/


All Articles