mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-25 06:18:05 +02:00
Verbesserungsvorschlaege von C. Oessner (Email vom 15.01.2014) eingearbeitet; Definition von 'Random Walk' hinzugefügt
This commit is contained in:
parent
c68eba2827
commit
be452cf225
6 changed files with 114 additions and 62 deletions
|
@ -2,15 +2,36 @@
|
||||||
DYCOS (\underline{DY}namic \underline{C}lassification
|
DYCOS (\underline{DY}namic \underline{C}lassification
|
||||||
algorithm with c\underline{O}ntent and \underline{S}tructure) ist ein
|
algorithm with c\underline{O}ntent and \underline{S}tructure) ist ein
|
||||||
Knotenklassifizierungsalgorithmus, der Ursprünglich in \cite{aggarwal2011} vorgestellt
|
Knotenklassifizierungsalgorithmus, der Ursprünglich in \cite{aggarwal2011} vorgestellt
|
||||||
wurde. Er klassifiziert einzelne Knoten, indem $r$ Random Walks der Länge $l$,
|
wurde.
|
||||||
|
|
||||||
|
Ein zentrales Element des DYCOS-Algorithmus ist der sog.
|
||||||
|
{\it Random Walk}:
|
||||||
|
|
||||||
|
\begin{definition}[Random Walk, Sprung]
|
||||||
|
Sei $G = (V, E)$ mit $E \subseteq V \times V$ ein Graph und
|
||||||
|
$v_0 \in V$ ein Knoten des Graphen.
|
||||||
|
|
||||||
|
%Sei außerdem $f: V \rightarrow \mathcal{P}(V)$ eine Abbildung
|
||||||
|
%mit der Eigenschaft:
|
||||||
|
%\[ \forall v \in V \forall v' \in f(v): \exists \text{Weg von } v \text{ nach } v'\]
|
||||||
|
|
||||||
|
Ein Random Walk der Länge $l$ auf $G$, startend bei $v_0$ ist
|
||||||
|
nun der zeitdiskrete stochastische Prozess, der $v_i$
|
||||||
|
auf einen zufällig gewählten Nachbarn $v_{i+1}$ abbildet
|
||||||
|
(für $i \in 0, \dots, l-1$).
|
||||||
|
Die Abbildung $v_i \mapsto v_{i+1}$ heißt ein Sprung.
|
||||||
|
\end{definition}
|
||||||
|
|
||||||
|
Der DYCOS-Algorithmus klassifiziert einzelne Knoten, indem $r$ Random Walks der Länge $l$,
|
||||||
startend bei dem zu klassifizierenden Knoten $v$ gemacht werden. Dabei
|
startend bei dem zu klassifizierenden Knoten $v$ gemacht werden. Dabei
|
||||||
werden die Labels der besuchten Knoten gezählt. Das Label, das am häufigsten
|
werden die Labels der besuchten Knoten gezählt. Das Label, das am häufigsten
|
||||||
vorgekommen ist, wird als Label für $v$ gewählt.
|
vorgekommen ist, wird als Label für $v$ gewählt.
|
||||||
DYCOS nutzt also die sog. Homophilie, d.~h. die Eigenschaft, dass
|
DYCOS nutzt also die sog. Homophilie, d.~h. die Eigenschaft, dass
|
||||||
Knoten, die nur wenige Hops von einander entfernt sind, häufig auch
|
Knoten, die nur wenige Hops von einander entfernt sind, häufig auch
|
||||||
ähnlich sind \cite{bhagat}. Der DYCOS-Algorithmus nimmt jedoch nicht
|
ähnlich sind \cite{bhagat}. Der DYCOS-Algorithmus arbeitet jedoch nicht
|
||||||
einfach den Graphen für dieses Verfahren, sondern erweitert ihn mit
|
direkt auf dem Graphen, sondern erweitert ihn mit
|
||||||
Hilfe der zur Verfügung stehenden Texte.\\
|
Hilfe der zur Verfügung stehenden Texte. Wie diese Erweiterung
|
||||||
|
erstellt wird, wird im Folgenden erklärt.\\
|
||||||
Für diese Erweiterung wird zuerst wird Vokabular $W_t$ bestimmt, das
|
Für diese Erweiterung wird zuerst wird Vokabular $W_t$ bestimmt, das
|
||||||
charakteristisch für eine Knotengruppe ist. Wie das gemacht werden kann
|
charakteristisch für eine Knotengruppe ist. Wie das gemacht werden kann
|
||||||
und warum nicht einfach jedes Wort in das Vokabular aufgenommen wird,
|
und warum nicht einfach jedes Wort in das Vokabular aufgenommen wird,
|
||||||
|
@ -38,25 +59,25 @@ jedes Wortes berücksichtigt.
|
||||||
Entsprechend werden zwei unterschiedliche Sprungtypen unterschieden,
|
Entsprechend werden zwei unterschiedliche Sprungtypen unterschieden,
|
||||||
die strukturellen Sprünge und inhaltliche Mehrfachsprünge:
|
die strukturellen Sprünge und inhaltliche Mehrfachsprünge:
|
||||||
|
|
||||||
\begin{definition}
|
\begin{definition}[struktureller Sprung]
|
||||||
Sei $G_{E,t} = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_{t})$ der
|
Sei $G_{E,t} = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_{t})$ der
|
||||||
um die Wortknoten $W_{t}$ erweiterte Graph.
|
um die Wortknoten $W_{t}$ erweiterte Graph.
|
||||||
|
|
||||||
Dann heißt das zufällige wechseln des aktuell betrachteten
|
Dann heißt das zufällige wechseln des aktuell betrachteten
|
||||||
Knoten $v \in V_t$ zu einem benachbartem Knoten $w \in V_t$
|
Knoten $v \in V_t$ zu einem benachbartem Knoten $w \in V_t$
|
||||||
ein \textbf{struktureller Sprung}.
|
ein struktureller Sprung.
|
||||||
\end{definition}
|
\end{definition}
|
||||||
\goodbreak
|
\goodbreak
|
||||||
Im Gegensatz dazu benutzten inhaltliche Mehrfachsprünge
|
Im Gegensatz dazu benutzten inhaltliche Mehrfachsprünge
|
||||||
tatsächlich die Grapherweiterung:
|
tatsächlich die Grapherweiterung:
|
||||||
\begin{definition}
|
\begin{definition}[inhaltlicher Mehrfachsprung]
|
||||||
Sei $G_t = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_{t})$ der
|
Sei $G_t = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_{t})$ der
|
||||||
um die Wortknoten $W_{t}$ erweiterte Graph.
|
um die Wortknoten $W_{t}$ erweiterte Graph.
|
||||||
|
|
||||||
Dann heißt das zufällige wechseln des aktuell betrachteten
|
Dann heißt das zufällige wechseln des aktuell betrachteten
|
||||||
Knoten $v \in V_t$ zu einem benachbartem Knoten $w \in W_t$
|
Knoten $v \in V_t$ zu einem benachbartem Knoten $w \in W_t$
|
||||||
und weiter zu einem zufälligem Nachbar $v' \in V_t$ von $w$
|
und weiter zu einem zufälligem Nachbar $v' \in V_t$ von $w$
|
||||||
ein \textbf{inhaltlicher Mehrfachsprung}.
|
ein inhaltlicher Mehrfachsprung.
|
||||||
\end{definition}
|
\end{definition}
|
||||||
|
|
||||||
Jeder inhaltliche Mehrfachsprung beginnt und endet also in einem Strukturknoten,
|
Jeder inhaltliche Mehrfachsprung beginnt und endet also in einem Strukturknoten,
|
||||||
|
@ -65,11 +86,11 @@ springt über einen Wortknoten und ist ein Pfad der Länge~2.
|
||||||
Ob in einem Sprung der Random Walks ein struktureller Sprung oder
|
Ob in einem Sprung der Random Walks ein struktureller Sprung oder
|
||||||
ein inhaltlicher Mehrfachsprung gemacht wird, wird jedes mal zufällig
|
ein inhaltlicher Mehrfachsprung gemacht wird, wird jedes mal zufällig
|
||||||
neu entschieden. Dafür wird der Parameter $0 \leq p_S \leq 1$ für den Algorithmus
|
neu entschieden. Dafür wird der Parameter $0 \leq p_S \leq 1$ für den Algorithmus
|
||||||
gewählt. Mit einer Wahrscheinlichkeit von $p_S$ wird eine struktureller
|
gewählt. Mit einer Wahrscheinlichkeit von $p_S$ wird ein struktureller
|
||||||
Sprung durchgeführt und mit einer Wahrscheinlichkeit
|
Sprung durchgeführt und mit einer Wahrscheinlichkeit
|
||||||
von $(1-p_S)$ ein modifizierter inhaltlicher Mehrfachsprung, wie er in
|
von $(1-p_S)$ ein modifizierter inhaltlicher Mehrfachsprung, wie er in
|
||||||
\cref{sec:sprungtypen} erklärt wird, gemacht. Dieser
|
\cref{sec:sprungtypen} erklärt wird, gemacht. Der
|
||||||
Parameter gibt an, wie wichtig die Struktur des Graphen im Verhältnis
|
Parameter $p_S$ gibt an, wie wichtig die Struktur des Graphen im Verhältnis
|
||||||
zu den textuellen Inhalten ist. Bei $p_S = 0$ werden ausschließlich
|
zu den textuellen Inhalten ist. Bei $p_S = 0$ werden ausschließlich
|
||||||
die Texte betrachtet, bei $p_S = 1$ ausschließlich die Struktur des
|
die Texte betrachtet, bei $p_S = 1$ ausschließlich die Struktur des
|
||||||
Graphen.
|
Graphen.
|
||||||
|
@ -90,11 +111,11 @@ Pseudocode vorgestellt.
|
||||||
\Ensure Klassifikation von $V_t \setminus V_{L,t}$\\
|
\Ensure Klassifikation von $V_t \setminus V_{L,t}$\\
|
||||||
\\
|
\\
|
||||||
|
|
||||||
\ForAll{Knoten $v$ in $V_t \setminus V_{L,t}$}
|
\ForAll{Knoten $v \in V_t \setminus V_{L,t}$}
|
||||||
\State $d \gets $ defaultdict
|
\State $d \gets $ defaultdict
|
||||||
\For{$i$ von $1$ bis $r$}
|
\For{$i = 1, \dots,r$}
|
||||||
\State $w \gets v$
|
\State $w \gets v$
|
||||||
\For{$j$ von $1$ bis $l$}
|
\For{$j= 1, \dots, l$}
|
||||||
\State $sprungTyp \gets \Call{random}{0, 1}$
|
\State $sprungTyp \gets \Call{random}{0, 1}$
|
||||||
\If{$sprungTyp \leq p_S$}
|
\If{$sprungTyp \leq p_S$}
|
||||||
\State $w \gets$ \Call{SturkturellerSprung}{$w$}
|
\State $w \gets$ \Call{SturkturellerSprung}{$w$}
|
||||||
|
@ -132,10 +153,13 @@ verwaltet der DYCOS-Algorithmus zwei weitere Datenstrukturen:
|
||||||
assoziatives Array geschehen. Wörter, die nicht in
|
assoziatives Array geschehen. Wörter, die nicht in
|
||||||
Texten von $v$ vorkommen, sind nicht im Array. Für
|
Texten von $v$ vorkommen, sind nicht im Array. Für
|
||||||
alle vorkommenden Wörter ist der gespeicherte Wert zum
|
alle vorkommenden Wörter ist der gespeicherte Wert zum
|
||||||
Schlüssel \enquote{Wort} die Anzahl der Vorkommen von
|
Schlüssel $w \in W_t$ die Anzahl der Vorkommen von
|
||||||
\enquote{Wort} in den Texten von $v$.
|
$w$ in den Texten von $v$.
|
||||||
\item Für jedes Wort des Vokabulars $W_t$ wird eine Liste von
|
\item Für jedes Wort des Vokabulars $W_t$ wird eine Liste von
|
||||||
Knoten verwaltet, in deren Texten das Wort vorkommt.
|
Knoten verwaltet, in deren Texten das Wort vorkommt.
|
||||||
|
Diese Liste wird bei den inhaltlichen Mehrfachsprung,
|
||||||
|
der in \cref{sec:sprungtypen} erklärt wird,
|
||||||
|
verwendet.
|
||||||
\item An einigen Stellen macht ein assoziatives Array, auch
|
\item An einigen Stellen macht ein assoziatives Array, auch
|
||||||
\enquote{dictionary} oder \enquote{map} genannt, Sinn.
|
\enquote{dictionary} oder \enquote{map} genannt, Sinn.
|
||||||
Zustätzlich ist es nützlich, wenn diese Datenstruktur für
|
Zustätzlich ist es nützlich, wenn diese Datenstruktur für
|
||||||
|
|
Binary file not shown.
|
@ -1,14 +1,20 @@
|
||||||
\subsection{Motivation}
|
Im Folgenden werden in \cref{sec:Motivation} einge Beispiele, in denen
|
||||||
Teilweise gelabelte Netzwerke sind allgegenwärtig. Publikationsdatenbanken
|
der DYCOS-Algorithmus anwendung finden könnte, dargelegt. In
|
||||||
|
\cref{sec:Problemstellung} wird die Problemstellung formal definiert
|
||||||
|
und in \cref{sec:Herausforderungen} wird auf besondere Herausforderungen
|
||||||
|
der Aufgabenstellung hingewiesen.
|
||||||
|
|
||||||
|
\subsection{Motivation}\label{sec:Motivation}
|
||||||
|
Teilweise beschriftete Graphen sind allgegenwärtig. Publikationsdatenbanken
|
||||||
mit Publikationen als Knoten, Literaturverweisen und Zitaten als Kanten
|
mit Publikationen als Knoten, Literaturverweisen und Zitaten als Kanten
|
||||||
sowie Tags oder Kategorien als Labels;
|
sowie von Nutzern vergebene Beschriftungen (sog. {\it Tags}) oder Kategorien als Labels;
|
||||||
Wikipedia mit Artikeln als Knoten, Links als Kanten und Kategorien
|
Wikipedia mit Artikeln als Knoten, Links als Kanten und Kategorien
|
||||||
als Labels sowie soziale Netzwerke mit Eigenschaften der Benutzer
|
als Labels sowie soziale Netzwerke mit Eigenschaften der Benutzer
|
||||||
als Labels sind drei Beispiele dafür.
|
als Labels sind drei Beispiele dafür.
|
||||||
Häufig sind Labels nur teilweise vorhanden und es ist wünschenswert die
|
Häufig sind Labels nur teilweise vorhanden und es ist wünschenswert die
|
||||||
fehlenden Labels zu ergänzen.
|
fehlenden Labels automatisiert zu ergänzen.
|
||||||
|
|
||||||
\subsection{Problemstellung}
|
\subsection{Problemstellung}\label{sec:Problemstellung}
|
||||||
Gegeben ist ein Graph, der teilweise gelabelt ist. Zusätzlich stehen
|
Gegeben ist ein Graph, der teilweise gelabelt ist. Zusätzlich stehen
|
||||||
zu einer Teilmenge der Knoten Texte bereit. Gesucht sind nun Labels
|
zu einer Teilmenge der Knoten Texte bereit. Gesucht sind nun Labels
|
||||||
für alle Knoten, die bisher noch nicht gelabelt sind.\\
|
für alle Knoten, die bisher noch nicht gelabelt sind.\\
|
||||||
|
@ -30,12 +36,13 @@ für alle Knoten, die bisher noch nicht gelabelt sind.\\
|
||||||
$\tilde{f}|_{V_{L,t}} = f$.
|
$\tilde{f}|_{V_{L,t}} = f$.
|
||||||
\end{definition}
|
\end{definition}
|
||||||
|
|
||||||
\subsection{Herausforderungen}
|
\subsection{Herausforderungen}\label{sec:Herausforderungen}
|
||||||
Die Graphen, für die dieser Algorithmus konzipiert wurde,
|
Die Graphen, für die dieser Algorithmus konzipiert wurde,
|
||||||
sind viele $\num{10000}$~Knoten groß und dynamisch. Das bedeutet, es
|
sind viele $\num{10000}$~Knoten groß und dynamisch. \enquote{Dynamisch}
|
||||||
kommen neue Knoten und eventuell auch neue Kanten hinzu bzw. Kanten
|
bedeutet in diesem Kontext, dass neue Knoten und eventuell auch neue
|
||||||
oder Knoten werden entfernt. Außerdem stehen textuelle Inhalte zu den
|
Kanten hinzu kommen bzw. Kanten oder Knoten werden entfernt werden.
|
||||||
|
Außerdem stehen textuelle Inhalte zu den
|
||||||
Knoten bereit, die bei der Klassifikation genutzt werden können.
|
Knoten bereit, die bei der Klassifikation genutzt werden können.
|
||||||
Bei kleinen Modifikationen sollte nicht alles nochmals berechnen
|
Bei kleinen Änderungen sollte nicht alles nochmals berechnen
|
||||||
werden müssen, sondern basierend auf zuvor
|
werden müssen, sondern basierend auf zuvor
|
||||||
berechneten Labels sollte die Klassifizierung modifiziert werden.
|
berechneten Labels sollte die Klassifizierung angepasst werden.
|
||||||
|
|
|
@ -2,3 +2,11 @@ Ausarbeitung zum Proseminar "Netzwerkanalyse" am KIT.
|
||||||
|
|
||||||
Die Ausarbeitung soll 10-12 Seiten haben und die Präsentation
|
Die Ausarbeitung soll 10-12 Seiten haben und die Präsentation
|
||||||
25-30 Minuten dauern + 10-15 Minuten Diskussion.
|
25-30 Minuten dauern + 10-15 Minuten Diskussion.
|
||||||
|
|
||||||
|
TODO
|
||||||
|
-----
|
||||||
|
|
||||||
|
* label -> Beschriftung
|
||||||
|
* Abschnitt "Problemstellung" überarbeiten
|
||||||
|
* Abbildung verlinken
|
||||||
|
* Algorithmen erklären
|
||||||
|
|
|
@ -18,7 +18,7 @@ gezeigt wird.
|
||||||
\label{alg:DYCOS-structural-hop}
|
\label{alg:DYCOS-structural-hop}
|
||||||
\end{algorithm}
|
\end{algorithm}
|
||||||
|
|
||||||
Bei inhaltlichen Mehrfachsprüngen ist jedoch nicht sinnvoll so direkt
|
Bei inhaltlichen Mehrfachsprüngen ist jedoch nicht sinnvoll so strikt
|
||||||
nach der Definition vorzugehen, also
|
nach der Definition vorzugehen, also
|
||||||
direkt von einem strukturellem Knoten
|
direkt von einem strukturellem Knoten
|
||||||
$v \in V_t$ zu einem mit $v$ verbundenen Wortknoten $w \in W_t$ zu springen
|
$v \in V_t$ zu einem mit $v$ verbundenen Wortknoten $w \in W_t$ zu springen
|
||||||
|
@ -30,52 +30,66 @@ Gemeint sein können z.~B. das Bauwerk, das Entwurfsmuster der
|
||||||
objektorientierten Programmierung oder ein Teil des Gehirns.
|
objektorientierten Programmierung oder ein Teil des Gehirns.
|
||||||
|
|
||||||
Deshalb wird für jeden Knoten $v$, von dem aus man einen inhaltlichen
|
Deshalb wird für jeden Knoten $v$, von dem aus man einen inhaltlichen
|
||||||
Mehrfachsprung machen will folgendes Clusteranalyse durchgeführt:
|
Mehrfachsprung machen will folgende Textanalyse durchgeführt:
|
||||||
\begin{enumerate}[label=C\arabic*),ref=C\arabic*]
|
\begin{enumerate}[label=C\arabic*,ref=C\arabic*]
|
||||||
\item[C1] Gehe alle in $v$ startenden Random Walks der Länge 2 durch
|
\item \label{step:c1} Gehe alle in $v$ startenden Random Walks der Länge $2$ durch
|
||||||
und erstelle eine Liste $L$, der erreichbaren Knoten $v'$. Speichere
|
und erstelle eine Liste $L$ der erreichbaren Knoten $v'$. Speichere
|
||||||
außerdem, durch wie viele Pfade diese Knoten $v'$ jeweils erreichbar sind.
|
außerdem, durch wie viele Pfade diese Knoten $v'$ jeweils erreichbar sind.
|
||||||
\item[C2] Betrachte im folgenden nur die Top-$q$ Knoten, wobei $q \in \mathbb{N}$
|
\item \label{step:c2} Betrachte im folgenden nur die Top-$q$ Knoten bzgl. der
|
||||||
eine zu wählende Konstante des Algorithmus ist.\footnote{Sowohl für den DBLP, als auch für den
|
Anzahl der Pfade von $v$ nach $v'$, wobei $q \in \mathbb{N}$
|
||||||
CORA-Datensatz wurde in \cite[S. 364]{aggarwal2011} $q=10$ gewählt.} \label{list:aggregate.2}
|
eine zu wählende Konstante des DYCOS-Algorithmus ist.\footnote{Sowohl für den DBLP, als auch für den
|
||||||
\item[C3] Wähle mit Wahrscheinlichkeit $\frac{\Call{Anzahl}{v'}}{\sum_{w \in L} \Call{Anzahl}{v'}}$
|
CORA-Datensatz wurde in \cite[S. 364]{aggarwal2011} $q=10$ gewählt.}
|
||||||
den Knoten $v'$ als Ziel des Mehrfachsprungs.
|
Diese Knotenmenge heiße im Folgenden $T(v)$ und $p(v, v')$
|
||||||
|
sei die Anzahl der Pfade von $v$ über einen Wortknoten nach $v'$.
|
||||||
|
\item \label{step:c3} Wähle mit Wahrscheinlichkeit $\frac{p(v, v')}{\sum_{w \in T(v)} p(v, w)}$
|
||||||
|
den Knoten $v' \in T(v)$ als Ziel des Mehrfachsprungs.
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
|
|
||||||
Konkret könnte also ein Inhaltlicher Mehrfachsprung sowie wie in
|
Konkret könnte also ein inhaltlicher Mehrfachsprung sowie wie in
|
||||||
\cref{alg:DYCOS-content-multihop} beschrieben umgesetzt werden.
|
\cref{alg:DYCOS-content-multihop} beschrieben umgesetzt werden.
|
||||||
|
Der Algorithmus bekommt einen Startknoten $v \in V_T$ und
|
||||||
|
einen $q \in \mathbb{N}$ als Parameter. $q$ ist ein Parameter der
|
||||||
|
für den DYCOS-Algorithmus zu wählen ist. Dieser Parameter beschränkt
|
||||||
|
die Anzahl der möglichen Zielknoten $v' \in V_T$ auf diejenigen
|
||||||
|
$q$ Knoten, die $v$ bzgl. der Textanalyse am ähnlichsten sind.
|
||||||
|
|
||||||
|
In \cref{alg:l2} bis \cref{alg:l5} wird \cref{step:c1} durchgeführt.
|
||||||
|
In \cref{alg:l6} wird \cref{step:c2} durchgeführt. Bei der
|
||||||
|
Wahl der Datenstruktur $M_H$ ist zu beachten, dass man in
|
||||||
|
\cref{alg:21} über Indizes auf Elemente aus $M_H$ zugreifen können muss.
|
||||||
|
|
||||||
|
In \cref{alg:l8} bis \cref{alg:l13} wird ein Wörterbuch erstellt,
|
||||||
|
das von $v' \in T(v)$ auf die relative
|
||||||
|
Häufigkeit bzgl. aller Pfade von $v$ zu Knoten aus den Top-$q$ abbildet.
|
||||||
|
|
||||||
|
In \cref{alg:15} bis \cref{alg:22} wird ein Knoten $v' \in T(v)$ mit
|
||||||
|
einer Wahrscheinlichkeit, die seiner relativen Häufigkeit am Anteil
|
||||||
|
der Pfaden der Länge 2 von $v$ nach $v'$ über einen beliebigen
|
||||||
|
Wortknoten entspricht ausgewählt und schließlich zurückgegeben.
|
||||||
|
|
||||||
\begin{algorithm}
|
\begin{algorithm}
|
||||||
\caption{Inhaltlicher Mehrfachsprung}
|
\caption{Inhaltlicher Mehrfachsprung}
|
||||||
\label{alg:DYCOS-content-multihop}
|
\label{alg:DYCOS-content-multihop}
|
||||||
\begin{algorithmic}[1]
|
\begin{algorithmic}[1]
|
||||||
\Procedure{InhaltlicherMehrfachsprung}{Knoten $v$}
|
\Procedure{InhaltlicherMehrfachsprung}{Knoten $v \in V_T$, $q \in \mathbb{N}$}
|
||||||
\State \textit{//Alle Knoten bestimmen, die von $v$ aus über Pfade der Länge 2 erreichbar sind}
|
\State $reachableNodes \gets$ defaultdict\label{alg:l2}
|
||||||
\State \textit{//Zusätzlich wird für diese Knoten die Anzahl der Pfade der Länge 2 bestimmt,}
|
|
||||||
\State \textit{//durch die sie erreichbar sind}
|
|
||||||
\State $reachableNodes \gets$ defaultdict
|
|
||||||
\ForAll{Wortknoten $w$ in $v.\Call{getWordNodes}{ }$}
|
\ForAll{Wortknoten $w$ in $v.\Call{getWordNodes}{ }$}
|
||||||
\ForAll{Strukturknoten $x$ in $w.\Call{getStructuralNodes}{ }$}
|
\ForAll{Strukturknoten $x$ in $w.\Call{getStructuralNodes}{ }$}
|
||||||
\State $reachableNodes[x] \gets reachableNodes[x] + 1$
|
\State $reachableNodes[x] \gets reachableNodes[x] + 1$
|
||||||
\EndFor
|
\EndFor
|
||||||
\EndFor
|
\EndFor\label{alg:l5}
|
||||||
|
\State \label{alg:l6} $M_H \gets \Call{max}{reachableNodes, q}$ \Comment{Also: $|M_H| = q$, falls $|reachableNodes|\geq q$}
|
||||||
\State \textit{//Im folgenden wird davon ausgegangen, dass man über Indizes wahlfrei auf}
|
\\
|
||||||
\State \textit{//Elemente aus $M_H$ zugreifen kann. Dies muss bei der konkreten Wahl}
|
\State \label{alg:l8} $s \gets 0$
|
||||||
\State \textit{//der Datenstruktur berücksichtigt werden.}
|
|
||||||
\State $M_H \gets \Call{max}{reachableNodes, q}$ \Comment{Also: $|M_H| = q$, falls $|reachableNodes|\geq q$}
|
|
||||||
\State \textit{//Dictionary mit relativen Häufigkeiten erzeugen}
|
|
||||||
\State $s \gets 0$
|
|
||||||
\ForAll{Knoten $x$ in $M_H$}
|
\ForAll{Knoten $x$ in $M_H$}
|
||||||
\State $s \gets s + reachableNodes[x]$
|
\State $s \gets s + reachableNodes[x]$
|
||||||
\EndFor
|
\EndFor
|
||||||
\State $relativeFrequency \gets $ Dictionary
|
\State $relativeFrequency \gets $ Dictionary
|
||||||
\ForAll{Knoten $x$ in $M_H$}
|
\ForAll{Knoten $x$ in $M_H$}
|
||||||
\State $relativeFrequency \gets \frac{reachableNodes[x]}{s}$
|
\State $relativeFrequency \gets \frac{reachableNodes[x]}{s}$
|
||||||
\EndFor
|
\EndFor\label{alg:l13}
|
||||||
\State \textit{//Wähle Knoten $i$ mit einer Wahrscheinlichkeit entsprechend seiner relativen}
|
\\
|
||||||
\State \textit{//Häufigkeit an Pfaden der Länge 2}
|
\State \label{alg:15} $random \gets \Call{random}{0, 1}$
|
||||||
\State $random \gets \Call{random}{0, 1}$
|
|
||||||
\State $r \gets 0.0$
|
\State $r \gets 0.0$
|
||||||
\State $i \gets 0$
|
\State $i \gets 0$
|
||||||
\While{$s < random$}
|
\While{$s < random$}
|
||||||
|
@ -83,8 +97,8 @@ Konkret könnte also ein Inhaltlicher Mehrfachsprung sowie wie in
|
||||||
\State $i \gets i + 1$
|
\State $i \gets i + 1$
|
||||||
\EndWhile
|
\EndWhile
|
||||||
|
|
||||||
\State $v \gets M_H[i-1]$
|
\State $v \gets M_H[i-1]$ \label{alg:21}
|
||||||
\State \Return $v$
|
\State \Return $v$ \label{alg:22}
|
||||||
\EndProcedure
|
\EndProcedure
|
||||||
\end{algorithmic}
|
\end{algorithmic}
|
||||||
\end{algorithm}
|
\end{algorithm}
|
||||||
|
|
|
@ -7,10 +7,9 @@ Struktur des Graphen sowie textuelle Informationen, die den Knoten
|
||||||
zugeordnet sind. Die in \cite{aggarwal2011} beschriebene experimentelle
|
zugeordnet sind. Die in \cite{aggarwal2011} beschriebene experimentelle
|
||||||
Analyse ergab, dass er auch auf dynamischen Graphen mit $\num{19396}$
|
Analyse ergab, dass er auch auf dynamischen Graphen mit $\num{19396}$
|
||||||
bzw. $\num{806635}$ Knoten, von denen nur $\num{14814}$ bzw. $\num{18999}$
|
bzw. $\num{806635}$ Knoten, von denen nur $\num{14814}$ bzw. $\num{18999}$
|
||||||
beschriftet waren, innerhalb von weniger als einer Minute auf einer
|
beschriftet waren, innerhalb von weniger als einer Minute auf einem
|
||||||
CPU eines Intel Xeon 2.5GHz mit 32G RAM ausgeführt
|
Kern einer Intel Xeon 2.5GHz CPU mit 32G RAM ausgeführt werden kann.\\
|
||||||
werden kann.\\
|
Zusätzlich wird \cite{aggarwal2011} kritisch Erörtert und
|
||||||
Zusätzlich wird auf Schwächen von \cite{aggarwal2011} hingewiesen
|
und es werden mögliche Erweiterungen des DYCOS-Algorithmus vorgeschlagen.
|
||||||
und mögliche Verbesserungen vorgeschlagen.
|
|
||||||
|
|
||||||
\textbf{Keywords:} DYCOS, Label Propagation, Knotenklassifizierung
|
\textbf{Keywords:} DYCOS, Label Propagation, Knotenklassifizierung
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue