가중 소셜 네트워크 / 그래프에서 커뮤니티 감지를 수행하는 방법은 무엇입니까?


42

가중치가 있고 방향이없는 가장자리 가있는 그래프에서 커뮤니티 감지 / 그래프 분할 / 클러스터링을 수행 할 때 누군가가 좋은 출발점을 제안 할 수 있는지 궁금합니다 . 문제의 그래프는 약 3 백만 개의 모서리를 가지며 각 모서리는 연결하는 두 정점 사이의 유사도를 나타냅니다. 특히,이 데이터 세트에서 모서리는 개인이며 정점은 관찰 된 동작의 유사성을 측정 한 것입니다.

과거에 나는 stats.stackexchange.com에 대한 제안을 따르고 igraph의 Newman의 모듈성 클러스터링 구현을 사용했으며 결과에 만족했지만 가중치가없는 데이터 세트에있었습니다.

살펴 봐야 할 특정 알고리즘이 있습니까?

답변:


20

Newman의 모듈화 클러스터링 (fastgreedy 기능)의 igraph 구현은 가중치가있는 모서리와 함께 사용될 수 있습니다. 가장자리에 가중치 속성을 추가하고 평소대로 분석하십시오. 내 경험상, 타이가 적을수록 가중치로 더 빠르게 실행됩니다.


이것을 지적 해 주셔서 감사합니다. 문서의 가중치에 대한 참조를 완전히 놓쳤습니다.
laramichaels

9

Gephi 가 무 방향 가중치 그래프를 처리 할 수 있다는 것을 알고 있지만 CSV 또는 Ucinet DL 과 매우 유사한 GDF에 저장해야한다는 것을 기억합니다 . 여전히 알파 릴리스입니다. 이제 그래프 클러스터링에 대해 Gephi에는 최신 버전에서 사용할 수있는 MCL 알고리즘을 제외하고 클러스터링 파이프 라인이 부족한 것 같습니다. 거기에 있었다 구글 코드 프로젝트 2009 년, Gephi 네트워크 통계 (예 : 뉴먼의 모듈화 메트릭 특징으로는)하지만, 뭔가가이 방향으로 출시되었습니다 나도 몰라. 어쨌든, 그것은 일종의 모듈화 / 클러스터링 계산을 허용하는 것처럼 보이지만 R과 Gephi를 사용하는 소셜 네트워크 분석R과 Gephi를 사용한 소셜 네트워크 분석을위한 데이터 준비 ( @Tal 덕분에 많은 감사).

파이썬에 익숙하다면 NetworkX를 사용해 볼 가치가 있습니다 ( 해당 코드 가있는 가중치 그래프 의 예 ). 그런 다음 분석을 수행하는 여러 가지 방법이 있습니다.

또한 복잡한 네트워크 및 복잡성에 대한 INSNA- 소셜 네트워크 분석 소프트웨어 또는 Tim Evans의 웹 페이지를 참조하십시오 .


안녕하세요. Gephi가 모듈화를 통해 커뮤니티를 식별하기 위해 가중치가 부여 된 무 방향 그래프를 처리 할 수 ​​없음을 알려드립니다. 감사. -Gautam

감사합니다. 나는 Gephi에 익숙하지 않지만 적극적으로 개발되고 있다고 생각했습니다.
chl


4

Louvain 모듈화 알고리즘은 C ++에서 사용할 수 있습니다 : https://sites.google.com/site/findcommunities/

수백만 개의 노드와 에지로 구성된 가중치 네트워크를 처리하며 Newman 알고리즘보다 훨씬 빠른 것으로 입증되었습니다.


Louvain 모듈화 알고리즘은 빠르고 안정적입니다.지도 축소 버전이 있는지 궁금합니다.
페이지

3

파이썬을 사용하고 NetworkX를 사용하여 가중치 그래프를 작성한 경우 python-louvain 을 클러스터링에 사용할 수 있습니다 . 여기서 G는 가중치 그래프입니다.

import community 
partition = community.best_partition(G, weight='weight')

1

방금 R의 tnet 패키지를 보았습니다. 제작자는 가중 및 이분 (이중 모드) 그래프에서 커뮤니티 검색을 연구하는 것 같습니다.

http://opsahl.co.uk/tnet/content/view/15/27/

아직 사용하지 않았습니다.


1

SLPA (현재 GANXiS라고 함)는 소셜 네트워크 (비 방향 / 직접 및 비가 중 / 가중)에서 분리 된 커뮤니티와 겹치는 커뮤니티를 모두 감지 할 수있는 빠른 알고리즘입니다. 이 알고리즘은 실제 소셜 및 유전자 네트워크에서 의미있는 결과를 생성합니다. 최신 기술 중 하나입니다. 에서 사용할 수 있습니다

https://sites.google.com/site/communitydetectionslpa/

자세한 내용은 멋진 리뷰 arxiv.org/abs/1110.5813을 참조하십시오.


1

3 백만 개의 노드를 처리 할 수있는 겹치지 않는 가중치 / 비 가중 네트워크에 대한 Java 구현을했습니다 (백만 노드 데이터 세트에 대해 테스트했습니다). 그러나 k- 평균처럼 작동하며 입력으로 감지되는 파티션 수 (km 단위)를 필요로합니다. 당신은 더 많은 정보를 찾을 수 있습니다 여기 , 그리고 여기입니다 코드 , GitHub의에

건배,

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.