Browse Source

starke Überarbeitung

Martin Thoma 12 năm trước cách đây
mục cha
commit
899cd5afe2

+ 49 - 56
documents/DYCOS/DYCOS-Algorithmus.tex

@@ -2,18 +2,15 @@
 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 $v$ gemacht werden und die Labels
-der besuchten Knoten gezählt werden. Das Label, das am häufigsten
+wurde. Er klassifiziert einzelne Knoten, indem $r$ Random Walks der Länge $l$,
+startend bei dem zu klassifizierenden Knoten $v$ gemacht werden. Dabei
+werden die Labels der besuchten Knoten gezählt. Das Label, das am häufigsten
 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}.
-
-Der DYCOS-Algorithmus nimmt jedoch nicht einfach den Graphen für 
-dieses Verfahren, sondern erweitert ihn mit Hilfe der zur Verfügung
-stehenden Texte.
-
+ähnlich sind \cite{bhagat}. Der DYCOS-Algorithmus nimmt jedoch nicht 
+einfach den Graphen für dieses Verfahren, sondern erweitert ihn mit 
+Hilfe der zur Verfügung 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,
@@ -24,6 +21,12 @@ Knoten, die der Graph zuvor hatte, werden nun \enquote{Strukturknoten}
 genannt.
 Ein Strukturknoten $v$ wird genau dann mit einem Wortknoten $w \in W_t$
 verbunden, wenn $w$ in einem Text von $v$ vorkommt.
+Der DYCOS-Algorithmus betrachtet also 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.
 
 \begin{figure}[htp]
     \centering
@@ -43,10 +46,9 @@ die strukturellen Sprünge und inhaltliche Mehrfachsprünge:
     Knoten $v \in V_t$ zu einem benachbartem Knoten $w \in V_t$
     ein \textbf{struktureller Sprung}.
 \end{definition}
-
+\goodbreak
 Im Gegensatz dazu benutzten inhaltliche Mehrfachsprünge
 tatsächlich die Grapherweiterung:
-
 \begin{definition}
     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.
@@ -60,46 +62,13 @@ tatsächlich die Grapherweiterung:
 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.
-
-\subsection{Datenstrukturen}
-Zusätzlich zu dem gerichteten Graphen $G_t = (V_t, E_t, V_{L,t})$ 
-verwaltet der DYCOS-Algorithmus zwei weitere Datenstrukturen:
-\begin{itemize}
-    \item Für jeden Knoten $v \in V_t$ werden die vorkommenden Wörter,
-          die auch im Vokabular $W_t$ sind,
-          und deren Anzahl gespeichert. Das könnte z.~B. über ein 
-          assoziatives Array geschehen. Wörter, die nicht in 
-          Texten von $v$ vorkommen, sind nicht im Array. Für
-          alle vorkommenden Wörter ist der gespeicherte Wert zum 
-          Schlüssel \enquote{Wort} die Anzahl der Vorkommen von 
-          \enquote{Wort} in den Texten von $v$.
-    \item Für jedes Wort des Vokabulars $W_t$ wird eine Liste von 
-          Knoten verwaltet, in deren Texten das Wort vorkommt.
-    \item An einigen Stellen macht ein assoziatives Array, auch 
-          \enquote{dictionary} oder \enquote{map} genannt, sinn.
-          Zustätzlich ist es nützlich, wenn diese Datenstruktur für 
-          unbekannte Schlüssel keinen Fehler ausgibt, sondern für diese
-          Schlüssel den Wert 0 annimmt. Eine solche Datenstruktur
-          wird in Python \texttt{defaultdict} genannt und ich werde
-          im Folgenden diese Benennung beibehalten.
-\end{itemize}
-
-\input{Sprungtypen}
-\input{Vokabularbestimmung}
-
-\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 Sprung und mit einer Wahrscheinlichkeit
-von $(1-p_S)$ ein inhaltlicher Mehrfachsprung gemacht wird. Dieser 
+Ob in einem Sprung der Random Walks ein struktureller Sprung oder
+ein inhaltlicher Mehrfachsprung gemacht wird, wird jedes mal zufällig
+neu entschiden. 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
+Sprung durchgefürt und mit einer Wahrscheinlichkeit
+von $(1-p_S)$ ein modifizierter inhaltlicher Mehrfachsprung, wie er in
+\cref{sec:sprungtypen} erklärt wird, gemacht. 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
@@ -108,14 +77,12 @@ Graphen.
 Die Vokabularbestimmung kann zu jedem Zeitpunkt $t$ durchgeführt 
 werden, muss es aber nicht.
 
-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.
+In \cref{alg:DYCOS} wird der DYCOS-Algorithmus als 
+Pseudocode vorgestellt.
 
 \begin{algorithm}
     \begin{algorithmic}[1]
-        \Require \\$G_t = (V_t, E_t, V_{L,t})$ (Netzwerk),\\
+        \Require \\$G_{E,t} = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_t)$ (Erweiterter Graph),\\
                  $r$ (Anzahl der Random Walks),\\
                  $l$ (Länge eines Random Walks),\\
                  $p_s$ (Wahrscheinlichkeit eines strukturellen Sprungs),\\
@@ -154,3 +121,29 @@ benötigt.
 \caption{DYCOS-Algorithmus}
 \label{alg:DYCOS}
 \end{algorithm}
+
+\subsection{Datenstrukturen}
+Zusätzlich zu dem gerichteten Graphen $G_t = (V_t, E_t, V_{L,t})$ 
+verwaltet der DYCOS-Algorithmus zwei weitere Datenstrukturen:
+\begin{itemize}
+    \item Für jeden Knoten $v \in V_t$ werden die vorkommenden Wörter,
+          die auch im Vokabular $W_t$ sind,
+          und deren Anzahl gespeichert. Das könnte z.~B. über ein 
+          assoziatives Array geschehen. Wörter, die nicht in 
+          Texten von $v$ vorkommen, sind nicht im Array. Für
+          alle vorkommenden Wörter ist der gespeicherte Wert zum 
+          Schlüssel \enquote{Wort} die Anzahl der Vorkommen von 
+          \enquote{Wort} in den Texten von $v$.
+    \item Für jedes Wort des Vokabulars $W_t$ wird eine Liste von 
+          Knoten verwaltet, in deren Texten das Wort vorkommt.
+    \item An einigen Stellen macht ein assoziatives Array, auch 
+          \enquote{dictionary} oder \enquote{map} genannt, sinn.
+          Zustätzlich ist es nützlich, wenn diese Datenstruktur für 
+          unbekannte Schlüssel keinen Fehler ausgibt, sondern für diese
+          Schlüssel den Wert 0 annimmt. Eine solche Datenstruktur
+          wird in Python \texttt{defaultdict} genannt und ich werde
+          im Folgenden diese Benennung beibehalten.
+\end{itemize}
+
+\input{Sprungtypen}
+\input{Vokabularbestimmung}

BIN
documents/DYCOS/DYCOS.pdf


+ 1 - 0
documents/DYCOS/DYCOS.tex

@@ -28,6 +28,7 @@
 \usepackage{tikz}
 \usepackage{enumitem}
 \usepackage[german,nameinlink]{cleveref}
+\usepackage{braket}
 \allowdisplaybreaks
 \usetikzlibrary{backgrounds}
 \usepackage{mystyle}

+ 21 - 16
documents/DYCOS/SchwaechenVerbesserungen.tex

@@ -4,7 +4,7 @@ vorgeschlagen, die es allerdings noch zu untersuchen gilt.
 
 \subsection{Schwächen von DYCOS}
 \subsubsection{Anzahl der Labels}
-So, wie er vorgestellt wurde, können nur Graphen bearbeitet werden, 
+So, wie der DYCOS-Algorithmus vorgestellt wurde, können nur Graphen bearbeitet werden, 
 deren Knoten höchstens ein Label haben. In vielen Fällen, wie z.~B. 
 Wikipedia mit Kategorien als Labels haben Knoten jedoch viele Labels.
 
@@ -24,18 +24,18 @@ zählen.
 
 \subsubsection{Überanpassung und Reklassifizierung}
 Aggarwal und Li beschreiben in \cite{aggarwal2011} nicht, auf welche
-Knoten der Klassifizierungsalgorithmus angewand werden soll. Jedoch
+Knoten der Klassifizierungsalgorithmus angewendet werden soll. Jedoch
 ist die Reihenfolge der Klassifizierung relevant. Dazu folgendes 
-minimale Beispiel:
+Minimalbeispiel:
 
 Gegeben sei ein dynamischer Graph ohne textuelle Inhalte. Zum Zeitpunkt
 $t=1$ habe dieser Graph genau einen Knoten $v_1$ und $v_1$  sei
 mit dem Label $A$ beschriftet. Zum Zeitpunkt $t=2$ komme ein nicht-gelabelter
-Knoten $v_2$ sowie die Kante $(v_1, v_2)$ hinzu.\\
+Knoten $v_2$ sowie die Kante $(v_2, v_1)$ hinzu.\\
 Nun wird der DYCOS-Algorithmus auf diesen Knoten angewendet und
 $v_2$ mit $A$ gelabelt.\\
 Zum Zeitpunkt $t=3$ komme ein Knoten $v_3$, der mit $B$ gelabelt ist,
-und die Kante $(v_3, v_2)$ hinzu.
+und die Kante $(v_2, v_3)$ hinzu.
 
 \begin{figure}[ht]
     \centering
@@ -52,6 +52,10 @@ und die Kante $(v_3, v_2)$ hinzu.
         \input{figures/graph-t3.tex}
         \label{fig:graph-t3}
     }%
+    \subfloat[$t=4$]{
+        \input{figures/graph-t4.tex}
+        \label{fig:graph-t4}
+    }%
     \label{Formen}
     \caption{Minimalbeispiel für den Einfluss früherer DYCOS-Anwendungen}
 \end{figure}
@@ -66,7 +70,7 @@ Knoten einfügt:
 
 Wird zum Zeitpunkt $t=4$ ein ungelabelter Knoten $v_4$ und die Kanten
 $(v_1, v_4)$, $(v_2, v_4)$, $(v_3, v_4)$ hinzugefügt, so ist die 
-Wahrscheinlichkeit, dass $v_4$ mit $A$ gelabelt wird bei $75\%$.
+Wahrscheinlichkeit, dass $v_4$ mit $A$ gelabelt wird bei $\frac{2}{3}$.
 Werden die als ungelabelten Knoten jedoch erst jetzt und alle gemeinsam
 gelabelt, so ist die Wahrscheinlichkeit für $A$ als Label bei nur $50\%$.
 Bei dem DYCOS-Algorithmus findet also eine Überanpassung and vergangene
@@ -78,16 +82,17 @@ könnten eine Lebenszeit bekommen (TTL, Time to Live). Ist diese
 abgelaufen, wird der DYCOS-Algorithmus erneut auf den Knoten angewendet.
 
 \subsection{Schwächen des Papers}
