사용자가 서로 상호 작용하는 응용 프로그램이 있습니다. 이러한 상호 작용을 시각화하여 사용자 클러스터가 존재하는지 (상호 작용이 더 자주 발생하는지) 확인할 수 있도록하려고합니다.사용자 클러스터를 시각화하려면 어떻게합니까?
각 사용자에게 2 차원 점을 지정했습니다 (각 좌표는 0과 1 사이입니다). 내 아이디어는 두 사용자의 상호 작용이 서로 밀접한 관계를 맺고 "매력있는 힘"이 넘치며 상호 작용 로그를 반복해서 반복적으로 사용한다는 것입니다.
당연히, 나는 "반발력 (repulsive force)"이 필요하다. 그렇지 않으면 사용자들을 서로 밀어 붙일 것이다. 그렇지 않으면 모두 단일 지점으로 붕괴 할 것이다.
처음에는 각 XY 좌표 중 가장 낮은 값과 가장 높은 값을 모니터링하고 위치를 정규화하려고 시도했지만 작동하지 않았습니다. 약간의 상호 작용이있는 일부 사용자가 가장자리에 머물렀고 나머지는 모두 접혀있었습니다 중간에.
사용자가 상호 작용할 때 "매력적"인 힘과 단일 지점에 모든 것이 붕괴되는 것을 막는 "반발하는"힘을 위해 포인트를 이동하는 데 사용해야하는 방정식을 아는 사람이 있습니까?
편집 : 질문에 대한 응답으로 약 1 백만 명의 사용자와 사용자 간의 상호 작용이 약 1 천만 건에 달한다는 점을 지적해야합니다. 누구나 나를 위해이 작업을 수행 할 수있는 도구를 추천 할 수 있다면 나는 완전히 귀를 기울입니다 :-)
답변을주었습니다. 그러나 가중치가있는 상호 작용 그래프를 구성하지 않고 graphviz 스프링 모델 렌더러를 통해 실행하거나 데이터에 대해 클러스터링 알고리즘을 실행해야하는 이유는 무엇입니까? 열심히 응시하는 것 이외에 클러스터하는 방법이 있습니다. –
문제는 제가 약 1 백만 명의 사용자와 1,000 만 건의 상호 작용을 처리하고 있다는 것입니다. 그래프 비즈가 그걸 감당할 수 있다고 생각하니? – sanity
음 ... graphviz의 레이아웃 엔진은 다소 느릴 수 있습니다. 그러나 PERL 스크립트에서 간단한 집적 클러스터링과 방사형 레이아웃이 작동해야합니다. 연결 그래프를 graphviz 형식으로 구성하고 해당 pkg에서 twopi 또는 circo를 실행하면 작동 할 수 있습니다. –