Saya memiliki file CSV dengan 4 juta tepi jaringan terarah yang mewakili orang yang berkomunikasi satu sama lain (mis. John mengirim pesan kepada Mary, Mary mengirim pesan ke Ann, John mengirim pesan lain ke Mary, dll.). Saya ingin melakukan dua hal:
Temukan derajat, perantara, dan (mungkin) langkah-langkah sentralitas eigen untuk setiap orang.
Dapatkan visualisasi jaringan.
Saya ingin melakukan ini pada command-line pada server Linux karena laptop saya tidak memiliki banyak daya. Saya telah menginstal R di server itu dan perpustakaan statnet. Saya menemukan posisi seseorang di tahun 2009 ini lebih kompeten daripada saya ketika mencoba melakukan hal yang sama dan mengalami masalah dengannya. Jadi saya bertanya-tanya apakah ada orang lain yang memiliki petunjuk tentang cara melakukan ini, sebaiknya membawa saya langkah demi langkah karena saya hanya tahu cara memuat file CSV dan tidak ada yang lain.
Hanya untuk memberi Anda ide, ini adalah bagaimana file CSV saya terlihat seperti:
$ head comments.csv
"src","dest"
"6493","139"
"406705","369798"
$ wc -l comments.csv
4210369 comments.csv
Jawaban:
Apa yang Anda miliki adalah daftar tepi, yang dapat dikonversi ke objek jaringan menggunakan perpustakaan jaringan. Berikut adalah contoh menggunakan data fiktif.
Namun, ada peringatan: Anda memiliki jaringan yang sangat besar dan saya tidak yakin plot akan informatif. Mungkin akan terlihat seperti bola besar benang. Saya juga tidak yakin seberapa baik perpustakaan ini menangani set data yang besar. Saya sarankan Anda melihat dokumentasi untuk perpustakaan jaringan, statnet, dan ergm. The Journal of Software statistik (v24 / 3) penawaran beberapa artikel yang mencakup perpustakaan tersebut. Masalahnya dapat ditemukan di sini:
http://www.jstatsoft.org/v24
sumber
src
dandst
. Inilah yang biasanya saya lakukan untuk memuat file (sekarang file yang dibatasi-tab):el <- read.csv("comment-net/comments-ouids.tsv",header=T,sep="\t")
statnet
keluarga perpustakaan di jaringan yang tidak diarahkan lebih dari 3500 node (~ 8 juta kemungkinan edge). Itu cukup bisa dilakukan, terutama ketika tujuannya hanya untuk menghitung statistik jaringan. Saya bahkan memperkirakan ERGM di jaringan sebesar ini. Tapi poin Anda diterima dengan baik; Saya ragu jaringan jutaan node dapat dengan mudah dianalisis.Saya tidak berpikir bahwa R adalah pilihan pertama di sini (mungkin saya salah). Anda akan membutuhkan array besar di sini untuk mengindeks dan menyiapkan file jaringan Anda dalam format data yang sesuai. Pertama-tama, saya akan mencoba menggunakan perpustakaan SNAP Jure (Rob menyebutkannya di posting di atas) ; itu ditulis dalam C ++ dan bekerja dengan sangat baik pada jaringan besar.
sumber
centrality.cpp
dariTUNGraph
menjadiTNEGraph
(lihat pastebin.com/GHUquJvT baris 24). Itu tidak kompilasi lagi. Saya menduga itu memerlukan jenis node yang berbeda? Kesalahan yang saya dapatkan adalah:centrality.cpp:24: error: conversion from ‘TUNGraph::TNodeI’ to non-scalar type ‘TNEGraph::TNodeI’ requested
(lihat kesalahan penuh di pastebin.com/86mCbByG )Gephi ( http://gephi.org/ ) mungkin cara mudah untuk menjelajahi data. Anda hampir pasti dapat memvisualisasikannya, dan melakukan beberapa perhitungan (meskipun saya belum menggunakannya untuk beberapa waktu sehingga saya tidak dapat mengingat semua fungsi).
sumber
Dari pengalaman masa lalu dengan jaringan 7 juta node, saya pikir memvisualisasikan jaringan lengkap Anda akan memberi Anda gambar yang tidak dapat diinterpretasikan. Saya mungkin menyarankan visualisasi yang berbeda menggunakan himpunan bagian dari data Anda seperti hanya menggunakan 10 node teratas dengan tautan paling banyak masuk atau keluar. Saya saran kedua celenius tentang penggunaan gephi.
sumber
Jika Anda khawatir dengan ukuran jaringan, Anda bisa mencoba
igraph
paket dalam R. Dan jika itu berkinerja buruk di dalam R, mungkin lebih baik sebagai modul Python. Atau bahkannetworkx
paket untuk Pythonsumber
Apakah Anda mencurigai bahwa jaringan memiliki sejumlah kecil komponen yang terhubung sangat besar? Jika tidak, Anda dapat menguraikannya menjadi komponen yang berbeda yang akan membuatnya lebih mudah untuk menghitung ukuran sentralitas.
sumber
Ada beberapa paket perangkat lunak R yang bisa digunakan, termasuk "sna" dan "jaringan". Satu hal yang tidak perlu saya andalkan jika Anda mengalami masalah kinerja dengan sna adalah NetworkX. Saya suka NetworkX sampai mati, dan menggunakannya untuk sebagian besar analisis saya, tetapi NetworkX cukup bangga menjadi implementasi Pythonic yang sebagian besar murni. Itu tidak terlalu mengeksploitasi kode cepat pra-dikompilasi dengan baik, dan kadang-kadang melebihi NetworkX dengan margin yang cukup besar.
sumber