From 5e142116aadde1eb1926b2f53581247a1428ade2 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Fri, 27 Dec 2013 15:16:41 +0100 Subject: [PATCH] almost 5 pages --- documents/DYCOS/Abgrenzung.tex | 11 +-- documents/DYCOS/DYCOS-Algorithmus.tex | 96 +++++++++++++++++++++++++-- documents/DYCOS/DYCOS.tex | 11 +-- documents/DYCOS/Einleitung.tex | 9 ++- documents/DYCOS/Inhalte.tex | 1 - documents/DYCOS/Makefile | 2 +- documents/DYCOS/Notation.tex | 3 - documents/DYCOS/literatur.bib | 26 ++++++++ documents/DYCOS/mystyle.sty | 5 ++ 9 files changed, 142 insertions(+), 22 deletions(-) delete mode 100644 documents/DYCOS/Inhalte.tex delete mode 100644 documents/DYCOS/Notation.tex diff --git a/documents/DYCOS/Abgrenzung.tex b/documents/DYCOS/Abgrenzung.tex index f3009c3..79b10d5 100644 --- a/documents/DYCOS/Abgrenzung.tex +++ b/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. diff --git a/documents/DYCOS/DYCOS-Algorithmus.tex b/documents/DYCOS/DYCOS-Algorithmus.tex index 3e157bf..c3bcb6f 100644 --- a/documents/DYCOS/DYCOS-Algorithmus.tex +++ b/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} diff --git a/documents/DYCOS/DYCOS.tex b/documents/DYCOS/DYCOS.tex index 6f9130e..3a41389 100644 --- a/documents/DYCOS/DYCOS.tex +++ b/documents/DYCOS/DYCOS.tex @@ -1,10 +1,10 @@ \documentclass[runningheads]{llncs} %---- 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----% -\usepackage[utf8]{inputenc} % for Unix and Windows -\usepackage[T1]{fontenc} \usepackage{graphicx} \usepackage{url} \usepackage{llncsdoc} @@ -20,13 +20,16 @@ \usepackage{cite} \usepackage{parskip} \usepackage[framed,amsmath,thmmarks,hyperref]{ntheorem} +\usepackage{algorithm,algpseudocode} +\usepackage{csquotes} +\usepackage[colorinlistoftodos]{todonotes} \usepackage{mystyle} \setcounter{tocdepth}{3} \setcounter{secnumdepth}{3} \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}, pdfkeywords = {DYCOS} } diff --git a/documents/DYCOS/Einleitung.tex b/documents/DYCOS/Einleitung.tex index c4c9683..6847f48 100644 --- a/documents/DYCOS/Einleitung.tex +++ b/documents/DYCOS/Einleitung.tex @@ -14,8 +14,8 @@ Das Knotenklassifierungsproblem sei wie folgt definiert:\\ \begin{definition}[Knotenklassifierungsproblem]\label{def:Knotenklassifizierungsproblem} Sei $\G_t = (\N_t, \A_t, \T_t)$ ein Netzwerk, 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 Labels und $f:\T_t \rightarrow \L_t$ die Funktion, die einen Knoten auf sein Label abbildet. @@ -34,9 +34,8 @@ textuelle Inhalte, die Knoten zugeornet werden. Die beispielhaft aufgeführen Netzwerke sind viele $\num{10000}$~Knoten groß und dynamisch. Das bedeutet, es kommen 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 Netzwerken angewandt werden. diff --git a/documents/DYCOS/Inhalte.tex b/documents/DYCOS/Inhalte.tex deleted file mode 100644 index 9cdebae..0000000 --- a/documents/DYCOS/Inhalte.tex +++ /dev/null @@ -1 +0,0 @@ -Die Texte diff --git a/documents/DYCOS/Makefile b/documents/DYCOS/Makefile index 7c77f4d..f37e77b 100644 --- a/documents/DYCOS/Makefile +++ b/documents/DYCOS/Makefile @@ -13,4 +13,4 @@ ebook: ebook-convert $(DOKUMENT).html $(DOKUMENT).epub --language de --no-default-epub-cover 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 diff --git a/documents/DYCOS/Notation.tex b/documents/DYCOS/Notation.tex deleted file mode 100644 index 58acf2f..0000000 --- a/documents/DYCOS/Notation.tex +++ /dev/null @@ -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. diff --git a/documents/DYCOS/literatur.bib b/documents/DYCOS/literatur.bib index d9302b9..cace903 100644 --- a/documents/DYCOS/literatur.bib +++ b/documents/DYCOS/literatur.bib @@ -10,3 +10,29 @@ eprintclass = {cs.LG, cs.GT}, 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} +} diff --git a/documents/DYCOS/mystyle.sty b/documents/DYCOS/mystyle.sty index 768c427..740d747 100644 --- a/documents/DYCOS/mystyle.sty +++ b/documents/DYCOS/mystyle.sty @@ -15,5 +15,10 @@ \def\A{\ensuremath{\mathcal{A}}} \def\G{\ensuremath{\mathcal{G}}} \def\L{\ensuremath{\mathcal{L}}} +\def\M{\ensuremath{\mathcal{M}}} \def\N{\ensuremath{\mathcal{N}}} \def\T{\ensuremath{\mathcal{T}}} + +\renewcommand{\algorithmicrequire}{\textbf{Input:}} +\renewcommand{\algorithmicensure}{\textbf{Output:}} +\renewcommand{\algorithmicforall}{\textbf{for each}}