-Die Ergebnise der experimentelle Analyse können aus folgenden Gründen
+In \cite{aggarwal2011} wurde eine experimentelle Analyse mithilfe 
+des DBLP-Datensatzes\footnote{http://dblp.uni-trier.de/} und des
+CORA-Datensatzes\footnote{\href{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}} durchgeführt.
+Die Ergebnise dieser Analyse können aus folgenden Gründen
 nicht überprüft werden:
 \begin{itemize}
-    \item DYCOS verwendet als Vokabular die Top-$m$-Wörter mit dem
-          höchsten Gini-Index aus einer Sample-Menge von Texten, die
-          wie in \cite{Vitter} beschrieben
-          erzeugt wird. Allerdings wird niemals erklärt, wie $m \in \mathbb{N}$
-          bestimmt wird. Es ist nicht einmal klar, ob $m$ für den
-          Algorithmus als konstant anzusehen ist oder ob $m$ sich
-          bei der Vokabularbestimmung ändern könnte.
+    \item Der Parameter $a \in \mathbb{N}$, der die Anzahl der ausgehenden Kanten
+          aller Wortknoten beschränkt, wird erst mit der Experimentellen
+          Analyse auf S.~362 eingeführt.
+          Es ist nicht klar, wie entschieden wird welche Kanten
+          gespeichert werden und welche nicht.
     \item DYCOS beschränkt sich bei inhaltlichen Mehrfachsprüngen
           auf die Top-$q$-Wortknoten, also die $q$ ähnlichsten Knoten
           gemessen mit der Aggregatanalyse. Auch hier wird nicht erklärt wie
@@ -95,10 +100,10 @@ nicht überprüft werden:
           wurde. Allerings ist hier wenigstens klar, dass $q$ für
           den DYCOS-Algorithmus konstant ist. Für die Experimentelle
           Analyse wurde zwar erwähnt, dass $q$ ein Parameter des
-          Algorithmus ist\cite[S. 362]{aggarwal2011}, aber nicht welcher
+          Algorithmus ist \cite[S. 362]{aggarwal2011}, aber nicht welcher
           Wert in der Analyse des DBLP-Datensatzes genutzt wurde.
           Für den CORA-Datensatz wurde $q=10$ gewählt\cite[S. 364]{aggarwal2011}.
-    \item Für die Analyse der CORA-Datensatzes\footnote{inzwischen unter \href{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}} analysiert.
+    \item Für die Analyse der CORA-Datensatzes analysiert.
           Dieser beinhaltet Forschungsarbeiten, wobei die 
           Forschungsgebiete die in einen Baum mit 73 Blättern 
           eingeordnet wurden. Aus diesen 73 Blättern wurden 5 Klassen

+ 1 - 1
documents/DYCOS/Sprungtypen.tex

@@ -1,4 +1,4 @@
-\subsection{Sprungtypen}
+\subsection{Sprungtypen}\label{sec:sprungtypen}
 Die beiden bereits definierten Sprungtypen, der strukturelle Sprung
 sowie der inhaltliche Mehrfachsprung werden im folgenden erklärt.
 \goodbreak

+ 7 - 1
documents/DYCOS/Vokabularbestimmung.tex

@@ -3,7 +3,13 @@ Da die größe des Vokabulars die Datenmenge signifikant beeinflusst,
 liegt es in unserem Interesse so wenig Wörter wie möglich ins
 Vokabular aufzunehmen. Insbesondere sind Wörter nicht von Interesse,
 die in fast allen Texten vorkommen, wie im Deutschen z.~B.
-\enquote{und}, \enquote{mit} und die Pronomen.
+\enquote{und}, \enquote{mit} und die Pronomen. Es ist wünschenswert
+Wörter zu wählen, die die Texte möglichst start voneinander Unterscheiden.
+Der DYCOS-Algorithmus wählt die Top-$m$ dieser Wörter als Vokabular,
+wobei $m \in \mathbb{N}$ eine Festzulegende Konstante ist. In \cite[S. 365]{aggarwal2011}
+wird der Einfluss von $m \in \Set{5,10, 20}$ auf die Klassifikationsgüte
+untersucht und festegestellt, dass für $m \in \Set{5,10}$ die Klassifikationsgüte 
+sehr ähnlich ist.
 
 Nun kann man manuell eine Liste von zu beachtenden Wörtern erstellen
 oder mit Hilfe des Gini-Koeffizienten automatisch ein Vokabular erstellen.

+ 1 - 1
documents/DYCOS/figures/graph-t2.tex

@@ -3,6 +3,6 @@
 \begin{tikzpicture}[scale=1,framed]
     \node (a)[vertex,label=$A$] at (0,0) {$v_1$};
     \node (b)[vertex,label={\color{blue}$A$}] at (1,0) {$v_2$};
-    \draw[->] (a) -- (b);
+    \draw[->] (b) -- (a);
     \node (struktur)[label={[label distance=-0.2cm]0:$t=2$}] at (-2,1) {};
 \end{tikzpicture}

+ 2 - 2
documents/DYCOS/figures/graph-t3.tex

@@ -4,7 +4,7 @@
     \node (a)[vertex,label=$A$] at (0,0) {$v_1$};
     \node (b)[vertex,label={\color{blue}$A$}] at (1,0) {$v_2$};
     \node (c)[vertex,label=$B$] at (2,0) {$v_3$};
-    \draw[->] (a) -- (b);
-    \draw[->] (c) -- (b);
+    \draw[->] (b) -- (a);
+    \draw[->] (b) -- (c);
     \node (struktur)[label={[label distance=-0.2cm]0:$t=3$}] at (-1,1) {};
 \end{tikzpicture}

+ 15 - 0
documents/DYCOS/figures/graph-t4.tex

@@ -0,0 +1,15 @@
+\tikzstyle{vertex}=[draw,black,circle,minimum size=10pt,inner sep=0pt]
+\tikzstyle{edge}=[very thick]
+\begin{tikzpicture}[scale=1,framed]
+    \node (a)[vertex,label=$A$] at (0,0) {$v_1$};
+    \node (b)[vertex,label=45:{\color{blue}$A$}] at (1,0) {$v_2$};
+    \node (c)[vertex,label=$B$] at (2,0) {$v_3$};
+    \node (d)[vertex] at (1,1) {$v_4$};
+    \draw[->] (b) -- (a);
+    \draw[->] (b) -- (c);
+
+    \draw[->] (d) -- (a);
+    \draw[->] (d) -- (b);
+    \draw[->] (d) -- (c);
+    \node (struktur)[label={[label distance=-0.2cm]0:$t=3$}] at (-1,1) {};
+\end{tikzpicture}