30 likes | 265 Views
Centrality Statement 사용 시 발생하 는 메모리 오류. Centrality Statement 사용 시 발생하는 메모리 오류 현상 Centrality 에 측정에 데이터 사이즈가 큰 Link 정보 , Node 정보를 사용하여 프로그램 실행하면 메모리 부족 오류가 발생할 수 있습니다. 프로그 램 코드 예시. 프로그 램 실행 결과 예시 ( 로그 ). proc optgraph data_links = work.linksetout (keep = from_label to_label )
E N D
Centrality Statement 사용 시 발생하는 메모리 오류 • Centrality Statement 사용 시 발생하는 메모리 오류 현상 • Centrality에 측정에 데이터 사이즈가 큰 Link 정보, Node 정보를 사용하여 프로그램 실행하면 메모리 부족 오류가 발생할 수 있습니다. 프로그램 코드 예시 프로그램 실행 결과예시 (로그) procoptgraph data_links = work.linksetout(keep = from_labelto_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 데이터셋의 전화번호가 일치하는 데이터를 발신 번호와 수신 번호에서 각각 추출합니다. 고객 Link 정보 전화번호 및 커뮤니티 정보 전화번호 및 커뮤니티 정보 데이터 고객 Link 정보데이터 일치하는 데이터 추출 전화번호 발신번호 … … … 일치하는 데이터 추출 … … … 전화번호 및 커뮤니티 정보 데이터 고객 Link 정보데이터 … … … 전화번호 수신번호 … … … … … … • 데이터 Partition 방법 (샘플 코드 참조) • 커뮤니티 사이즈 선정 (예: 10만개 단위) • 0 ~ 10만 번 까지의 커뮤니티에 해당하는 전화번호를 고객 Link 데이터로부터 추출 • 발신 번호와 수신 번호 별도 추출 • 반드시 커뮤니티에 포함되어 있는 전화번호만 추출 (e.g.: 5번 커뮤니티 고객 -> 200005번 커뮤니티 고객 정보는 삭제)
Centrality Statement 사용 시 발생하는 메모리 오류 • Centrality 분석 Tip – 커뮤니티가 100만개 만들어졌을 경우(※ 샘플 코드 확인) • 메모리 부족 오류를 피하기 위해서 Centrality는 커뮤니티 정보를 N개로 Partitioning하여 측정합니다. N개로 분리 시킨 경우 100만/N 번의 Centrality 측정 작업을 동일하게 수행해야 합니다. • 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개의 데이터로 인식 • Centrality 옵션을 사용하여 중심성과 관련된 Index 도출(degree, closeness, influence 등) • 커뮤니티 측정 10번 반복 (1 ~ 100000, 100001 ~ 200000, …, 900001 ~ 1000000) • 커뮤니티 별 측정된 Index 정보를 결합 (e.g: 샘플 코드의 Work.Central을 10개 결합 시킴) • 커뮤니티 별 Role Assignment * 5, 6 번 순서가 변경되어도 무방