Addes Chapter 5.2.4

This commit is contained in:
Tim 2024-01-03 20:10:22 +01:00
parent 10c3cf9288
commit 2409d80112

View File

@ -1,29 +1,61 @@
# Netzwerkanalyse (Tim Ronneburg) # Netzwerkanalyse (Tim Ronneburg)
In diesem Abschnitt wird sich mit der realisierung der Netzwerkanalyse bschäftigt. Es geht um die Umsetzung der im Kapitel 3.5 Verflechtungsanalyse erwähnten Aufbau eines Netzwerks sowie dessen Analyse. In diesem Abschnitt wird die Umsetzung der Netzwerkanalyse behandelt, die den Aufbau und die Analyse eines Netzwerks gemäß den im Kapitel 3.5 erwähnten Verflechtungsanalysen betrifft.
Wie im vorrangegangenen Abschnitt beschrieben kam in dem Projekt Plotly Dash zum Einsatz, ein Tool mit welches für die Erstellung von Dashbord mit Python ausgelegt ist. Zusätzlich wurde diese Tool mit der Bibliothek NetworkX erweitert um die Netzwerkgraphen abzubilden. Wie bereits im vorherigen Abschnitt erläutert, kam im Rahmen des Projekts Plotly Dash zum Einsatz, ein Tool, das für die Erstellung von Dashboards mit Python entwickelt wurde. Zusätzlich wurde dieses Tool um die Bibliothek NetworkX erweitert, um Netzwerkgraphen darzustellen.
Die Netzwerkanalyse sollte und wurde an mehreren Stellen des Projektes integriert. Zunächst einmal in der Hauptseite wo es den gesamten Graph darstellt, dann auf der Unternehmens Detail Seite zur Betrachtung der Verflechtung aus der Perspektive des gewählten Unternehmens, sowie auf der Personen Detailsseite aus selben Grund wie bei der Unternehmensseite. Die Netzwerkanalyse wurde an verschiedenen Stellen im Projekt integriert. Zunächst auf der Hauptseite, wo der gesamte Graph dargestellt wird, dann auf der Unternehmensdetailseite zur Untersuchung der Verflechtungen aus der Perspektive des ausgewählten Unternehmens, sowie auf der Personendetailseite aus dem gleichen Grund wie auf der Unternehmensseite.
Quellcodeseitig wurde für die Erstellung des Netzwerks mehrere Dateien angelegt. Im Verzeichnis UI gibt es eine Unterordner utils mit dem Unterordner networkx, in diesem befinden sich die Dateien: Quellcode-seitig wurden mehrere Dateien für die Erstellung des Netzwerks erstellt. Im Verzeichnis "UI" befindet sich ein Unterordner "utils" mit dem weiteren Unterordner "networkx", in dem die Dateien zu finden sind:
- network_2d.py - network_2d.py
- network_3d.py - network_3d.py
- network_base.py - network_base.py
- networkx_data.py - networkx_data.py
Die ersten beiden Dateien beinhalten den Quellcode zur Visualisierung des Netzwerkes mit einem Scatterplot in 2D oder 3D. Die Datei "base" beinhaltet die Initialisierung des Netzwerkes anhand der ausgewählten Daten. Gleichzeitig werden hier auch die Metriken gebildet. In der Datei "data" befinden sich diverse Funktionen zum abfragen von Daten die dann an das Netzwerk gegeben werden können. Die ersten beiden Dateien enthalten den Quellcode für die Visualisierung des Netzwerks mithilfe eines Scatterplots in 2D oder 3D. Die Datei "base" umfasst die Initialisierung des Netzwerks anhand der ausgewählten Daten. Hierbei werden gleichzeitig die relevanten Metriken gebildet. In der Datei "data" sind verschiedene Funktionen enthalten, die dazu dienen, Daten abzurufen, welche anschließend dem Netzwerk zugeführt werden können.
Der Ablauf sieht unteranderem wie folgt aus. Wenn ein Nutzer auf der Startseite landet werden einige Funktionen in networkx_data ausgeführt um die Datenbank nach den voreingestellten Daten zu durchsuchen. Diese Daten werden in aufbereitet und als pandas Dataframe an network_base weitergegeben wo mithilfe vom Framework NetworkX ein Graph erstellt wird. In diesem Graph Element stecken die Positionen der Nodes. Außerdem werden Methoden bereitgestellt mit denen Standard Netzwerkanalyse Metriken berechnet werden können. Für diese Projekt sind es die Metriken degree, betweness, closeness, und pagerank. Anschließend wird das NetzwerkX Objekt und das Dataframe Metrics an die Datei network_xd gereicht. Dieses ließt die Positionen der nodes aus und berechnet die Edges um dann mithilfe eines Scatter plots den Graphen in 2d respektive 3d zu erstellen. Man erhält ein Figure Objekt, welches von Dash angezeigt werden kann. Die "base"-Datei legt somit den Grundstein für das Netzwerk, indem sie nicht nur die Struktur initialisiert, sondern auch wichtige Metriken generiert. Die "data"-Datei hingegen stellt eine Schnittstelle dar, durch die das Netzwerk mit den benötigten Daten versorgt wird, wobei diverse Funktionen zur Datenabfrage integriert sind
Dieses Figure Objekt wird in den Pages Dateien: Der Ablauf gestaltet sich unter anderem wie folgt: Wenn ein Nutzer die Startseite aufruft, werden bestimmte Funktionen in "networkx_data" ausgeführt, um die Datenbank nach den voreingestellten Informationen zu durchsuchen. Diese Daten werden aufbereitet und als Pandas DataFrame an "network_base" übergeben, wo mithilfe des Frameworks NetworkX ein Graph erstellt wird. In diesem Graph-Element sind die Positionen der Nodes enthalten. Zusätzlich werden Methoden bereitgestellt, um Standard-Netzwerkanalysemetriken zu berechnen. Für dieses Projekt handelt es sich dabei um die Metriken "degree", "betweenness", "closeness" und "pagerank".
Anschließend werden das NetzwerkX-Objekt und das DataFrame "Metrics" an die Datei "network_xd" übergeben. Diese Datei liest die Positionen der Nodes aus, berechnet die Edges und erstellt dann mithilfe eines Scatterplots den Graphen in 2D beziehungsweise 3D. Das Ergebnis ist ein Figure-Objekt, das von Dash angezeigt werden kann.
Dieses Figure Objekt wird in den folgenden Pages Dateien eingebunden:
- home.py - home.py
- company_elements.py - company_elements.py
- person_elements.py - person_elements.py
eingebunden. Für das Updaten des netzwerks nach Benutzereingaben werden callbacks verwendet. Diese werden durch das bedienen eines HTML Elements wie ein Dropdown oder Radiobuttons ausgelöst. Dadurch das dem Benutzer mehrere Auswahlmöglichkeiten für die Betrachtung des Netzwerkes gegeben werden muss der Callback für das Netzwerk mehrere Inputs aufnehmen und verarbeiten, da ein Callback immer nur ein Output hat und mehrere Callbacks nicht auf dasselbe HTML Element referenzieren sollen. Es gibt zwar neuerdings eine Möglichkeit multiple Outputs zu nutzen, birgt aber keine sonderlichen Vorteile. Für das Aktualisieren des Netzwerks nach Benutzereingaben werden Callbacks verwendet. Diese werden durch die Interaktion mit einem HTML-Element wie einem Dropdown oder Radiobuttons ausgelöst. Da dem Benutzer mehrere Auswahlmöglichkeiten für die Betrachtung des Netzwerks gegeben werden, muss der Callback für das Netzwerk mehrere Inputs aufnehmen und verarbeiten. Dies ist erforderlich, da ein Callback immer nur einen Output haben kann und mehrere Callbacks nicht auf dasselbe HTML-Element verweisen sollten. Obwohl es mittlerweile eine Möglichkeit gibt, mehrere Outputs zu nutzen, bietet dies keine signifikanten Vorteile weshalb in diesem Projekt darauf verzichtet wurde.
# Bedienung des Netzwerks auf der Homepage ## Bedienung des Netzwerks auf der Homepage
Die Homepage des Transparenzregisters sieht zur Vollendung des Projektes folgender Maßen aus:
<!-- Bild der Homepage -->
Auf der linken Seite befindet sich eine Tabelle mit den 10 Zehn "besten" Nodes aus dem Links abgebildetet Graphen. Mit "besten" sind hier die 10 Nodes mit dem höchsten Wert der oberhalb der Tabelle gewählten Metrik. Je nach gefilterten Daten ändert sich die Tabelle automatisch und zeigt immer den aktuellen Stand zum rechts erstellten Graphen.
# Bedienung des Netzwerks auf der Company Page Der Graph auf der rechten Seite repräsentiert die Verflechtung von Unternehmen und Akteuren. Dabei stellen rote Punkte Personen wie Wirtschaftsprüfer oder Geschäftsführer dar, während blaue Punkte Unternehmen symbolisieren. Die Bedienung des Graphen erfolgt über die oberen Bedienfelder. Die ersten beiden Dropdown-Menüs ermöglichen die Auswahl der Datenbasis, auf die sich der Graph beziehen soll. Hierbei ist auch eine Mehrfachauswahl möglich. Neben den Daten kann auch das Layout des Graphen eingestellt werden, wobei für die dreidimensionale Darstellung nur begrenzte Optionen verfügbar sind.
# Bedienung des Netzwerks auf der Person Details Page Die initiale Erstellung eines Graphen kann mehrere Sekunden in Anspruch nehmen, wird jedoch anschließend zwischengespeichert und kann in den nächsten 30 Minuten schneller durchgeführt werden. Die anfänglichen Leistungsprobleme resultieren aus der Menge an Daten, die abgerufen, verarbeitet und dargestellt werden müssen. Das Zusammenspiel von Datenbank, NetworkX und Plotly beeinflusst hier die Gesamtperformance.
## Bedienung des Netzwerks auf der Company Page
Nach Auswahl eines bestimmten Unternehmens kann auf der Unternehmensseite der Reiter "Verflechtung" gewählt werden, um die Verflechtungen des Unternehmens zu betrachten. Sollte das ausgewählte Unternehmen keine Verflechtungen aufweisen, wird dem Nutzer ein entsprechender Hinweistext angezeigt.
<!-- Bild mit Hinweistext -->
Bei ausreichend vorhandenen Daten wird ein kompakter Graph erstellt, der die Verflechtungen des betrachteten Unternehmens zeigt. Hierbei werden lediglich die engsten Verbindungen visualisiert. Auf dieser Seite ist keine Interaktion mit dem Graphen vorgesehen, da der Benutzer hier lediglich zusätzliche Informationen zum Unternehmen erhalten soll, ohne den gesamten Graphen durchzugehen. Diese Funktion ist für die Homepage vorgesehen.
<!-- Bild Company Seite -->
## Bedienung des Netzwerks auf der Person Details Page
Die Personen-Detailseite verhält sich in Bezug auf das Netzwerk analog zur Unternehmensseite. Auch hier erhält der Nutzer lediglich zusätzliche Informationen zur Person, kann jedoch nicht weiter mit dem Graphen interagieren.
Ein Unterschied zur Unternehmensseite besteht jedoch: Auf der Personen-Seite werden die Verflechtungen bis zur dritten Ebene abgebildet, und die jeweilige Anzahl der Verbindungen wird oben in den Containern mit den Kennzahlen dargestellt. Diese Funktion ist für zukünftige Releases auch für die Unternehmensseite vorgesehen.
<!-- Bild Personen Seite -->
## Ausgelassene Features
Im Kapitel 3.5 wurden neben den hier beschriebenen Funktionen auch weitere Aspekte betrachtet und evaluiert, insbesondere im Hinblick auf die Darstellung und Analyse unternehmerischer Kennzahlen wie EBIT, Umsatz, Gewinn, Aktienkurs usw. Leider konnten im Zuge der Datenerfassung die hierfür benötigten Daten nicht zuverlässig und in ausreichender Menge generiert werden. Dies führte dazu, dass diese Funktionen aus dem Verflechtungsscope herausgenommen wurden.
Ein weiterer Herausforderungspunkt war die schwierige und performante Einbindung des Graphen in Plotly Dash. Die Generierung des Graphen bei größeren Datenmengen dauerte mit dem ursprünglich ausgewählten Tool deutlich länger, als es in den Proof-of-Concepts den Anschein erwecken ließ. Daher erfolgte eine Umstellung auf eigens erstellte Scatter Plots, für die ein eigener Algorithmus entwickelt werden musste, der die Positionen aus dem NetworkX ausließt und in Punkte für den Scatter Graphen formatiert. Dies hatte einen deutlichen Einfluss auf die Entwicklung und führte zu Verzögerungen.
Zuletzt ist die Verflechtungsanalyse einer der Bereiche, die abhängig von den Ergebnissen anderer Kategorien ist. Dies bedeutet, dass die Entwicklung erst mit konkreten Daten versetzt beginnen konnte, was den Raum für Fehlerbehebungen und zusätzliche Funktionen zusätzlich begrenzt hat.
## Kurzes Resumee der Verflechtungsanalyse/Netzwerkanalyse
Alles in allem konnte ein Netzwerk auf Basis der Unternehmensdaten erstellt werden, das Einblicke in die Verzweigungen einiger Unternehmensbeziehungen ermöglicht. Die Analyse wird dabei von klassischen Netzwerkanalyse-Kennzahlen unterstützt. Jedoch muss die Analyse weiterhin durch den Benutzer erfolgen und ist nur in einem eingeschränkteren Maße, als ursprünglich angedacht, durchführbar. Die Analyse hinsichtlich unternehmerischer Kennzahlen musste aufgrund mangelnder Daten aus dem Projekt ausgeschlossen werden.
Die Möglichkeit, ein Netzwerk basierend auf den vorliegenden Unternehmensdaten zu generieren, bietet einen Einblick in die Verästelungen bestimmter Unternehmensbeziehungen. Die Analyse wird durch klassische Netzwerkanalyse-Kennzahlen unterstützt. Dennoch ist die Durchführung der Analyse auf eine begrenztere Ebene beschränkt als ursprünglich geplant. Aufgrund unzureichender Daten im Projekt musste die Analyse bezüglich unternehmerischer Kennzahlen ausgeschlossen werden.