瀏覽代碼

almost 5 pages

Martin Thoma 12 年之前
父節點
當前提交
5e142116aa

+ 7 - 4
documents/DYCOS/Abgrenzung.tex

@@ -1,5 +1,8 @@
-Es gibt viele Knotenklassifizierungsalgorithmen. Im folgenden
-werden einige von Ihnen mit dem DYCOS-Algorithmus verglichen und
-unterschiedliche Eigenschaften der Algorithmen hervorgehoben.
+Der in diesem Artikel vorgestellte DYCOS-Algorithmus wurde 2011 von
+Charu~C. Aggarwal und Nan~Li in \cite{aggarwal2011} vorgestellt.
+Es gibt jedoch viele Klassifizierungsalgorithmen, die ähnliche Ideen
+nutzen. Einige dieser Algorithmen werden im Folgenden kurz vorgestellt
+und Probleme, die der DYCOS-Algorithmus behebt, erläutert.
 
 
-Der MUCCA-Algorithmus aus \cite{zappella} sei der erste.
+Der MUCCA-Algorithmus aus \cite{zappella} sei der erste. Dieser
+arbeitet auf gewichteten Graphen, im Gegensatz zu DYCOS.

+ 92 - 4
documents/DYCOS/DYCOS-Algorithmus.tex

@@ -1,5 +1,93 @@
-\subsection{Notation}
-\input{Notation}
+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.
 
 
-\subsection{Inhalte}
-\input{Inhalte}
+Sie im Folgenden die Notation wie in Definition~\ref{def:Knotenklassifizierungsproblem}.
+
+Der DYCOS-Algorithmus betrachtet Texte als eine Menge von Wörter, 
+die Reihenfolge der Wörter im Text spielt also keine Rolle. Außerdem
+werden nicht alle Wörter benutzt, sondern nur solche die auch in 
+einem festgelegtem Vokabular vorkommen. Wie dieses Vokabular bestimmt
+werden kann, wird in Abschnitt~\ref{sec:vokabularbestimmung} erklärt.
+
+Zusätzlich zu dem Netzwerk verwalltet der DYCOS-Algorithmus für jeden
+Knoten eine Liste von Wörtern. Diese Wörter stammen aus den Texten,
+die dem Knoten zugeordnet sind.
+
+Für jedes Wort des Vokabulars wird eine Liste von Knoten verwaltet, 
+in deren Texten das Wort vorkommt.
+
+Ein $l$-Sprung ist ein ein Random Walk, bei dem $l$
+Knoten besucht werden, die nicht verschieden sein müssen. Ein 
+$l$-Sprung heißt strukturell, wenn er ausschließlich die Kanten
+des Netzwerks für jeden der $l$ Schritte benutzt.
+
+Ein $l$-Sprung heißt inhaltlich, wenn er die Wörter benutzt.
+
+\begin{algorithm}[h]
+    \begin{algorithmic}
+        \Require \\$\G_t = (\N_t, \A_t, \T_t)$ (Netzwerk),\\
+                 $r$ (Anzahl der Random Walks),\\
+                 $l$ (Länge eines Random Walks),\\
+                 $p_s$ (Wahrscheinlichkeit eines strukturellen Sprungs)
+        \Ensure  Klassifikation von $\N_t \setminus \T_t$\\
+
+        \ForAll{Knoten $v$ in $\N_t \setminus \T_t$}
+            \For{$i$ von $1$ bis $l$}
+                \State $sprungTyp \gets \Call{random}{0.0, 1.0}$
+                \If{$sprungTyp \leq p_s$}
+                    \State Strukturellen $l$-Sprung ausführen
+                \Else
+                    \State Inhaltlichen $l$-Sprung ausführen
+                \EndIf
+            \EndFor
+        \EndFor
+        \State \Return Labels für $\N_t \setminus \T_t$
+    \end{algorithmic}
+\caption{DYCOS-Algorithmus}
+\label{alg:DYCOS}
+\end{algorithm}
+
+\subsection{Vokabularbestimmung}\label{sec:vokabularbestimmung}
+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.
+
+Nun kann man manuell eine Liste von zu beachtenden Wörtern erstellen
+oder mit Hilfe des Gini-Koeffizienten automatisch ein Vokabular erstellen.
+Der Gini-Koeffizient ist ein statistisches Maß, das die Ungleichverteilung
+bewertet. Er ist immer im Intervall $[0,1]$, wobei $0$ einer 
+Gleichverteilung entspricht und $1$ der größt möglichen Ungleichverteilung.
+
+Sei nun $n_i(w)$ die Häufigkeit des Wortes $w$ in allen Texten mit 
+dem $i$-ten Label.
+\todo{darf ich hier im Nenner 1 addieren?}
+\begin{align}
+    p_i(w) &:= \frac{n_i(w)}{\sum_{j=1}^{|\L_t|} n_j(w)} &\text{(Relative Häufigkeit des Wortes $w$)}\\
+    G(w)   &:= \sum_{j=1}^{|\L_t|} p_j(w)^2              &\text{(Gini-Koeffizient von $w$)}
+\end{align}
+In diesem Fall ist $G(w)=0$ nicht möglich, da zur Vokabularbestimmung
+nur Wörter betrachtet werden, die auch vorkommen.
+
+\begin{algorithm}[h]
+    \begin{algorithmic}
+        \Require \\
+                 $\T_t$ (Knoten mit Labels),\\
+                 $\L_t$ (Labels),\\
+                 $f:\T_t \rightarrow \L_t$ (Label-Funktion),\\
+                 $m$ (Gewünschte Vokabulargröße)
+        \Ensure  $\M_t$ (Vokabular)\\
+
+        \State $S_t \gets \Call{Sample}{\T_t}$ \Comment{Wähle eine Teilmenge $S_t \subseteq \T_t$ aus}
+        \State $\M_t \gets \bigcup_{v \in S_t} \Call{getText}{v}$
+        \ForAll{Wort $w \in \M_t$}
+            \State $w$.gini $\gets$ 
+        \EndFor
+        \State \Return $\M_t$
+    \end{algorithmic}
+\caption{Vokabularbestimmung}
+\label{alg:vokabularbestimmung}
+\end{algorithm}

+ 7 - 4
documents/DYCOS/DYCOS.tex

@@ -1,10 +1,10 @@
 \documentclass[runningheads]{llncs}
 \documentclass[runningheads]{llncs}
 
 
 %---- Sonderzeichen-------%
 %---- Sonderzeichen-------%
-\usepackage {ngerman}
+\usepackage[utf8]{inputenc} % this is needed for umlauts
+\usepackage[ngerman]{babel} % this is needed for umlauts
+\usepackage[T1]{fontenc}    % this is needed for correct output of umlauts in pdf
 %---- Codierung----%
 %---- Codierung----%
-\usepackage[utf8]{inputenc}	% for Unix and Windows
-\usepackage[T1]{fontenc}
 \usepackage{graphicx}
 \usepackage{graphicx}
 \usepackage{url}
 \usepackage{url}
 \usepackage{llncsdoc}
 \usepackage{llncsdoc}
@@ -20,13 +20,16 @@
 \usepackage{cite}
 \usepackage{cite}
 \usepackage{parskip}
 \usepackage{parskip}
 \usepackage[framed,amsmath,thmmarks,hyperref]{ntheorem}
 \usepackage[framed,amsmath,thmmarks,hyperref]{ntheorem}
+\usepackage{algorithm,algpseudocode}
+\usepackage{csquotes}
+\usepackage[colorinlistoftodos]{todonotes}
 \usepackage{mystyle}
 \usepackage{mystyle}
 
 
 \setcounter{tocdepth}{3}
 \setcounter{tocdepth}{3}
 \setcounter{secnumdepth}{3}
 \setcounter{secnumdepth}{3}
 
 
 \hypersetup{ 
 \hypersetup{ 
-  pdftitle    = {"Uber die Klassifizierung von Knoten in dynamischen Netzwerken mit Inhalt},
+  pdftitle    = {\"Uber die Klassifizierung von Knoten in dynamischen Netzwerken mit Inhalt},
   pdfauthor   = {Martin Thoma}, 
   pdfauthor   = {Martin Thoma}, 
   pdfkeywords = {DYCOS}
   pdfkeywords = {DYCOS}
 }
 }

+ 4 - 5
documents/DYCOS/Einleitung.tex

@@ -14,8 +14,8 @@ Das Knotenklassifierungsproblem sei wie folgt definiert:\\
 \begin{definition}[Knotenklassifierungsproblem]\label{def:Knotenklassifizierungsproblem}
 \begin{definition}[Knotenklassifierungsproblem]\label{def:Knotenklassifizierungsproblem}
     Sei $\G_t = (\N_t, \A_t, \T_t)$ ein Netzwerk,
     Sei $\G_t = (\N_t, \A_t, \T_t)$ ein Netzwerk,
     wobei $\N_t$ die Menge aller Knoten,
     wobei $\N_t$ die Menge aller Knoten,
-    $\A_t$ die Kantenmenge und $\T_t \subseteq \N_t$ die Menge Knoten mit Labels 
-    jeweils zum Zeitpunkt $t$ bezeichne.
+    $\A_t$ die Kantenmenge und $\T_t \subseteq \N_t$ die Menge der 
+    gelabelten Knoten jeweils zum Zeitpunkt $t$ bezeichne.
     Außerdem sei $\L_t$ die Menge aller zum Zeitpunkt $t$ vergebenen
     Außerdem sei $\L_t$ die Menge aller zum Zeitpunkt $t$ vergebenen
     Labels und $f:\T_t \rightarrow \L_t$ die Funktion, die einen
     Labels und $f:\T_t \rightarrow \L_t$ die Funktion, die einen
     Knoten auf sein Label abbildet.
     Knoten auf sein Label abbildet.
@@ -34,9 +34,8 @@ textuelle Inhalte, die Knoten zugeornet werden.
 Die beispielhaft aufgeführen Netzwerke sind viele 
 Die beispielhaft aufgeführen Netzwerke sind viele 
 $\num{10000}$~Knoten groß und dynamisch. Das bedeutet, es kommen
 $\num{10000}$~Knoten groß und dynamisch. Das bedeutet, es kommen
 neue Knoten und eventuell auch neue Kanten hinzu bzw. Kanten oder
 neue Knoten und eventuell auch neue Kanten hinzu bzw. Kanten oder
-Knoten werden entfernt.Außerdem stehen 
-textuelle Inhalte zu den Knoten bereit, die bei der Klassifikation 
-genutzt werden können.
+Knoten werden entfernt. Außerdem stehen textuelle Inhalte zu den 
+Knoten bereit, die bei der Klassifikation genutzt werden können.
 
 
 Der DYCOS-Algorithmus nutzt diese und kann auf große, dynamische
 Der DYCOS-Algorithmus nutzt diese und kann auf große, dynamische
 Netzwerken angewandt werden.
 Netzwerken angewandt werden.

+ 0 - 1
documents/DYCOS/Inhalte.tex

@@ -1 +0,0 @@
-Die Texte

+ 1 - 1
documents/DYCOS/Makefile

@@ -13,4 +13,4 @@ ebook:
 	ebook-convert $(DOKUMENT).html $(DOKUMENT).epub --language de --no-default-epub-cover
 	ebook-convert $(DOKUMENT).html $(DOKUMENT).epub --language de --no-default-epub-cover
 
 
 clean:
 clean:
-	rm -rf  $(TARGET) *.class *.html *.log *.aux *.out *.thm *.idx *.toc *.ind *.ilg *.glg *.glo *.gls *.ist *.xdy
+	rm -rf  $(TARGET) *.class *.html *.log *.aux *.out *.thm *.idx *.toc *.ind *.ilg *.glg *.glo *.gls *.ist *.xdy *.bbl *.blg

+ 0 - 3
documents/DYCOS/Notation.tex

@@ -1,3 +0,0 @@
-Im folgenden sei $\nodes$ die Menge der Knoten zum Zeitpunkt
-$t$, $\labeledNodes \subseteq \nodes$ die Menge der Knoten
-mit Label, $\edges$ die Kantenmenge.

+ 26 - 0
documents/DYCOS/literatur.bib

@@ -10,3 +10,29 @@
   eprintclass = {cs.LG, cs.GT},
   eprintclass = {cs.LG, cs.GT},
   eprint      = {http://arxiv.org/abs/1112.4344v1}
   eprint      = {http://arxiv.org/abs/1112.4344v1}
 }
 }
+
+@inproceedings{aggarwal2011,
+  author    = {Charu C. Aggarwal and
+               Nan Li},
+  title     = {On Node Classification in Dynamic Content-based Networks},
+  booktitle = {SDM},
+  year      = {2011},
+  pages     = {355-366},
+  ee        = {http://siam.omnibooksonline.com/2011datamining/data/papers/033.pdf\#page=1},
+  crossref  = {aggarwal2011},
+  bibsource = {DBLP, http://dblp.uni-trier.de}
+}
+
+@book{DBLP:series/ads/2010-40,
+  editor    = {Charu C. Aggarwal and
+               Haixun Wang},
+  title     = {Managing and Mining Graph Data},
+  booktitle = {Managing and Mining Graph Data},
+  publisher = {Springer},
+  series    = {Advances in Database Systems},
+  volume    = {40},
+  year      = {2010},
+  isbn      = {978-1-4419-6044-3},
+  ee        = {http://dx.doi.org/10.1007/978-1-4419-6045-0},
+  bibsource = {DBLP, http://dblp.uni-trier.de}
+}

+ 5 - 0
documents/DYCOS/mystyle.sty

@@ -15,5 +15,10 @@
 \def\A{\ensuremath{\mathcal{A}}}
 \def\A{\ensuremath{\mathcal{A}}}
 \def\G{\ensuremath{\mathcal{G}}}
 \def\G{\ensuremath{\mathcal{G}}}
 \def\L{\ensuremath{\mathcal{L}}}
 \def\L{\ensuremath{\mathcal{L}}}
+\def\M{\ensuremath{\mathcal{M}}}
 \def\N{\ensuremath{\mathcal{N}}}
 \def\N{\ensuremath{\mathcal{N}}}
 \def\T{\ensuremath{\mathcal{T}}}
 \def\T{\ensuremath{\mathcal{T}}}
+
+\renewcommand{\algorithmicrequire}{\textbf{Input:}}
+\renewcommand{\algorithmicensure}{\textbf{Output:}}
+\renewcommand{\algorithmicforall}{\textbf{for each}}