Power BI ve R Kullanarak Sosyal Ağ Analizi: Özel Görseller Kılavuzu
Yayınlanan: 2022-07-22Sosyal ağ analizi, çeşitli profesyonel ihtiyaçlara hizmet etmek için hızla önemli bir araç haline geliyor. Hedeflenen pazarlama gibi kurumsal hedefleri bilgilendirebilir ve güvenlik veya itibar risklerini belirleyebilir. Sosyal ağ analizi, işletmelerin dahili hedeflere ulaşmasına da yardımcı olabilir: Çalışan davranışları ve bir şirketin farklı bölümleri arasındaki ilişkiler hakkında fikir verir.
Kuruluşlar, sosyal ağ analizi için bir dizi yazılım çözümü kullanabilir; her birinin artıları ve eksileri vardır ve farklı amaçlar için uygundur. Bu makale, günümüzde en sık kullanılan veri görselleştirme araçlarından biri olan Microsoft'un Power BI'sine odaklanmaktadır. Power BI birçok sosyal ağ eklentisi sunarken, daha çekici ve esnek sonuçlar oluşturmak için R'de özel görselleri keşfedeceğiz.
Bu öğretici, temel grafik teorisi, özellikle yönlendirilmiş grafikler hakkında bilgi sahibi olunduğunu varsayar. Ayrıca sonraki adımlar, yalnızca Windows'ta kullanılabilen Power BI Desktop için uygundur. Okuyucular, Power BI tarayıcısını Mac OS veya Linux'ta kullanabilir, ancak Power BI tarayıcısı, bir Excel çalışma kitabını içe aktarma gibi belirli özellikleri desteklemez.
Görselleştirme için Verileri Yapılandırma
Sosyal ağların oluşturulması, bağlantı (kenar) verilerinin toplanmasıyla başlar. Bağlantı verileri iki birincil alan içerir: kaynak düğüm ve hedef düğüm —kenarın her iki ucundaki düğümler. Bu düğümlerin ötesinde, genellikle düğüm veya uç özellikleri olarak temsil edilen daha kapsamlı görsel bilgiler üretmek için veri toplayabiliriz:
1) Düğüm özellikleri
- Şekil veya renk : Kullanıcının türünü belirtir, örneğin kullanıcının konumu/ülkesi
- Boyut : Ağdaki önemi gösterir, örneğin kullanıcının takipçi sayısı
- Resim : Bireysel bir tanımlayıcı olarak çalışır, örneğin bir kullanıcının avatarı
2) Kenar özellikleri
- Renk , kontur veya ok ucu bağlantısı : Bağlantı türünü belirtir, ör. iki kullanıcıyı birbirine bağlayan gönderinin veya tweet'in duyarlılığı
- Genişlik : Bağlantının gücünü gösterir, örneğin belirli bir süre içinde iki kullanıcı arasında kaç tane bahsetme veya retweet gözlemlenir
Bu özelliklerin nasıl çalıştığını görmek için örnek bir sosyal ağ görselini inceleyelim:
Düğüm veya kenar özellikleri aracılığıyla kolayca ifade edilemeyen diğer bilgileri destekleyebileceğinden, yukarıdaki parametreleri tamamlamak veya değiştirmek için vurgulu metni de kullanabiliriz.
Power BI'ın Sosyal Ağ Uzantılarını Karşılaştırma
Bir sosyal ağın farklı veri özelliklerini tanımladıktan sonra, Power BI'da ağları görselleştirmek için kullanılan dört popüler aracın artılarını ve eksilerini inceleyelim.
Eklenti | Arthur Graus tarafından hazırlanan Sosyal Ağ Grafiği | Ağ Gezgini | ZoomCharts'tan Gelişmiş Ağlar (Light Edition) | R Kullanan Özel Görselleştirmeler |
---|---|---|---|---|
Dinamik düğüm boyutu | Evet | Evet | Evet | Evet |
Dinamik kenar boyutu | Numara | Evet | Numara | Evet |
Düğüm rengi özelleştirme | Evet | Evet | Numara | Evet |
Karmaşık sosyal ağ işleme | Numara | Evet | Evet | Evet |
Düğümler için profil resimleri | Evet | Numara | Numara | Evet |
Ayarlanabilir yakınlaştırma | Numara | Evet | Evet | Evet |
En iyi N bağlantı filtreleme | Numara | Numara | Numara | Evet |
Üzerine gelindiğinde özel bilgiler | Numara | Numara | Numara | Evet |
Kenar rengi özelleştirme | Numara | Numara | Numara | Evet |
Diğer gelişmiş özellikler | Numara | Numara | Numara | Evet |
Arthur Graus'tan Sosyal Ağ Grafiği, Ağ Gezgini ve ZoomCharts'tan Gelişmiş Ağlar (Light Edition), basit sosyal ağlar geliştirmek ve ilk sosyal ağ analizinize başlamak için uygun uzantılardır.
Ancak, verilerinizi canlandırmak ve dikkat çekici görsellerle çığır açan içgörüleri ortaya çıkarmak istiyorsanız veya sosyal ağınız özellikle karmaşıksa, özel görsellerinizi R'de geliştirmenizi öneririm.
Bu özel görselleştirme, öğreticimizin R'deki sosyal ağ uzantısının nihai sonucudur ve R tarafından sunulan çok çeşitli özellikleri ve düğüm/kenar özelliklerini gösterir.
R Kullanarak Power BI için Sosyal Ağ Uzantısı Oluşturma
Power BI'da R kullanarak sosyal ağları görselleştirmek için bir uzantı oluşturmak, beş farklı adımdan oluşur. Ancak sosyal ağ uzantımızı oluşturmadan önce verilerimizi Power BI'a yüklemeliyiz.
Ön koşul: Power BI için Veri Toplayın ve Hazırlayın
Bu öğreticiyi Twitter ve Facebook verilerine dayalı bir test veri seti ile takip edebilir veya kendi sosyal ağınızla ilerleyebilirsiniz. Verilerimiz randomize edilmiştir; İsterseniz gerçek Twitter verilerini indirebilirsiniz. Gerekli verileri topladıktan sonra, bunları Power BI'a ekleyin (örneğin, bir Excel çalışma kitabını içe aktararak veya verileri manuel olarak ekleyerek). Sonucunuz aşağıdaki tabloya benzer görünmelidir:
Verilerinizi ayarladıktan sonra, özel bir görselleştirme oluşturmaya hazırsınız.
1. Adım: Görselleştirme Şablonunu Ayarlayın
Bir Power BI görselleştirmesi geliştirmek basit değildir; temel görseller bile binlerce dosya gerektirir. Neyse ki Microsoft, gerekli altyapıyı destekleyen dosyaları yalnızca birkaç satır kodla sağlayan pbiviz
adlı bir kitaplık sunuyor. pbiviz
kitaplığı ayrıca tüm son dosyalarımızı bir görselleştirme olarak doğrudan Power BI'a yükleyebileceğimiz bir .pbiviz
dosyasına yeniden paketleyecektir.
pbiviz
en basit yolu Node.js'dir. pbiviz
kurulduktan sonra, makinemizin komut satırı arayüzü aracılığıyla özel R görselimizi başlatmamız gerekiyor:
pbiviz new toptalSocialNetworkByBharatGarg -t rhtml cd toptalSocialNetworkByBharatGarg npm install pbiviz package
Görselleştirmeniz için toptalSocialNetworkByBharatGarg
istediğiniz adla değiştirmeyi unutmayın. -t rhtml
, pbiviz
paketine R tabanlı HTML görselleştirmeleri geliştirmek için bir şablon oluşturması gerektiğini bildirir. Yazarın adı ve e-postası gibi alanları henüz paketimizde belirtmediğimiz için hatalar göreceksiniz, ancak bunları öğreticide daha sonra çözeceğiz. pbiviz
betiği PowerShell'de hiç çalışmıyorsa, önce Set-ExecutionPolicy RemoteSigned
içeren betiklere izin vermeniz gerekebilir.
Kodun başarılı bir şekilde yürütülmesinde, aşağıdaki yapıya sahip bir klasör göreceksiniz:
Klasör yapısını hazır hale getirdikten sonra özel görselleştirmemiz için R kodunu yazabiliriz.
Adım 2: Görselleştirmeyi R'de Kodlayın
İlk adımda oluşturulan dizin, varsayılan koddan oluşan script.r
adlı bir dosya içerir. (Varsayılan kod, Petal.Length
by Petal.Species
histogramını çizmek için R'de bulunan iris
örnek veritabanını kullanan basit bir Power BI uzantısı oluşturur.) Kodu güncelleyeceğiz, ancak yorum yapılan bölümleri de dahil olmak üzere varsayılan yapısını koruyacağız.
Projemiz üç R kitaplığı kullanıyor:
- DiagrammeR: Metinden grafikler oluşturur
- visNetwork: Etkileşimli ağ görselleştirmeleri sağlar
- data.table: data.frame'e benzer şekilde veri organizasyonuna yardımcı olur
Kitaplık kullanımımızı yansıtmak için script.r
Library Declarations
bölümündeki kodu değiştirelim:
libraryRequireInstall("DiagrammeR") libraryRequireInstall("visNetwork") libraryRequireInstall("data.table")
Daha sonra Actual code
bölümündeki kodu R kodumuz ile değiştireceğiz. Görselleştirmemizi oluşturmadan önce verilerimizi okumalı ve işlemeliyiz. Power BI'dan iki girdi alacağız:
-
num_records
: N sayısal girişi, öyle ki ağımızdan yalnızca ilk N bağlantıyı seçeceğiz (görüntülenen bağlantı sayısını sınırlamak için) -
dataset
: Sosyal ağ düğümlerimiz ve kenarlarımız
Power BI varsayılan olarak tek bir sayısal değer yerine bir vektör sağlayacağından, çizeceğimiz N bağlantıyı hesaplamak için num_records
değerini toplamamız gerekir. max
gibi bir toplama işlevi bu amaca ulaşır:
limit_connection <- max(num_records)
Şimdi dataset
özel sütunlarla bir data.table
nesnesi olarak okuyacağız. En sık bağlantıları tablonun en üstüne yerleştirmek için veri kümesini değere göre azalan düzende sıralarız. Bu, bağlantılarımızı num_records
ile sınırladığımızda çizilecek en önemli kayıtları seçmemizi sağlar:
dataset <- data.table(from = dataset[[1]] ,to = dataset[[2]] ,value = dataset[[3]] ,col_sentiment = dataset[[4]] ,col_type = dataset[[5]] ,from_name = dataset[[6]] ,to_name = dataset[[7]] ,from_avatar = dataset[[8]] ,to_avatar = dataset[[9]])[ order(-value)][ seq(1, min(nrow(dataset), limit_connection))]
Ardından, her kullanıcıya benzersiz kullanıcı kimlikleri ( uid
) oluşturup tahsis ederek, bunları yeni bir tabloda saklayarak kullanıcı bilgilerimizi hazırlamalıyız. Ayrıca toplam kullanıcı sayısını hesaplar ve bu bilgiyi num_nodes
adlı ayrı bir değişkende saklarız:
user_ids <- data.table(id = unique(c(dataset$from, dataset$to)))[, uid := 1:.N] num_nodes <- nrow(user_ids)
Kullanıcı bilgilerimizi aşağıdakiler de dahil olmak üzere ek özelliklerle güncelleyelim:
- Takipçi sayısı (düğüm boyutu).
- Kayıt sayısı.
- Kullanıcı türü (renk kodları).
- Avatar bağlantıları.
Tabloyu güncellemek için R'nin merge
işlevini kullanacağız:
user_ids <- merge(user_ids, dataset[, .(num_follower = uniqueN(to)), from], by.x = 'id', by.y = 'from', all.x = T)[is.na(num_follower), num_follower := 0][, size := num_follower][num_follower > 0, size := size + 50][, size := size + 10] user_ids <- merge(user_ids, dataset[, .(sum_val = sum(value)), .(to, col_type)][order(-sum_val)][, id := 1:.N, to][id == 1, .(to, col_type)], by.x = 'id', by.y = 'to', all.x = T) user_ids[id %in% dataset$from, col_type := '#42f548'] user_ids <- merge(user_ids, unique(rbind(dataset[, .('id' = from, 'Name' = from_name, 'avatar' = from_avatar)], dataset[, .('id' = to, 'Name' = to_name, 'avatar' = to_avatar)])), by = 'id')
Oluşturduğumuz uid
orijinal veri kümesine ekliyoruz, böylece kodda daha sonra from
ve to
kimliklerini alabiliriz:
dataset <- merge(dataset, user_ids[, .(id, uid)], by.x = "from", by.y = "id") dataset <- merge(dataset, user_ids[, .(id, uid_retweet = uid)], by.x = "to", by.y = "id") user_ids <- user_ids[order(uid)]
Ardından, görselleştirme için düğüm ve uç veri çerçeveleri oluşturuyoruz. Düğümlerimizin (dolu daireler) style
ve shape
seçiyoruz ve düğümlerimizin color
, data
, value
ve image
özelliklerini doldurmak için user_ids
tablomuzun doğru sütunlarını seçiyoruz:
nodes <- create_node_df(n = num_nodes, type = "lower",, color = user_ids$col_type, shape = 'circularImage', data = user_ids$uid, value = user_ids$size, image = user_ids$avatar, title = paste0("<p>Name: <b>", user_ids$Name,"</b><br>", "Super UID <b>", user_ids$id, "</b><br>", "# followers <b>", user_ids$num_follower, "</b><br>", "</p>") )
Benzer şekilde, kenarlarımızın from
to
ve color
niteliklerine karşılık gelen dataset
tablo sütunlarını seçiyoruz:
edges <- create_edge_df(from = dataset$uid, to = dataset$uid_retweet, arrows = "to", color = dataset$col_sentiment)
Son olarak, düğüm ve uç veri çerçeveleri hazırken, visNetwork
kitaplığını kullanarak görselleştirmemizi oluşturalım ve onu varsayılan kodun daha sonra kullanacağı, p
olarak adlandırılan bir değişkende saklayalım:
p <- visNetwork(nodes, edges) %>% visOptions(highlightNearest = list(enabled = TRUE, degree = 1, hover = T)) %>% visPhysics(stabilization = list(enabled = FALSE, iterations = 10), adaptiveTimestep = TRUE, barnesHut = list(avoidOverlap = 0.2, damping = 0.15, gravitationalConstant = -5000))
Burada, visOptions ve visPhysics'te birkaç ağ görselleştirme yapılandırmasını özelleştiriyoruz. Belge sayfalarına bakmaktan ve bu seçenekleri istediğiniz gibi güncellemekten çekinmeyin. Actual code
bölümümüz artık tamamlandı ve Create and save widget
bölümünü p = ggplotly(g);
satırını kaldırarak güncellemeliyiz. kendi görselleştirme değişkenimizi kodladığımızdan beri, p
.
3. Adım: Power BI için Görselleştirmeyi Hazırlayın
Artık R'de kodlamayı bitirdiğimize göre, görselleştirmeyi Power BI'da kullanıma hazırlamak için destekleyici JSON dosyalarımızda bazı değişiklikler yapmalıyız.
capabilities.json
dosyasıyla başlayalım. Uzantımızın veri kaynakları ve diğer ayarlar gibi bir görsel için Görselleştirmeler sekmesinde gördüğünüz bilgilerin çoğunu içerir. İlk önce dataRoles
güncellememiz ve dataset
setimiz ve num_records
girişlerimiz için mevcut değeri yeni veri rolleriyle değiştirmemiz gerekiyor:
# ... "dataRoles": [ { "displayName": "dataset", "description": "Connection Details - From, To, # of Connections, Sentiment Color, To Node Type Color", "kind": "GroupingOrMeasure", "name": "dataset" }, { "displayName": "num_records", "description": "number of records to keep", "kind": "Measure", "name": "num_records" } ], # ...
capabilities.json
dosyamızda dataViewMappings
bölümünü de güncelleyelim. Girdilerimizin uyması gereken conditions
ekleyeceğiz ve ayrıca scriptResult
yeni veri rollerimizle ve onların koşullarıyla eşleşecek şekilde güncelleyeceğiz. Değişiklikler için scriptResult
altındaki select
bölümüyle birlikte conditions
bölümüne bakın:
# ... "dataViewMappings": [ { "conditions": [ { "dataset": { "max": 20 }, "num_records": { "max": 1 } } ], "scriptResult": { "dataInput": { "table": { "rows": { "select": [ { "for": { "in": "dataset" } }, { "for": { "in": "num_records" } } ], "dataReductionAlgorithm": { "top": {} } } } }, # ...
dependencies.json
dosyamıza geçelim. Burada, Power BI'ın gerekli kitaplıkları belirleyip kurabilmesi için cranPackages
altına üç ek paket ekleyeceğiz:
{ "name": "data.table", "displayName": "data.table", "url": "https://cran.r-project.org/web/packages/data.table/index.html" }, { "name": "DiagrammeR", "displayName": "DiagrammeR", "url": "https://cran.r-project.org/web/packages/DiagrammeR/index.html" }, { "name": "visNetwork", "displayName": "visNetwork", "url": "https://cran.r-project.org/web/packages/visNetwork/index.html" },
Not: Power BI bu kitaplıkları otomatik olarak yüklemelidir, ancak kitaplık hatalarıyla karşılaşırsanız aşağıdaki komutu çalıştırmayı deneyin:
install.packages(c("DiagrammeR", "htmlwidgets", "visNetwork", "data.table", "xml2"))
Son olarak pbiviz.json
dosyasına görselimiz için ilgili bilgileri ekleyelim. Aşağıdaki alanları güncellemenizi öneririm:
- Görselin açıklama alanı
- Görselin destek URL'si
- Görselin GitHub URL'si
- yazarın adı
- yazarın e-postası
Artık dosyalarımız güncellendi ve görselleştirmeyi komut satırından yeniden paketlememiz gerekiyor:
pbiviz package
Kodun başarılı bir şekilde yürütülmesi durumunda, dist
dizininde bir .pbiviz
dosyası oluşturulmalıdır. Bu eğitimde kapsanan kodun tamamı GitHub'da görüntülenebilir.
4. Adım: Görselleştirmeyi Power BI'a Aktarın
Power BI'da yeni görselleştirmenizi içe aktarmak için Power BI raporunuzu açın (var olan veriler için veya Önkoşul adımımız sırasında test verileriyle oluşturulmuş) ve Görselleştirmeler sekmesine gidin. … [daha fazla seçenek] düğmesini tıklayın ve Dosyadan görsel içe aktar öğesini seçin. Not: Görselleştirmeler sekmesinin görünür olması için önce bir tarayıcıda Düzenle'yi seçmeniz gerekebilir.
Görselleştirme klasörünüzün dist
dizinine gidin ve görselinizi Power BI'a sorunsuz bir şekilde yüklemek için .pbiviz
dosyasını seçin.
Adım 5: Power BI'da Görselleştirmeyi Oluşturun
İçe aktardığınız görselleştirme artık görselleştirmeler bölmesinde mevcuttur. Raporunuza eklemek için görselleştirme simgesine tıklayın ve ardından dataset
ve num_records
girişlerine ilgili sütunları ekleyin:
Proje gereksinimlerinize bağlı olarak görselleştirmenize ek metin, filtreler ve özellikler ekleyebilirsiniz. Örnek projemiz mevcut işlevlerin tüm kullanım durumlarını kapsayamayacağından, görselleştirmelerinizi daha da geliştirmek için kullandığımız üç R kitaplığı için ayrıntılı belgeleri incelemenizi de tavsiye ederim.
Sonraki Sosyal Ağ Analizinizi Yükseltme
Nihai sonucumuz, özel Power BI görselleştirmeleri oluşturma söz konusu olduğunda R'nin gücünün ve verimliliğinin bir kanıtıdır. Bir sonraki veri kümenizde R'deki özel görselleri kullanarak sosyal ağ analizini deneyin ve kapsamlı veri içgörüleriyle daha akıllı kararlar alın.
Toptal Engineering Blog, bu makalede sunulan kod örneklerini gözden geçirdiği için Leandro Roser'a şükranlarını sunar.