|
@@ -3,9 +3,9 @@ DYCOS (\underline{DY}namic \underline{C}lassification
|
|
|
algorithm with c\underline{O}ntent and \underline{S}tructure) ist ein
|
|
|
Knotenklassifizierungsalgorithmus, der Ursprünglich in \cite{aggarwal2011} vorgestellt
|
|
|
wurde. Er klassifiziert Knoten, indem mehrfach Random Walks startend
|
|
|
-bei dem zu klassifizierenden Knoten gemacht werden und die Labels
|
|
|
+bei dem zu klassifizierenden Knoten $v$ gemacht werden und die Labels
|
|
|
der besuchten Knoten gezählt werden. Das Label, das am häufigsten
|
|
|
-vorgekommen ist, wird als Label gewählt.
|
|
|
+vorgekommen ist, wird als Label für $v$ gewählt.
|
|
|
DYCOS nutzt also die sog. Homophilie, d.~h. die Eigenschaft, dass
|
|
|
Knoten, die nur wenige Hops von einander entfernt sind, häufig auch
|
|
|
ähnlich sind \cite{bhagat}.
|
|
@@ -17,7 +17,7 @@ stehenden Texte.
|
|
|
Für diese Erweiterung wird zuerst wird Vokabular $W_t$ bestimmt, das
|
|
|
charakteristisch für eine Knotengruppe ist. Wie das gemacht werden kann
|
|
|
und warum nicht einfach jedes Wort in das Vokabular aufgenommen wird,
|
|
|
-wird in Abschnitt~\ref{sec:vokabularbestimmung} erläutert.\\
|
|
|
+wird in \cref{sec:vokabularbestimmung} erläutert.\\
|
|
|
Nach der Bestimmung des Vokabulars wird für
|
|
|
jedes Wort im Vokabular ein Wortknoten zum Graphen hinzugefügt. Alle
|
|
|
Knoten, die der Graph zuvor hatte, werden nun \enquote{Strukturknoten}
|
|
@@ -53,17 +53,21 @@ tatsächlich die Grapherweiterung:
|
|
|
|
|
|
Dann heißt das zufällige wechseln des aktuell betrachteten
|
|
|
Knoten $v \in V_t$ zu einem benachbartem Knoten $w \in W_t$
|
|
|
- und weiter zu Nachbar von $v' \in V_t$ von $w$
|
|
|
- ein \textbf{inhaltlicher Mehrfachsprung}. $v'$ ist also genau
|
|
|
- einen Sprung über einen Wortknoten $w$ von $v$ entfernt.
|
|
|
+ und weiter zu einem zufälligem Nachbar $v' \in V_t$ von $w$
|
|
|
+ ein \textbf{inhaltlicher Mehrfachsprung}.
|
|
|
\end{definition}
|
|
|
|
|
|
+Jeder inhaltliche Mehrfachsprung beginnt und endet also in einem Strukturknoten,
|
|
|
+springt über einen Wortknoten und ist ein Pfad der Länge~2.
|
|
|
+
|
|
|
+Bevor der DYCOS-Algorithmus im Detail erklärt wird, sei noch auf eine
|
|
|
+Besonderheit hingewiesen:
|
|
|
Der DYCOS-Algorithmus betrachtet die Texte, die einem Knoten
|
|
|
-zugeornet sind, als eine
|
|
|
-Multimenge von Wörtern. Das heißt, zum einen wird nicht auf die
|
|
|
-Reihenfolge der Wörter geachtet, zum anderen wird bei Texten
|
|
|
-eines Knotens nicht zwischen verschiedenen Texten unterschieden.
|
|
|
-Jedoch wird die Anzahl der Vorkommen jedes Wortes berücksichtigt.
|
|
|
+zugeornet sind, als eine Multimenge von Wörtern. Das heißt, zum einen
|
|
|
+wird nicht auf die Reihenfolge der Wörter geachtet, zum anderen wird
|
|
|
+bei Texten eines Knotens nicht zwischen verschiedenen
|
|
|
+Texten unterschieden. Jedoch wird die Anzahl der Vorkommen
|
|
|
+jedes Wortes berücksichtigt.
|
|
|
|
|
|
\subsection{Datenstrukturen}
|
|
|
Zusätzlich zu dem gerichteten Graphen $G_t = (V_t, E_t, V_{L,t})$
|
|
@@ -94,27 +98,32 @@ verwaltet der DYCOS-Algorithmus zwei weitere Datenstrukturen:
|
|
|
\subsection{Der Algorithmus}
|
|
|
Der DYCOS-Algorithmus verwendet nun für jeden Knoten der gelabelt wird
|
|
|
$r$ Random Walks der Länge $l$, wobei mit einer Wahrscheinlichkeit
|
|
|
-$p_S$ ein struktureller $l$-Sprung und mit einer Wahrscheinlichkeit
|
|
|
-von $(1-p_S)$ ein inhaltlicher $l$-Mehrfachsprung gemacht wird.
|
|
|
+$p_S$ ein struktureller Sprung und mit einer Wahrscheinlichkeit
|
|
|
+von $(1-p_S)$ ein inhaltlicher Mehrfachsprung gemacht wird. Dieser
|
|
|
+Parameter gibt an, wie wichtig die Struktur des Graphen im Verhältnis
|
|
|
+zu den textuellen Inhalten ist. Bei $p_S = 0$ werden ausschließlich
|
|
|
+die Texte betrachtet, bei $p_S = 1$ ausschließlich die Struktur des
|
|
|
+Graphen.
|
|
|
|
|
|
Die Vokabularbestimmung kann zu jedem Zeitpunkt $t$ durchgeführt
|
|
|
werden, muss es aber nicht.
|
|
|
|
|
|
-Im Folgenden werde ich den DYCOS-Algorithmus als Pseudocode vorstellen.
|
|
|
-Dafür benötigt man die beiden Hilfsfunktionen für den strukturellen
|
|
|
-Sprung sowie den inhaltlichen Mehrfachsprung:
|
|
|
+In \cref{alg:DYCOS} wurde der DYCOS-Algorithmus als
|
|
|
+Pseudocode vorgestellt. Dafür werden die beiden Hilfsfunktionen
|
|
|
+für den strukturellen Sprung sowie den inhaltlichen Mehrfachsprung
|
|
|
+benötigt.
|
|
|
|
|
|
-\begin{algorithm}[H]
|
|
|
+\begin{algorithm}
|
|
|
\begin{algorithmic}[1]
|
|
|
- \Require \\$\G_t = (\N_t, \A_t, \T_t)$ (Netzwerk),\\
|
|
|
+ \Require \\$G_t = (V_t, E_t, V_{L,t})$ (Netzwerk),\\
|
|
|
$r$ (Anzahl der Random Walks),\\
|
|
|
$l$ (Länge eines Random Walks),\\
|
|
|
$p_s$ (Wahrscheinlichkeit eines strukturellen Sprungs),\\
|
|
|
- $q$ (Anzahl der betrachteten Knoten nach der Aggregatanalyse)
|
|
|
- \Ensure Klassifikation von $\N_t \setminus \T_t$\\
|
|
|
+ $q$ (Anzahl der betrachteten Knoten in der Clusteranalyse)
|
|
|
+ \Ensure Klassifikation von $V_t \setminus V_{L,t}$\\
|
|
|
\\
|
|
|
|
|
|
- \ForAll{Knoten $v$ in $\N_t \setminus \T_t$}
|
|
|
+ \ForAll{Knoten $v$ in $V_t \setminus V_{L,t}$}
|
|
|
\State $d \gets $ defaultdict
|
|
|
\For{$i$ von $1$ bis $r$}
|
|
|
\State $w \gets v$
|
|
@@ -140,7 +149,7 @@ Sprung sowie den inhaltlichen Mehrfachsprung:
|
|
|
\State $label \gets \Call{Random}{M_H}$
|
|
|
\State $v.\Call{AddLabel}{label}$ \Comment{und weise dieses $v$ zu}
|
|
|
\EndFor
|
|
|
- \State \Return Labels für $\N_t \setminus \T_t$
|
|
|
+ \State \Return Labels für $V_t \setminus V_{L,t}$
|
|
|
\end{algorithmic}
|
|
|
\caption{DYCOS-Algorithmus}
|
|
|
\label{alg:DYCOS}
|