Centrality Statement 사용 시 발생하는 메모리 오류 Centrality

Report
Centrality Statement 사용 시 발생하는 메모리 오류

Centrality Statement 사용 시 발생하는 메모리 오류 현상
Centrality에 측정에 데이터 사이즈가 큰 Link 정보, Node 정보를 사용하여 프로그램 실행하면 메모리 부족 오류가
발생할 수 있습니다.
프로그램 코드 예시
프로그램 실행 결과 예시 (로그)
proc optgraph
data_links = work.linksetout(keep = from_label
to_label)
data_nodes = work.nodesetout
out_nodes = work.central
graph_direction = directed
graph_internal_format = thin
loglevel = 2;
centrality
degree = both
close = weight
by_cluster = yes;
run;
 Community Detection을 통한 Linkset, Nodeset 정보를 이용
 Centrality Statement를 이용하여 실행
 메모리 오류 메시지 발생
 입력 데이터인 Linkset, Nodeset의 데이터 사이즈가 큰 것이
메모리 부족 오류 발생 원인 (※ 샘플 코드 실행 시)
• Community 개수: 약 100만 개
• Node 개수: 약 43만 개
• Link 개수: 약 33만 개
Centrality Statement 사용 시 발생하는 메모리 오류

Centrality Statement 사용 시 발생하는 메모리 오류 해결 방법 – 데이터 분리
메모리 오류를 해결하기 위해서는 Centrality를 측정하기 위한 커뮤니티 정보를 Partitioning하여 고객 Link 정보와
Join 합니다. 즉 커뮤니티 데이터셋의 전화번호와 고객 Link 데이터셋의 전화번호가 일치하는 데이터를 발신 번호와
수신 번호에서 각각 추출합니다.
전화번호 및 커뮤니티 정보
전화번호 및 커뮤니티
정보 데이터
0
NFL-09283
발신
ID
수신
ID
1
NFL-32142
SDA-32141
PGA-54321
NBA-12349
100000
NFL-09283
PGA-54321
6519
NFL-32142
100001
NHL-12384
POH-17254
UHD-18736
42315
MSL-09853
200000
PGA-54321
OIU-17254
35329
NHL-12384
200001
ABC-91735
NFL-09283
OIQ-12397
NBA-12349
PGA-54321
DBC-12865
OIQ-12351
…
NBA-12349
…
…
23123
…
…
수신 번호
…
발신 번호
PGA-54321
SKJ-87298
123123
MLB-87521
300000
CMG-82637
…
…
…
…
UTD-12352
323048
PGA-54321
1000000
PLS-12397
…
OMG-12371
…
수신
번호
커뮤니티
ID
…
전화
번호
고객 Link 정보
데이터
전화번호
…
전화번호 및 커뮤니티
정보 데이터
발신
번호
노드
ID
…
전화
번호
고객 Link 정보
데이터
고객 Link 정보
 데이터 Partition 방법 (샘플 코드 참조)
1. 커뮤니티 사이즈 선정 (예: 10만개 단위)
2. 0 ~ 10만 번 까지의 커뮤니티에 해당하는 전화번호를 고객 Link 데이터로부터 추출
• 발신 번호와 수신 번호 별도 추출
3. 반드시 커뮤니티에 포함되어 있는 전화번호만 추출 (e.g.: 5번 커뮤니티 고객 -> 200005번 커뮤니티 고객 정보는 삭제)
Centrality Statement 사용 시 발생하는 메모리 오류

Centrality 분석 Tip – 커뮤니티가 100만개 만들어졌을 경우 (※ 샘플 코드 확인)
메모리 부족 오류를 피하기 위해서 Centrality는 커뮤니티 정보를 N개로 Partitioning 하여 측정합니다. N개로 분리
시킨 경우 100만/N 번의 Centrality 측정 작업을 동일하게 수행해야 합니다.
1.
2.
100만 개 커뮤니티 생성 시 N 개 단위로 분리 (N 단위는 분석에 필요한 만큼 나누어 사용)

E.g.) 10만 개로 데이터를 분리할 경우 10번 반복 작업 수행

반복 작업을 수행하기 위해 MACRO를 이용 가능 (※ 필수 사항 아님)
추출된 데이터 중 Node_ID, FROM_ID, TO_ID 정보 제거

ID에 포함된 가장 큰 수가 메모리로 할당되기 때문

E.g.) Node_ID: 추출한 Node_ID 중 Max값이 50만 일 경우, SAS는 50개의 데이터로 인식
3.
Centrality 옵션을 사용하여 중심성과 관련된 Index 도출(degree, closeness, influence 등)
4.
커뮤니티 측정 10번 반복 (1 ~ 100000, 100001 ~ 200000, …, 900001 ~ 1000000)
5.
커뮤니티 별 측정된 Index 정보를 결합 (e.g: 샘플 코드의 Work.Central을 10개 결합 시킴)
6.
커뮤니티 별 Role Assignment
* 5, 6 번 순서가 변경되어도 무방

similar documents