2
0
Fork 0
mirror of https://github.com/MartinThoma/LaTeX-examples.git synced 2025-04-24 22:08:04 +02:00

almost 5 pages

This commit is contained in:
Martin Thoma 2013-12-27 15:16:41 +01:00
parent 42d7ba22d3
commit 5e142116aa
9 changed files with 142 additions and 22 deletions

View file

@ -1,5 +1,8 @@
Es gibt viele Knotenklassifizierungsalgorithmen. Im folgenden Der in diesem Artikel vorgestellte DYCOS-Algorithmus wurde 2011 von
werden einige von Ihnen mit dem DYCOS-Algorithmus verglichen und Charu~C. Aggarwal und Nan~Li in \cite{aggarwal2011} vorgestellt.
unterschiedliche Eigenschaften der Algorithmen hervorgehoben. 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.

View file

@ -1,5 +1,93 @@
\subsection{Notation} DYCOS (\underline{DY}namic \underline{C}lassification
\input{Notation} algorithm with c\underline{O}ntent and \underline{S}tructure) ist ein
Knotenklassifizierungsalgorithmus, der Ursprünglich in \cite{aggarwal2011} vorgestellt
wurde.
\subsection{Inhalte} Sie im Folgenden die Notation wie in Definition~\ref{def:Knotenklassifizierungsproblem}.
\input{Inhalte}
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}

View file

@ -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}
} }

View file

@ -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 $\A_t$ die Kantenmenge und $\T_t \subseteq \N_t$ die Menge der
jeweils zum Zeitpunkt $t$ bezeichne. 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 Knoten werden entfernt. Außerdem stehen textuelle Inhalte zu den
textuelle Inhalte zu den Knoten bereit, die bei der Klassifikation Knoten bereit, die bei der Klassifikation genutzt werden können.
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.

View file

@ -1 +0,0 @@
Die Texte

View file

@ -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

View file

@ -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.

View file

@ -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}
}

View file

@ -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}}