[r] igraph에서 커뮤니티 감지 알고리즘의 차이점은 무엇입니까?

약 700 개의 정점과 3500 개의 가장자리가있는 일반적인 개체가있는 약 100 개의 igraph 개체 목록이 있습니다.

동점 가능성이 더 높은 정점 그룹을 식별하고 싶습니다. 내 계획은 혼합 모델을 사용하여 정점 및 그룹 속성을 사용하여 그룹 내 관계 정점이 얼마나 많은지를 예측하는 것입니다.

어떤 사람들은 내 프로젝트의 다른 측면에 반응하고 싶어 할 수 있습니다. 이것은 훌륭 할 것입니다.하지만 제가 가장 관심을 갖는 것은 버텍스 그룹화를위한 igraph의 함수에 대한 정보입니다. 이러한 커뮤니티 감지 알고리즘을 접 했지만 장점과 단점 또는 다른 기능이 내 경우에 더 나은지 확실하지 않습니다. 여기 에서도 링크를 보았지만 igraph에만 국한된 것은 아닙니다. 조언 해 주셔서 감사합니다.



답변

다음은 현재 igraph에서 구현 된 커뮤니티 감지 알고리즘에 대한 간략한 요약입니다.

  • edge.betweenness.community계층 적 분해 프로세스로, 에지 사이의 점수 (즉, 주어진 에지를 통과하는 최단 경로 수)의 내림차순으로 에지가 제거됩니다. 이는 여러 그룹을 연결하는 에지가 여러 최단 경로에 포함될 가능성이 더 높기 때문에 많은 경우 한 그룹에서 다른 그룹으로 이동할 수있는 유일한 옵션이기 때문입니다. 이 방법은 좋은 결과를 산출하지만 가장자리 사이 계산의 계산 복잡성과 가장자리 제거 후 간격 점수를 다시 계산해야하기 때문에 매우 느립니다. ~ 700 개의 꼭지점과 ~ 3500 개의 에지가있는 그래프는이 접근 방식으로 분석 할 수있는 그래프의 크기 상한선에 가깝습니다. 또 다른 단점은edge.betweenness.community는 전체 덴드로 그램을 작성하고 최종 그룹을 얻기 위해 덴드로 그램을자를 위치에 대한 지침을 제공하지 않으므로이를 결정하기 위해 다른 측정 값을 사용해야합니다 (예 : 덴드로 그램).

  • fastgreedy.community또 다른 계층 적 접근 방식이지만 하향식이 아닌 상향식입니다. 탐욕스러운 방식으로 모듈화라는 품질 기능을 최적화하려고합니다. 처음에 모든 정점은 별도의 커뮤니티에 속하고 커뮤니티는 반복적으로 병합되어 각 병합이 로컬에서 최적이되도록합니다 (즉, 현재 모듈성의 값이 가장 크게 증가 함). 모듈화를 더 이상 늘릴 수없는 경우 알고리즘이 중지되므로 덴드로 그램뿐만 아니라 그룹화도 제공됩니다. 이 방법은 빠르며 튜닝 할 매개 변수가 없기 때문에 일반적으로 첫 번째 근사치로 시도되는 방법입니다. 그러나 해상도 제한이있는 것으로 알려져 있습니다. 즉, 주어진 크기 임계 값 미만의 커뮤니티 (올바르게 기억하는 경우 노드 및 에지 수에 따라 다름)는 항상 이웃 커뮤니티와 병합됩니다.

  • walktrap.community무작위 걷기를 기반으로 한 접근 방식입니다. 일반적인 아이디어는 그래프에서 임의의 걷기를 수행하면 주어진 커뮤니티 외부로 이어지는 가장자리가 몇 개만 있기 때문에 걷기가 동일한 커뮤니티 내에있을 가능성이 더 높다는 것입니다. Walktrap은 3-4-5 단계 (매개 변수 중 하나에 따라 다름)의 짧은 무작위 걷기를 실행하고 이러한 무작위 걷기의 결과를 사용하여와 같은 상향식 방식으로 별도의 커뮤니티를 병합합니다 fastgreedy.community. 다시 말하지만, 모듈성 점수를 사용하여 덴드로 그램을자를 위치를 선택할 수 있습니다. 빠르고 탐욕스러운 접근 방식보다 약간 느리지 만 (원본 출판물에 따르면) 약간 더 정확합니다.

  • spinglass.community소위 Potts 모델을 기반으로 한 통계 물리학의 접근 방식입니다. 이 모델에서 각 입자 (예 : 정점)는 c 스핀 상태 중 하나 일 수 있으며 입자 (예 : 그래프의 가장자리) 간의 상호 작용은 어떤 정점 쌍이 동일한 스핀 상태를 유지하고 어떤 정점을 선호할지 지정합니다. 다른 스핀 상태를 선호합니다. 그런 다음 주어진 단계 수에 대해 모델이 시뮬레이션되고 최종 입자의 스핀 상태가 커뮤니티를 정의합니다. 결과는 다음과 같습니다. 1) c 를 200까지 설정할 수 있지만 결국에는 c 개 이상의 커뮤니티 가 생성되지 않습니다 . 이는 사용자의 목적에 충분할 것입니다. 2) c 미만일 수 있습니다.일부 스핀 상태가 비워 질 수 있으므로 결국 커뮤니티. 3) 네트워크의 완전히 원격 (또는 불일치) 부분에있는 노드의 스핀 상태가 다르다는 보장은 없습니다. 이것은 연결이 끊어진 그래프에만 문제가 될 가능성이 더 높으므로 걱정하지 않겠습니다. 이 방법은 특히 빠르지 않고 결정적이지는 않지만 (시뮬레이션 자체 때문에) 클러스터 크기를 결정하는 조정 가능한 해상도 매개 변수가 있습니다. 스핀 글래스 방법의 변형은 부정적인 링크 (즉, 엔드 포인트가 다른 커뮤니티에있는 것을 선호하는 링크)를 고려할 수도 있습니다.

  • leading.eigenvector.community모듈화 기능을 다시 최적화하는 하향식 계층 적 접근 방식입니다. 각 단계에서 그래프는 분리 자체가 모듈성을 크게 증가시키는 방식으로 두 부분으로 나뉩니다. 분할은 소위 모듈성 행렬의 선행 고유 벡터를 평가하여 결정되며 밀접하게 연결된 그룹이 더 이상 분할되는 것을 방지하는 중지 조건도 있습니다. 관련된 고유 벡터 계산으로 인해 ARPACK 고유 벡터 솔버가 불안정한 축퇴 그래프에서는 작동하지 않을 수 있습니다. 비 퇴화 그래프에서는 약간 느리지 만 빠른 탐욕 방법보다 모듈성 점수가 더 높을 수 있습니다.

  • label.propagation.community모든 노드에 k 레이블 중 하나가 할당되는 간단한 접근 방식입니다 . 그런 다음 메서드는 반복적으로 진행되고 각 노드가 동기식으로 인접 항목의 가장 빈번한 레이블을 사용하는 방식으로 레이블을 노드에 다시 할당합니다. 이 방법은 각 노드의 레이블이 이웃에서 가장 빈번한 레이블 중 하나 일 때 중지됩니다. 매우 빠르지 만 초기 구성 (무작위로 결정됨)에 따라 다른 결과를 산출하므로 메서드를 여러 번 (예 : 그래프의 경우 1000 번) 실행 한 다음 합의 레이블을 작성해야합니다. 지루한.

igraph 0.6은 또한 정보 이론 원칙에 기반한 최첨단 Infomap 커뮤니티 탐지 알고리즘을 포함합니다. 그래프에서 임의 걷기에 대해 가장 짧은 설명 길이를 제공하는 그룹화를 구축하려고합니다. 여기서 설명 길이는 임의 걷기 경로를 인코딩하는 데 필요한 정점 당 예상 비트 수로 측정됩니다.

어쨌든, 난 아마로 갈 것 fastgreedy.community또는 walktrap.community첫 번째 근사치로하고이 두 어떤 이유로 특정 문제에 적합하지 않은 것으로 판명되면 그 다음 다른 방법을 평가합니다.


답변

다양한 커뮤니티 감지 알고리즘에 대한 요약은 http://www.r-bloggers.com/summary-of-community-detection-algorithms-in-igraph-0-6/에서 확인할 수 있습니다 .

특히 InfoMAP 알고리즘은 유용 할 수있는 최근의 새로운 알고리즘입니다 (유 방향 그래프도 지원함).


답변