Social Network Analysis with R
Nguyễn Văn Chức, chuc1803@gmail.com
Phân tích mạng xã hội (Social Network
Analysis, SNA) là phương pháp để trực quan hóa (visualize), mô tả các
đặc trưng, phát hiện các mối quan hệ hoặc cấu trúc của network.
Bài viết này giới
thiệu cách triển khai Social Network Analysis với ngôn ngữ R sử dụng thư viện
igraph.
Dữ liệu và yêu cầu:
Package igraph cung
cấp tools để thực hiện Social Network Analysis
Dataset: 2 file .csv
dữ liệu về các diễn viên (Actors.csv) và các Film (movies.csv) có thể tải tại ĐÂY
(Tải code R để thực
hiện network analysis tại ĐÂY)
Dữ liệu file
Actors.csv
Dữ liệu file
Movies.csv
Mục đích là xây dựng một Actor Network để mô tả các thông tin liên quan đến dataset đã cho như cho biết những diễn viên xuất hiện cùng với nhau trong các bộ phim, diễn viên nào xuất hiện cùng với các diễn viên khác trong nhiều film nhất... một cách trực quan bằng cấu trúc network.
#Social Network
Analysis Tutorial
install.packages("igraph")
install.packages("readr")
library(igraph)
library(readr)
#Reading Data from
github
setwd("D:/R")
actors =
read.csv("Actors.csv")
movies =
read.csv("Movies.csv")
Building the Network
Có 8 diễn viên trong network là Tom Hanks, Gary Sinise,
Robin Wright, Bill Paxton, Kevin Bacon, Ed Harris, Sean Connery and Nicolas
Cage
Và 3 Movies là Forest
Gump, Apollo 13, The Rock
Các Movies được xem
như các Connection giữa các Actors phụ thuộc vào những phim nào họ đóng cùng nhau
Tên những diễn viên có mặt cùng với nhau trong
film sẽ xuất hiện cùng nhau trong network, ví dụ diễn viên Tom Hanks và Gary Sinise sẽ xuất hiện cùng nhau vì họ cùng
xuất hiện trong film Forest Gump và Apollo 13.
Tạo một network với các node là các diễn viên
và các cạnh kết nối là các diễn viên xuất hiện cùng nhau trong film, các cạnh
trong network là không định hướng chỉ quan tâm đến có xuất hiện cùng nhau trong
film
#Building the Network
actorNetwork <-
graph_from_data_frame(d=movies, vertices=actors, directed=F)
#Plotting the Network
plot(actorNetwork)
Nhìn vào network ta thấy Tom Hanks xuất hiện
với Gary Sinise 2 lần (cùng đóng trong 2 film), Ed Harris, Tom Hanks, Gary
Sinise xuất hiện cùng với nhiều diễn viên khác trong film nhất (cùng bằng 6)
Network này cho ta cái nhìn trực quan, để có
thêm thông tin chi tiết về network, chẳng hạn tô màu khác nhau để biết các diễn
viên xuất hiện cùng nhau trong film nào, ở đây màu Green là film Forest Gump,
màu Black là Film Apollo 13 và màu orange là film The Rock, ta thực hiện như
sau:
E(actorNetwork)$color <-
ifelse(E(actorNetwork)$Movie == "Forest Gump", "green",
ifelse(E(actorNetwork)$Movie == "Apollo 13",
"black",
"orange"))
# Re-Plot the network
plot(actorNetwork)
Trong network trên ta thấy Robin Wright xuất
hiện cùng với Tom Hanks và Gary Sinise trong film Forest Gump; Tom Hanks và
Gary Sinise cũng cùng xuất hiện trong film Forest Gump. Ta cũng có thể tô màu
network dựa vào các thuộc tính khác của actors, ví dụ:
V(actorNetwork)$color <-
ifelse(V(actorNetwork)$BestActorActress == "Winner",
"gold",
ifelse(V(actorNetwork)$BestActorActress ==
"Nominated","grey",
"lightblue"))
#Re-Plot the Network
plot(actorNetwork)
Để cho Network dễ hiểu hơn, thêm chú thích
(legend) vào network
#Legends the Network
plot(actorNetwork,
vertex.frame.color="white")
legend("topright",c("Forest
Gump","Apollo 13", "The Rock"),
col=c("green","black","orange"), lty=1,
cex=.3)
Mô tả network
Mặc dù hình ảnh trực
quan của network rất hữu ích cho việc mô tả đặc trưng và cấu trúc network, vị
trí của các node được mô tả bằng thuật ngữ độ tập trung (centrality). Có 3 tham
số rất quan trọng để mô tả network đó là degree centrality, betweenness
centrality và closeness centrality.
Degree Centrality
Closeness Centrality
Betweenness Centrality
Xem thêm về các tham
số degree centrality, betweenness centrality và closeness centrality trong
Social Network Analysis tại đây:
https://cambridge-intelligence.com/keylines-faqs-social-network-analysis/
Xem Clip hướng dẫn Social Network Analysis tại
ĐÂY