hadoop (giraph)에서 동작하는 분산 그래프 분석기 sotera-DGA의 동작 검증 (수정판)
목적
마지막 기사에서 "분산 그래프 분석기 sotera/distributed-graph-analytics (이하 Sotera-DGA)"의 louvain 방법 샘플을 실행했지만 결과의 타당성을 알지 못했기 때문에 곳곳에서 자주 사용되었습니다. 하고 있는 python-louvain의 출력 결과와 비교 검증해 보자.
방법
데이터 준비
검증을 위한 데이터로 소셜 네트워크 연구에서 자주 사용되는 karate club를 사용한다.
아래의 코드로 Sotera-DGA용 포맷으로 출력한다.
karate.pyimport networkx as nx
graph=nx.karate_club_graph()
for edge in graph.edges():
print str(edge[0]+1) + "," + str(edge[1]+1)
상기 코드로 출력된 데이터 karate.csv
작업 실행
작업 실행 방법에 대한 자세한 내용은 여기을 참조하십시오.
hadoop fs -put karate.csv /user/hdfs/input
bin/dga-yarn-giraph louvain "/user/hdfs/input/karate.csv" "/user/hdfs/output" -ca io.edge.reverse.duplicator=true -ca minimum.progress=0
Sotera-DGA에서는 양방향 접속의 그래프가 아니면 louvain법을 적용할 수 없고, 작업이 실패한다. 파라미터 ca io.edge.reverse.duplicator=true
를 붙이면, karate.csv와 같이 단방향의 노드 접속 밖에 기술되어 있지 않은 데이터가, 양방향 접속되고 있는 것으로 간주되어 읽힌다.
매개변수-ca minimum.progress=0
는 기본값입니다. 지정하지 않으면, 값의 설정 부분에 버그가 있어 2000등의 모르는 값이 되어 해석이 도중에 끝나 버리므로, 수정 pull-req (을)를 보내고 있다.
이번에는 아래의 순서로 분석 결과를 확인한다.
(1) 출력되는 데이터를 이 스크립트에서 networkx로 읽을 수있는 json 형식으로 변환합니다.
(2) 이 스크립트에서 matplotlib.pyplot에서 그래프 출력
(3) 이 스크립트에서 modularity (Q 값)도 계산한다.
결과
Sotera-DGA에 의한 결과
Sotera-DGA에서 louvain 방법을 실행하면 분석 알고리즘의 반복 별 상태가 다음과 같이 출력됩니다.
hadoop fs -ls /user/hdfs/output/giraph_*
-rw-r--r-- 1 nobody supergroup 630 2016-06-25 04:05 /user/hdfs/output/giraph_0/part-m-00001
-rw-r--r-- 1 nobody supergroup 132 2016-06-25 04:06 /user/hdfs/output/giraph_1/part-m-00001
파일 내용은 여기입니다.
도중 경과의 데이터에서 덴드로그램을 만들 수도 있습니다.
일단 giraph_[0-1]의 데이터를 바탕으로 최상위그룹핑 결과를 만든다.
데이터 형식은 이전 문서를 참조하십시오.
이것을 이 스크립트에서 networkx로 읽을 수있는 json 형식으로 변환하고 이 스크립트에서 matplotlib.pyplot에서 그래프 출력하면 아래와 같았다.
또한 Q값을 계산하면 0.409681130835였다.
python-louvain의 결과
karate_club의 데이터를 python-louvain의 best_pertition으로 해석한 결과는 아래와 같다.
또한 Q값을 계산하면 0.418803418803이었다.
Sotera-DGA 쪽은 12번의 노드가 잘 분리되어 있지 않은 것처럼 보인다.
파라미터 조정
Sotera-DGA의 LouvainRunner에는 minimum.progress
와 progress.tries
라는 두 가지 매개 변수가 있습니다.
htp // 소테라. 기주 b. 이오 / st 리부테 dg 등 ph - 아나 ly cs / ぉ ゔ ぁ ん / # ぉ ゔ ぁ
이 2개의 파라미터는 Q값의 변화량에 따라 계산을 도중에 종료시키기 위한 것으로, 원논문에는 존재하지 않는 Sotera-DGA의 독자적인 파라미터인 것 같다. (원래의 louvain법은 노드가 소속하는 그룹이 변화하지 않게 되면 종료였을 것이다.)
또한, 이 파라미터는 소스의 여기 의 처리 종료 판정으로 사용되고 있지만, 처리가 도중에 끝나지 않게 progress.tries를 10000등으로 하면(자) python-louvain와 같은 결과가 얻어졌다.
bin/dga-yarn-giraph louvain "/user/hdfs/input/karate.csv" "/user/hdfs/output" -ca io.edge.reverse.duplicator=true -ca minimum.progress=0 -ca progress.tries=10000
요약
sotera-DGA에 의해 python-louvain과 동등한 해석 결과를 얻는 수단도 알았으므로, 다음번은 보다 큰 데이터로 검증해 보고 싶다.
Reference
이 문제에 관하여(hadoop (giraph)에서 동작하는 분산 그래프 분석기 sotera-DGA의 동작 검증 (수정판)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/k_ishi/items/1586de190a877d4b2697
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
데이터 준비
검증을 위한 데이터로 소셜 네트워크 연구에서 자주 사용되는 karate club를 사용한다.
아래의 코드로 Sotera-DGA용 포맷으로 출력한다.
karate.py
import networkx as nx
graph=nx.karate_club_graph()
for edge in graph.edges():
print str(edge[0]+1) + "," + str(edge[1]+1)
상기 코드로 출력된 데이터 karate.csv
작업 실행
작업 실행 방법에 대한 자세한 내용은 여기을 참조하십시오.
hadoop fs -put karate.csv /user/hdfs/input
bin/dga-yarn-giraph louvain "/user/hdfs/input/karate.csv" "/user/hdfs/output" -ca io.edge.reverse.duplicator=true -ca minimum.progress=0
Sotera-DGA에서는 양방향 접속의 그래프가 아니면 louvain법을 적용할 수 없고, 작업이 실패한다. 파라미터
ca io.edge.reverse.duplicator=true
를 붙이면, karate.csv와 같이 단방향의 노드 접속 밖에 기술되어 있지 않은 데이터가, 양방향 접속되고 있는 것으로 간주되어 읽힌다.매개변수
-ca minimum.progress=0
는 기본값입니다. 지정하지 않으면, 값의 설정 부분에 버그가 있어 2000등의 모르는 값이 되어 해석이 도중에 끝나 버리므로, 수정 pull-req (을)를 보내고 있다.이번에는 아래의 순서로 분석 결과를 확인한다.
(1) 출력되는 데이터를 이 스크립트에서 networkx로 읽을 수있는 json 형식으로 변환합니다.
(2) 이 스크립트에서 matplotlib.pyplot에서 그래프 출력
(3) 이 스크립트에서 modularity (Q 값)도 계산한다.
결과
Sotera-DGA에 의한 결과
Sotera-DGA에서 louvain 방법을 실행하면 분석 알고리즘의 반복 별 상태가 다음과 같이 출력됩니다.
hadoop fs -ls /user/hdfs/output/giraph_*
-rw-r--r-- 1 nobody supergroup 630 2016-06-25 04:05 /user/hdfs/output/giraph_0/part-m-00001
-rw-r--r-- 1 nobody supergroup 132 2016-06-25 04:06 /user/hdfs/output/giraph_1/part-m-00001
파일 내용은 여기입니다.
도중 경과의 데이터에서 덴드로그램을 만들 수도 있습니다.
일단 giraph_[0-1]의 데이터를 바탕으로 최상위그룹핑 결과를 만든다.
데이터 형식은 이전 문서를 참조하십시오.
이것을 이 스크립트에서 networkx로 읽을 수있는 json 형식으로 변환하고 이 스크립트에서 matplotlib.pyplot에서 그래프 출력하면 아래와 같았다.
또한 Q값을 계산하면 0.409681130835였다.
python-louvain의 결과
karate_club의 데이터를 python-louvain의 best_pertition으로 해석한 결과는 아래와 같다.
또한 Q값을 계산하면 0.418803418803이었다.
Sotera-DGA 쪽은 12번의 노드가 잘 분리되어 있지 않은 것처럼 보인다.
파라미터 조정
Sotera-DGA의 LouvainRunner에는 minimum.progress
와 progress.tries
라는 두 가지 매개 변수가 있습니다.
htp // 소테라. 기주 b. 이오 / st 리부테 dg 등 ph - 아나 ly cs / ぉ ゔ ぁ ん / # ぉ ゔ ぁ
이 2개의 파라미터는 Q값의 변화량에 따라 계산을 도중에 종료시키기 위한 것으로, 원논문에는 존재하지 않는 Sotera-DGA의 독자적인 파라미터인 것 같다. (원래의 louvain법은 노드가 소속하는 그룹이 변화하지 않게 되면 종료였을 것이다.)
또한, 이 파라미터는 소스의 여기 의 처리 종료 판정으로 사용되고 있지만, 처리가 도중에 끝나지 않게 progress.tries를 10000등으로 하면(자) python-louvain와 같은 결과가 얻어졌다.
bin/dga-yarn-giraph louvain "/user/hdfs/input/karate.csv" "/user/hdfs/output" -ca io.edge.reverse.duplicator=true -ca minimum.progress=0 -ca progress.tries=10000
요약
sotera-DGA에 의해 python-louvain과 동등한 해석 결과를 얻는 수단도 알았으므로, 다음번은 보다 큰 데이터로 검증해 보고 싶다.
Reference
이 문제에 관하여(hadoop (giraph)에서 동작하는 분산 그래프 분석기 sotera-DGA의 동작 검증 (수정판)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/k_ishi/items/1586de190a877d4b2697
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
bin/dga-yarn-giraph louvain "/user/hdfs/input/karate.csv" "/user/hdfs/output" -ca io.edge.reverse.duplicator=true -ca minimum.progress=0 -ca progress.tries=10000
sotera-DGA에 의해 python-louvain과 동등한 해석 결과를 얻는 수단도 알았으므로, 다음번은 보다 큰 데이터로 검증해 보고 싶다.
Reference
이 문제에 관하여(hadoop (giraph)에서 동작하는 분산 그래프 분석기 sotera-DGA의 동작 검증 (수정판)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k_ishi/items/1586de190a877d4b2697텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)