학부공부/데이터마이닝과통계

페이스북 사용자 네트워크 분석

IT grow. 2018. 9. 30. 07:31
반응형

페이스북 사용자 네트워크 분석을 해볼 수 있는 것이 있다 . 


그러기 위해서는 파일이 필요한데 , 다음 주소를 들어가서 다운 받아 주자.

http://snap.stanford.edu/ <-- 이 주소를 클릭해서 들어간다.


1. 초기 화면은 다음과 같을 텐데 , Dataset Collection을 들어가자.


2.들어가면 다음과 같은 화면이 보일 것이다 . ego-Facebook을 들어가주자.


3.들어 간뒤 맨 밑에 내리다 보면 다음과 같은 파일을 다운받아 주자 .


다운이 끝나면 준비는 끝났다 . 


우리는 이 파일을 사용해서 R에서 데이터 분석을 해 볼 것이다.

보통 보니까 여기서의 Vertex  : 꼭지점은 사용자이고 , 이들을 연결한 Edge는 네트워크 망을 의미하는 것 같다.'


library(igraph)

sn <- read.table(file.choose(), header=F)

# 페이스북 사용자 데이터 세트 읽기 


sn.df <- graph.data.frame(sn, directed=FALSE)

# sn 데이터를 그래프 형식의 데이터 프레임으로 변환 

# directed = F 로 지정하면 방향성이 없음을 의미 

plot(sn.df)

# 연결망 출력 

-->  여기서 plot 을 하면 시간이 2~3 분 정도 소요될 것이다. 데이터가 많기 때문이다.


sn1 <- subset(sn, sn$V1==1)

# sn데이터에서 V1 ==1  인 값을 sn1에 저장 

sn1.df <- graph.data.frame(sn1, directed=FALSE)

# sn1 데이터를 그래프 형식의 데이터 프레임으로 변환 

plot(sn1.df)


vcount(sn.df)

# sn데이터 프레임의 꼭지점 총 갯수 


ecount(sn.df)

# sn데이터 프레임의 총 연결 갯수 


V(sn.df)$name

# sn 데이터 프레임의 name 출력 


degree(sn.df, normalized=TRUE)

# sn 데이터 프레임의 연결 정규화  


tmax <- centralization.degree.tmax(sn.df) 

# sn 데이터 프레임의 연결 집중화 정도 


centralization.degree(sn.df, normalized=FALSE)$centralization / tmax

# sn 데이터 프레임의 평균 연결 집중 정도   


vmax <- V(sn.df)$name[degree(sn.df)==max(degree(sn.df))]

# sn 데이터 프레임의 이름 ( 연결의 정도가 max인 )


degree(sn.df, vmax)


# 위의 조건을 만족하는 데이터 프레임의 정도 

# p.351

summary(degree(sn.df))

# sn데이터 프레임의 연결 정도의 분석 


plot(degree(sn.df), xlab="수치", ylab="값", type='h')



반응형