Manusia merupakan makhlus sosial dimana interaksi sosial merupakan salah satu kebutuhan utamanya. Saat ini ada banyak cara untuk melakukan interaksi sosial diantaranya dengan memanfaatkan media sosial. Media sosial merupakan tools untuk mempermudah manusia dalam berinterkasi dan berbagai informasi.
Melalui media sosial, manusia dapat berinterkasi dengan mudah dan cepat tanpa dibatasi dengan kondisi geografis, kita bisa berinteraksi dengan orang yang sangat jauh secara geografis dengan cepat. Interkasi yang terjadi melalui media sosial menghasilkan data yang bisa dianalisa untuk mengetahui interkasi yang terjadi antar pengguna. Salah satu bentuk analisa yang bisa digunakan adalah social network analysis.
Materi ini bertujuan memberikan pemahaman kepada peserta workshop terkait penggunaan konsep graph dalam menganalis interkasi yang terjadi di media sosial. Adapun setelah mempelajari materi ini peserta diharapkan dapat memahami kegunaan dan potensi social network analysis sesuai dengan proses bisnis yang ada di bidang industri yang dijalani oleh peserta.
Untuk dapat mengikuti materi ini, peserta diharapkan sudah menginstall beberapa packages di bawah ini. Apabila package tersebut belum terinstall, silahkan jalankan chunk atau baris kode berikut. Apabila sudah ter-install, lewati chunk berikut dan muat package yang dibutuhkan dengan menjalankan chunk selanjutnya.
# install.packages(c("tidyverse","rtweet", "tidygraph","ggraph","igraph", "knir", "rmarkdown"))library(tidyverse)
library(rtweet)
# graph
library(tidygraph)
library(ggraph)
library(igraph)Tujuan utama dari workshop ini adalah untuk memberikan pengenalan yang komprehensif mengenai tools dan perangkat lunak yang digunakan untuk melakukan social network analysis, yakni sebuah open-source populer: R. Adapun materi ini akan mencakup:
Data yang digunakan pada workshop ini merupakan data yang dikumpulkan dari twitter dengan hashtag #COVID19, periode pengumpulan data dari 7 juni 2020 hingga 9 Juni 2020, data tersebut tersimpan pada folder data_input dengan nama tweets.csv. untuk membaca file tersebut bisa menggunakan fungsi read.csv() kemudian masukkan path dari file tersebut. Data yang sudah di baca akan tersimpan pada objek tweets.
tweets <- read.csv("data_input/tweets.csv")
head(tweets, 10)Fungsi head() digunakan untuk melihat beberapa (default 6) data pertama. dari hasil diatas bisa dilihat bahwa terdapat 90 kolom beberapa deskripsi dari kolom tersebut seperti berikut:
- user_id : id dari pengguna twitter
- status_id : id dari status yang dibuat
- created_at : waktu ketika status tersebut dibuat
- screen_name : nama pengguna twitter
- is_retweet : Jenis dari status tersebut apakah sebuah retweet atau bukan
untuk deskiripsi lengkap dari seluruh kolom dapat dilihat dari dokuentasi resmi twitter developer
Kita sudah mempelajari bagaimana mengecek sample dari data, sekarang kita perlu mengetahui tipe data dari masing masing kolom yang ada. Kita bisa menggunakan fungsi str() untuk melihat struktur serta dimensi dari data.
tweets %>%
select(1:10) %>%
str()#> 'data.frame': 35977 obs. of 10 variables:
#> $ user_id : num 306732346 211316225 211316225 19288705 19288705 ...
#> $ status_id : num 1269537593705877504 1269537593487765504 1269537466559746048 1269537592191651840 1269534927005065216 ...
#> $ created_at : chr "2020-06-07 07:52:03" "2020-06-07 07:52:03" "2020-06-07 07:51:33" "2020-06-07 07:52:03" ...
#> $ screen_name : chr "cesajid" "cranemtn" "cranemtn" "psigrist" ...
#> $ text : chr "It’s my humble request to Overseas Ministry @mophrd :\nPlease make appropriate arrangements for receiving deadb"| __truncated__ "<U+0E2D><U+0E34><U+0E48><U+0E21> <U+0E2B><U+0E21><U+0E35> <U+0E01><U+0E31><U+0E1A> <U+0E2B><U+0E21><U+0E35><U+0"| __truncated__ "<U+0E02><U+0E2D><U+0E02><U+0E49><U+0E32><U+0E27><U+0E2A><U+0E27><U+0E22> 1 <U+0001F35A> <U+0E1B><U+0E39><U+0E1C"| __truncated__ "One third of the UK population suddenly has to discover blended learning, with home schooling part of the weekl"| __truncated__ ...
#> $ source : chr "Twitter for Android" "Twitter for iPhone" "Twitter for iPhone" "Twitter for iPhone" ...
#> $ display_text_width : int 140 140 140 140 108 140 140 140 140 140 ...
#> $ reply_to_status_id : num NA NA NA NA NA NA NA NA NA NA ...
#> $ reply_to_user_id : num NA NA NA NA NA NA NA NA NA NA ...
#> $ reply_to_screen_name: chr NA NA NA NA ...
tweets merupakan sebuah ‘data.frame’ atau tabel dengan 35977 baris dan 90 kolom. Nama dari setiap kolom tertera disebelah kanan (user_id, status_id, dll). Teks chr, num menunjukkan tipe data dari masing - masing kolom.
Sebelum mebuat sebuah graph kita melakukan eksplorasi pada data yang ada. Kita bisa menghitung banyaknya data yang merupakan sebuah retweet atau bukan dengan menggunakan fungsi count().
tweets %>%
count(is_retweet)dari hasil diatas bisa dilihat bahwa mayoritas data tweet yang ada merupakan sebuah retweet, oleh sebab itu mari kita lihat summary jadi jumlah retweet.
tweets %>%
filter(is_retweet) %>%
select(retweet_count) %>%
summary()#> retweet_count
#> Min. : 0
#> 1st Qu.: 10
#> Median : 62
#> Mean : 1629
#> 3rd Qu.: 481
#> Max. :207549
Dari hasil diatas suatu tweet maksimal di retweet sebanyak 207549 kali, sedangkan apabila kita lihat secara nilai tengah (median) hanya 62. mari kita cari tau tweet apa yang memiliki jumlah retweet_count terbesar, dan apa isi dari tweet tersebut
Dalam dunia matematika graph merupakan hubungan antar entitas, terdapat 2 komponen yang menyusun sebuah graph yaitu nodes/vertices yang merepresentasikan sebuah entitas dan edge/link menggambarkan sebuah hubungan. Dalam ilmu matematika cabang ilmu yang mempelajari graph disebut Graph Theory.
Bila kita hubungkan konsep graph kedalam interaksi sosial yang terjadi di twitter maka setiap node mewakili seorang user, sedangkan edge mewakili hubungan / interkasi yang terjadi (retweet, mention, quote).
Secara umum hubungan antar nodes bisa dibagi menjadi 2 yaitu berarah (directed) dan tak berarah (undirected)
Graph berarah (directed graph) memiliki arah hubungan pada edge-nya hal ini ditandai dengan arah panah pada suatu graph. bila dilihat dari arah panahnya kita bisa membaginya menjadi 2 jenis yaitu in-degree dan out-degree. In-degree merepresentasikan jumlah edge yang menuju suatu node, sedangkan out-degree menunjukkan jumlah edge yang keluar dari suatu node.
Graph tak berarah (undirected graph) tidak menampilkan hubungan antar nodesnya, sehingga hubungan antar nodes dapat dilihat 2 arah. Undirected graph ditunjukkan dengan tidak adalanya panah pada suatu graph.
Dalam menentukan direction diperlukan pemahaman user kepada data yang digunakan, Sebagai contoh pada data twitter kita bisa melihat seseorang melakukan mention pada user lain ketika membuat sebuah tweet, interaksi tersebut dapat kita asumsikan sebagai directed graph karena kita tidak mengetahui respon dari pengguna yang di mention.
dibawah ini merupakan sample data antara user dengan user yang di-mention
tweets %>%
select(screen_name, mentions_screen_name) %>%
head()Centrality merupakan salah satu ukuran penting ketika melakukan analisa pada suatu graph. Melalui centrality kita dapat mengetahui “key player” atau node yang paling berpengaruh dari suatu graph. Ada berbagai macam cara untuk mengetahui “key player” dari sebuah graph, dimana tiap cara memiliki definisinya sendiri dalam menentukan node yang paling penting.
Degree centrality merupakan ukuran pemusatan yang menghitung banyaknya edges yang terhubung ke suatu node. Degree centrality dapat memberitahu seberapa banyak hubungan langsung yang dimiliki setiap node sehingga ketika kita ingin mencari individu yang memiliki koneksi langsung terbanayak dengan orang lain (orang paling populer) kita bisa melihat metrics ini.
Metrics ini cukup sederhana dalam proses perhitungannya sebagai contoh graph dibawah ini terdiri dari 6 nodes. Informasi keterhubungan antar node dapat diubah kedalam sebuah matriks yang disebut matriks adjacent. Matriks adjacent merupakan matriks yang berukuran n x n dimana n merupakan banyaknya node, nilai 1 pada matrix merepresentasikan adanya hubungan langsung antar node sedangkan nilai 0 berarti tidak memiliki hubungan langsung.
Perhatikan node 1 pada graph diatas, node tersebut terhubung dengan node 2, 4, dan 6 secara langsung, sehingga nilai pada baris pertama kolom ke 2,4, dan 6 berisi 1 sedangkan yang lainnya adalah 0. setelah membuat matriks adjacent, kita bisa menjumlahkan semua nilai tersebut, semakin besar nilai total maka semakin “populer” node tersebut.
Untuk menormalisasi nilai degree, nilai total dapat dibagi dengan jumlah node dikurang satu (n-1) sehingga range dari degree centrality berkisar 0 hingga 1. Semakin mendekati 1 maka node tersebut semakin banyak terhubung dengan node lain secara langsung.
Berbeda dengan degree centrality yang mengukur seberapa “populer” suatu node, closeness centrality mengukur seberapa “dekat” suatu node dengan node lainnya. Closeness centrality dapat memberitahu kita node mana yang memiliki jarak terpendek keseluruh nodes. Ukuran ini dapat digunakan ketika kita ingin mencari tau individu yang paling efektif dalam persebaran informasi “broadcaster”.
Dalam proses perhitungannya kita perlu mengubah graph dimiliki kedalam matriks jarak (distance matrix). Distanace matrix menunjukkan banyaknya step yang dibutuhkan dari satu node ke node lainnya. Sebagai contoh jarak terdekat dari node 2 ke node 5 adalah 3, berarti butuh 3 steps untuk sampai dari node 2 ke node 5 (2 -> 3 -> 6 -> 5 atau 2 -> 1 -> 6 -> 5). Perhitungan jarak dilakukan kesemua kombinasi node yang ada kemudian dihitung total jaraknya. Semakin kecil total jarak berarti semakin dekat node tersebut dengan node lain.
agar range dari closeness centrality sama dengan yang lain (0 hingga 1) dan memiliki interpretasi yang sama (semakin mendekati 1 sekain baik) maka dapat dinormalisasikan dengan cara jumlah nodes dikurang 1 dibagi total distance (n-1)/total.
Betweenness centrality mengukur seberapa sering suatu node dilewati pada jalur terpendek antar nodes. Nilai ini dapat memberitahu node mana yang bisa digunakan sebagai “jembatan” penghubung dalam suatu graph. Metrics ini bisa digunakan untuk mengetahui individu yang mempengaruhi “aliaran” informasi.
Proses perhitungan metrics ini sedikit lebih kompleks bila dibandingan 2 metrics sebelumnya, oleh sebab itu mari kita pahami langkah demi langkahnya
Buat kombinasi connection antar node. Karena graph ini bersifat undirected sehingga hubungan antar node 1 dan node 2 sama dengan B ke A. Warna merah pada tahap kedua (lihat gambar) menandakan kombinasi tersebut tidak digunakan dikarenakan duplikat.
Dari 6 buah node yang ada didapati 15 kemungkinan hubungan antar node (lihat tahap 3 pada gambar). Kombinasi hubungan tersebut dicari kemungkinan jalur terpendeknya. Sebagai contoh dari node 2 ke node 4 terdapat 2 jalur terdekat yaitu (2,3,4) dan (2,1,4). Jalur yang lebih panjang tidak akan diperhitungkan.
Tiap node diberikan point apabila node tersebut dilalui
Jumlahkan semua point untuk setiap node. Semakin besar total point yang didapat maka semakin sering node tersebut dilalui.
Lakukan scaling dengan membagi total betweeness dengan \(((n-1)(n-2))/2\)
Sama seperti degree centrality eigenvector centrality mengukur seberapa penting suatu node berdasarkan banyaknya edge yang ada, yang membedakannya adalah pada eigenvector centrality akan melihat konektivitas dari tetangga node itu juga. Sebagai contoh seseorang dengan 300 relatively unpopular followers akan memiliki nilai eigenvector centrality lebih rendah bila dibandingkan seseorang dengan 300 very popular followers (seperti elon mask). Penggunaan eigenvector centrality sama seperti degree centrality yaitu untuk mencari node paling “populer” hanya saja metrics ini melihat secara keseluruhan.
Untuk menghitung nilai eigenvector centrality kita bisa melakukan beberapa tahapan yaitu:
- Membuat matrix adjacent
- mencari eigen vector dari matrix tersebut
- Menggunakan eigen vector tersebut sebagai nilai centralitynya
Pada umumnya ketika melakukan analisa pada suatu graph struktur data yang digunakan merupakan sebuah matrix baik itu matrix adjensy, atau matrix jarak. Pengolahan data menggunakan format matrix menggunakan memori (RAM) yang sangat besar karena dimensi dari metrix tersebut berukuran n x n dimana n merupakan jumlah node. Selain itu untuk melakukan wrangling pada data matrix tidak semudah melakukannya apabila data berformat dataframe, oleh sebab itu struktur data yang digunakan pada analisa graph di R berformat tbl_graph.
tbl_grah merupakan struktur data yang terdiri dari 2 dataframe (nodes dan edge) beserta informasi informasi lainnya. Kelebihan dari menggunakan struktur data ini yaitu kita bisa menggunakan grammar dari tidyverse sebagai proses wrangling di graph.
# data edges
edges_sample <- data.frame(from = c("B", "A", "D", "B", "A", "A"),
to = c("D", "B", "C", "C", "E","C"))
head(edges_sample)# data nodes
nodes_sample <- data.frame(name = unique(c(edges_sample$from, edges_sample$to)))Terdapat 2 dataframe diatas yaitu edges_sample yang berisi hubungan antar nodes (from, to) dan nodes_sample yang berisi kumpulan nodes yang berada pada graph. Untuk membuat suatu graph kita bisa menggunakan fungsi tbl_graph() dari package tidygraph. Informasi nodes dan edges yang sudah dimiliki bisa dimasukkan kedalam fungsi, selain itu kita bisa mendefinisikan jenis arahnya (directed), gunakan FALSE bisa graph merupakan sebuah undirected graph.
# membuat graph dari 2 data frame
gf_sample <-
tbl_graph(nodes = nodes_sample,
edges = edges_sample,
directed = F)
# cek class dari object gf_sample
class(gf_sample)#> [1] "tbl_graph" "igraph"
Untuk memvisualisasikan data dalam sebuah plot sederhana bisa menggunakan fungsi plot(). Dari sini terlihat hubungan antar nodes yang ada pada data nodes_sample sebelumnya
# visualisasi sederhana
set.seed(100)
plot(x = gf_sample)Kelebihan dari penggunaan format data tbl_graph yaitu kita dapat menggunakan fungsi- fungsi yang ada pada tidyverse terutama konsep piping %>% sehingga mempermudah dalam proses analisa. Sebelum menggunakan functions yang ada pada tidyverse kita harus memanggil function activate() terlebih dahulu. Kegunaan dari fungsi ini adalah untuk mengaktifkan data (nodes atau edges) yang akan digunakan.
gf_sample %>%
activate(what = nodes) %>%
mutate(id = row_number())#> # A tbl_graph: 5 nodes and 6 edges
#> #
#> # An undirected simple graph with 1 component
#> #
#> # Node Data: 5 x 2 (active)
#> name id
#> <chr> <int>
#> 1 B 1
#> 2 A 2
#> 3 D 3
#> 4 C 4
#> 5 E 5
#> #
#> # Edge Data: 6 x 2
#> from to
#> <int> <int>
#> 1 1 3
#> 2 1 2
#> 3 3 4
#> # ... with 3 more rows
Code diatas mengaktifkan nodes, sehingga data tersebut dapat diolah dengan fungsi dari tidyverse. Pada contoh diatas dilakukan penambahan satu kolom yang bernama id yang berisi nomor baris dari nodes tersebut.
dengan menggunakan grammar dari tidyverse perhitungan nilai centrality pada suatu graph menjadi lebih mudah. perhitungan nilai centrality bisa dilakukan dengan mengaktivasi nodes kemudian menghitung centrality dari grapah tersebut dengan fungsi centrality_<jenisnya>()
gf_sample %>%
activate(nodes) %>%
mutate(
betweenness = centrality_betweenness(normalized = T),
eigen = centrality_eigen()
)#> # A tbl_graph: 5 nodes and 6 edges
#> #
#> # An undirected simple graph with 1 component
#> #
#> # Node Data: 5 x 3 (active)
#> name betweenness eigen
#> <chr> <dbl> <dbl>
#> 1 B 0.167 1
#> 2 A 0.5 0.884
#> 3 D 0 0.757
#> 4 C 0.167 1
#> 5 E 0 0.335
#> #
#> # Edge Data: 6 x 2
#> from to
#> <int> <int>
#> 1 1 3
#> 2 1 2
#> 3 3 4
#> # ... with 3 more rows
Hasil perhitungan kedua centrality diatas yaitu betweenness dan eigen menunjukkan node A merupakan penghubung yang baik dikarenakan memiliki nilai betweenness tertinggi, sedangkan nodes B dan C memiliki nilai eigen tertinggi sehingga bisa diartikan nodes tersebut cukup baik dalam menyebarkan informasi pada suatu network.
4 Social Network Analysis
Social Network Analysis (SNA) merupakan sebuah teknik analisa hubungan/interaksi yang terjadi antar manusia dengan memanfaatkan teori graf.Interaksi antar manusia pun jadi jauh lebih mudah dianalisa dengan adanya media sosial, hal ini dikarenakan data tersebut terekam dan tersimpan oleh pemegang aplikasi. Data yang tersimpan dapat dimanfaatikan untuk mencari tahu “key player” dalam persebaran informasi, selain itu kita juga bisa mengetahui cluster pengguna dari suatu topik yang dibahas.
4.1 [Optional] Cara mengambil data dari twitter
Twitter merupakan salah satu media sosial yang dapat diambil datanya untuk digunakan dalam proses analisis. Data tersebut dapat diambil dengan menggunakan pacakge
rtweetnamun sebelum mengambil data dari twitter, pengguna harus memiliki akun twitter kemudian masuk (sign in) ke website twitter developer. Jika sudah lakukan beberapa tahapan dibawah ini untuk mendapatkan token dan key.Tahap mendapatkan akses ke twitter sudah selesai, sekarang kita sudah memiliki 4 informasi yang dibutuhkan untuk mengambil data dari twitter yaitu API Key, API Key Secret, access Token, dan access token secret. Keempat informasi tersebut bersifat sebagai username dan password ketika menarik data dari twitter sehingga informasi tersebut sangat rahasia. Untuk menjaga kerahasiaan informasi tersebut kita tidak boleh menyimpannya pada file .Rmd ini karena bisa saja informasi tersebut terkirim secara tidak sengaja. Informasi tersebut dapat disimpan pada sistem komputer sehingga kemungkinan informasi terambil lebih kecil.
Untuk meyimpan informasi Key dan token pada sistem bisa melakukan beberapa tahap dibawah ini:
1. Buat file yang bernama
.Renviron.2. Pindahkan informasi key dan token ke file tersebut. Pastikan format penulisannya sama dengan contoh dibawah.
.Renvironpada folder yang sama dengan materi ini disimpan.Selamat sekarang informasi key dan token anda sudah tersimpan dengan aman pada sistem.
Sekarang data twitter bisa diambil namun sebelum itu kita harus connection dengan twitter dengan menggunakan fungsi
create_token()dari packagertweet. Untuk memanggil informasi key dan token yang sudah disimpan pada system bisa menggunakan fungsiSys.getenv()kemudian masukkan nama variabel yang ingin diambil.Saat ini kita sudah bisa mengambil data dari twitter, ada banyak fungsi yang bisa digunakan untuk mengambil data dari twitter salah satunya yaitu
search_tweets(). Terdapat beberapa parameter pada function tersebut untuk membantu pencarian tweet yang diinginkan seperti:-
q: keyword yang ingin anda cari di twitter.-
n: jumlah tweet yang ingin anda ambil.-
include_rts: apakah sebuah retweet akan diambil pada proses query.-
retryonratelimit: Apakah kita akan menunggu apabila limit dari penarikan data sudah tercapai?untuk detail penjelasan dari setiap paramter bisa dilihat pada dokumentasi yang tersedia di menu help
Setelah tweet didapatkan pastikan anda menyimpan data tersebut dalam format
.csvagar tidak perlu menarik data secara berulang kali.4.2 Data Cleansing
Pada social network analysis setiap node direpresentasikan dengan user_name sedangkan edge bisa direpresentasikan dengan hubungan yang ada mention, retweet, maupun quote. Pada proses analisis kali ini kita akan melihat keterhubungan antar user berdasarkan mention yang ada pada tweet.
Tujuan dari proses cleansing ini untuk membuat raw data yang ada siap digunakan dalam proses pembuatan graph. Tahapan awal dari proses cleansing yaitu mengambil kolom
screen_name, danmentions_screen_namemenggunakanselect(), kedua kolom tersebut yang akan merepresentasikan nodes yang ada (from dan to pada data graph).screen_namemenunjukkan nama pengguna twitter yang memiliki sebuat tweet, sedangkanmentions_screen_namemerupakan pengguna yang di mention pada tweet-nya. Bila dilihat kolommentions_screen_namemasih memiliki beberapa nama dalam satu baris, hal tersebut harus di normalisasi agar satu baris hanya terdiri dari satu pasang saja.namun seebelum itu kita perlu menghapus string “c()” yang ada kolom
mentions_screen_name. Proses penghapusan string dengan pattern tertentu dapat dilakukan dengan fungsistr_remove_all()kemudian masukkan pattern yang ingin di remove. Jika anda tertarik untuk mempelajari pattern pada suatu text silahkan kunjungi link berikut regex in r.Sekarang kita sudah memisahkan data yang memiliki beberapa nilai pada kolom
mentions_screen_namemenjadi beberapa baris dengan fungsiseparate_rows().Tahap terkahir yaitu kita bisa membuang semua data yang mengandung
NAdengan fungsina.omit()serta membuang tanda petik (“) yang tertinggal pada kolommentions_screen_name. sebagai tambahan kita bisa mengubah nama kolomscreen_namemenjadifromdanmentions_screen_namedenganto.setelah melakukan data cleansing untuk membuat data edges, satu lagi data yang dibutuhkan yaitu data nodes. Data nodes bisa didapatkan dari semua user name yang ada pada data edges.
setelah mendapatkan semua data, sekarang graph bisa dibentuk dengan menggunakan fungsi
tbl_graph(). Pada parameter directed kita menggunakan FALSE yang berarti graph ini merupakan undirected graph, dengan membuatnya menjadi undirected hubungan antar node dapat dilihat dari 2 arah.Anda juga dapat membuatnya menjadi directed bila asumsi yang digunakan adalah hubungan antar node belum tentu dua arah.
4.3 Centrality Mesurements
Setelah membuat graph kita bisa menghitung nilai centrality untuk tiap node. Ukuran centrality yang digunakan disini ada 4 yaitu degree, betweenness, closeness dan eigen.
Untuk melihat hasil dari perhitungan centrality diatas, data nodes dapat diambil dalam bentuk dataframe agar lebih mudah dianalisa lebih lanjut.
Dari data diatas bisa dilihat tiap node memiliki nilai centrality yang berbeda beda, untuk mengetahui user name yang memiliki nilai tertinggi untuk masing masing ukuran centrality kita dapat mengubahnya menjadi format dibawah.
Dari data diatas kita bisa melihat bahwa akun DrRobDavidson merupakan akun dengan nilai eigen dan degree tertinggi yang berarti akun tersebut yang paling “populer” baik secara local maupun global network. DrRobDavidson merupakan seorang executive director of Committee to Protect Medicare.
kita juga bisa melihat tweet dari WHO (World Health Organization) yang sering mengupdate perkembangan covid selama 2019.
4.4 Graph Visualization
Dari hasil pembuatan graph dan perhitungan nilai centrality kita dapat memvisualisasikan graph tersebut. Untuk mempermudah interpretasi dari plot nantinya kita perlu mengelompokkan nodes kedalam beberapa cluster. Oleh sebab itu kita akan melakukan proses clustering pada graph terlebih dahulu.
Metode clustering yang digunakan pada graph ini adalah metode Louvain, dimana metode ini melihat kerapatan (density) dari network yang ada. Untuk eksplorasi lebih lanjut terkait metode ini bisa kunjungi atikel berikut
Fungsi
group_louvain()bertujuan membuat cluster dengan metode louvain serta melakukan pelabelan secara langsung untuk tiap nodes. Bila dilihat dari rangkuman cluster yang terbentuk terdapat 3794 yang terbentuk, namun kita hanya akan fokus pada 5 cluster pertama saja karena cluster tersebut merupakan cluster terbesar.Agar visualisasi yang ditampilkan tidak berantakan, maka label user_name yang ditampilkan hanyalah akun akun dengan nilai centrality tertinggi di tiap tiap clusternya.