mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-26 06:48:04 +02:00
renaming
This commit is contained in:
parent
ca456c4f5e
commit
177d17e7a3
25 changed files with 1 additions and 1 deletions
2
documents/Proseminar-Netzwerkanalyse/.gitignore
vendored
Normal file
2
documents/Proseminar-Netzwerkanalyse/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
data/cora
|
||||
data/dblp
|
44
documents/Proseminar-Netzwerkanalyse/Analyse.tex
Normal file
44
documents/Proseminar-Netzwerkanalyse/Analyse.tex
Normal file
|
@ -0,0 +1,44 @@
|
|||
Für den DYCOS-Algorithmus wurde in \cite{aggarwal2011} bewiesen,
|
||||
dass sich nach Ausführung von DYCOS für einen unbeschrifteten
|
||||
Knoten mit einer Wahrscheinlichkeit von höchstens
|
||||
$(|\L_t|-1)\cdot e^{-l \cdot b^2 / 2}$ eine Knotenbeschriftung ergibt, deren
|
||||
relative Häufigkeit weniger als $b$ der häufigsten Beschriftung ist.
|
||||
Dabei ist $|\L_t|$ die Anzahl der Beschriftungen und $l$ die Länge der
|
||||
Random-Walks.
|
||||
|
||||
Außerdem wurde experimentell anhand des DBLP-Datensatzes\footnote{http://dblp.uni-trier.de/}
|
||||
und des CORA-Datensatzes\footnote{http://people.cs.umass.edu/~mccallum/data/cora-classify.tar.gz}
|
||||
gezeigt (vgl. \cref{tab:datasets}), dass die Klassifikationsgüte nicht wesentlich von der Anzahl der Wörter mit
|
||||
höchstem Gini-Koeffizient $m$ abhängt. Des Weiteren betrug die Ausführungszeit
|
||||
auf einem Kern eines Intel Xeon $\SI{2.5}{\GHz}$ Servers mit
|
||||
$\SI{32}{\giga\byte}$ RAM für den DBLP-Datensatz unter $\SI{25}{\second}$,
|
||||
für den CORA-Datensatz sogar unter $\SI{5}{\second}$. Dabei wurde eine
|
||||
für CORA eine Klassifikationsgüte von 82\% - 84\% und auf den DBLP-Daten
|
||||
von 61\% - 66\% erreicht.
|
||||
|
||||
\begin{table}[htp]
|
||||
\centering
|
||||
\begin{tabular}{|l||r|r|r|r|}\hline
|
||||
\textbf{Name} & \textbf{Knoten} & \textbf{davon beschriftet} & \textbf{Kanten} & \textbf{Beschriftungen} \\ \hline\hline
|
||||
\textbf{CORA} & \num{19396} & \num{14814} & \num{75021} & 5 \\
|
||||
\textbf{DBLP} & \num{806635} & \num{18999 } & \num{4414135} & 5 \\\hline
|
||||
\end{tabular}
|
||||
\caption{Datensätze, die für die experimentelle analyse benutzt wurden}
|
||||
\label{tab:datasets}
|
||||
\end{table}
|
||||
|
||||
Obwohl es sich nicht sagen lässt,
|
||||
wie genau die Ergebnisse aus \cite{aggarwal2011} zustande gekommen sind,
|
||||
eignet sich das Kreuzvalidierungsverfahren zur Bestimmung der Klassifikationsgüte
|
||||
wie es in \cite{Lavesson,Stone1974} vorgestellt wird:
|
||||
\begin{enumerate}
|
||||
\item Betrachte nur $V_{L,T}$.
|
||||
\item Unterteile $V_{L,T}$ zufällig in $k$ disjunkte Mengen $M_1, \dots, M_k$.
|
||||
\item \label{schritt3} Teste die Klassifikationsgüte, wenn die Knotenbeschriftungen
|
||||
aller Knoten in $M_i$ für DYCOS verborgen werden für $i=1,\dots, k$.
|
||||
\item Bilde den Durchschnitt der Klassifikationsgüten aus \cref{schritt3}.
|
||||
\end{enumerate}
|
||||
|
||||
Es wird $k=10$ vorgeschlagen.
|
||||
|
||||
|
BIN
documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.pdf
Normal file
BIN
documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.pdf
Normal file
Binary file not shown.
83
documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.tex
Normal file
83
documents/Proseminar-Netzwerkanalyse/Ausarbeitung-Thoma.tex
Normal file
|
@ -0,0 +1,83 @@
|
|||
\documentclass[runningheads]{llncs}
|
||||
|
||||
%---- Sonderzeichen-------%
|
||||
\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{graphicx}
|
||||
\usepackage{url}
|
||||
\usepackage{llncsdoc}
|
||||
%----- Mathematischer Zeichenvorrat---%
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{enumerate}
|
||||
% fuer die aktuelle Zeit
|
||||
\usepackage{scrtime}
|
||||
\usepackage{listings}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{cite}
|
||||
\usepackage{parskip}
|
||||
\usepackage[framed,amsmath,thmmarks,hyperref]{ntheorem}
|
||||
\usepackage{algorithm}
|
||||
\usepackage[noend]{algpseudocode}
|
||||
\usepackage{csquotes}
|
||||
\usepackage[colorinlistoftodos]{todonotes}
|
||||
\usepackage{subfig} % multiple figures in one
|
||||
\usepackage{caption}
|
||||
\usepackage{tikz}
|
||||
\usepackage{enumitem}
|
||||
\usepackage[german,nameinlink]{cleveref}
|
||||
\usepackage{braket}
|
||||
\allowdisplaybreaks
|
||||
\usetikzlibrary{backgrounds}
|
||||
\usepackage[binary-units=true]{siunitx}
|
||||
\usepackage{mystyle}
|
||||
|
||||
\setcounter{tocdepth}{3}
|
||||
\setcounter{secnumdepth}{3}
|
||||
|
||||
\hypersetup{
|
||||
pdftitle = {Über die Klassifizierung von Knoten in dynamischen Netzwerken mit textuellen Inhalten},
|
||||
pdfauthor = {Martin Thoma},
|
||||
pdfkeywords = {DYCOS}
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\mainmatter
|
||||
\title{Über die Klassifizierung von Knoten in dynamischen Netzwerken mit Inhalt}
|
||||
\titlerunning{Über die Klassifizierung von Knoten in dynamischen Netzwerken mit Inhalt}
|
||||
\author{Martin Thoma}
|
||||
\authorrunning{Proseminar Netzwerkanalyse}
|
||||
\institute{Betreuer: Christopher Oßner}
|
||||
\date{17.01.2014}
|
||||
\maketitle
|
||||
|
||||
\begin{abstract}%
|
||||
\input{abstract}
|
||||
\end{abstract}
|
||||
|
||||
\section{Einleitung}
|
||||
\input{Einleitung}
|
||||
|
||||
\section{DYCOS}
|
||||
\input{DYCOS-Algorithmus}
|
||||
|
||||
\section{Analyse des DYCOS-Algorithmus}
|
||||
\input{Analyse}
|
||||
|
||||
\section{Probleme des DYCOS-Algorithmus}
|
||||
\input{SchwaechenVerbesserungen}
|
||||
|
||||
\section{Ausblick}
|
||||
\input{Ausblick}
|
||||
|
||||
% Normaler LNCS Zitierstil
|
||||
%\bibliographystyle{splncs}
|
||||
\bibliographystyle{itmalpha}
|
||||
% TODO: Ändern der folgenden Zeile, damit die .bib-Datei gefunden wird
|
||||
\bibliography{literatur}
|
||||
|
||||
\end{document}
|
||||
|
26
documents/Proseminar-Netzwerkanalyse/Ausblick.tex
Normal file
26
documents/Proseminar-Netzwerkanalyse/Ausblick.tex
Normal file
|
@ -0,0 +1,26 @@
|
|||
Den DYCOS-Algorithmus kann in einigen Aspekten erweitert werden.
|
||||
So könnte man vor der Auswahl des Vokabulars jedes Wort auf den
|
||||
Wortstamm zurückführen.
|
||||
Dafür könnte zum Beispiel der in \cite{porter} vorgestellte
|
||||
Porter-Stemming-Algorithmus verwendet werden. Durch diese Maßnahme wird das
|
||||
Vokabular kleiner gehalten wodurch mehr Artikel mit einander
|
||||
durch Vokabular verbunden werden können. Außerdem könnte so der
|
||||
Gini-Koeffizient ein besseres Maß für die Gleichheit von Texten werden.
|
||||
|
||||
Eine weitere Verbesserungsmöglichkeit besteht in der Textanalyse.
|
||||
Momentan ist diese noch sehr einfach gestrickt und ignoriert die
|
||||
Reihenfolge von Wortern beziehungsweise Wertungen davon. So könnte
|
||||
man den DYCOS-Algorithmus in einem sozialem Netzwerk verwenden wollen,
|
||||
in dem politische Parteiaffinität von einigen Mitgliedern angegeben
|
||||
wird um die Parteiaffinität der restlichen Mitglieder zu bestimmen.
|
||||
In diesem Fall macht es jedoch einen wichtigen Unterschied, ob jemand
|
||||
über eine Partei gutes oder schlechtes schreibt.
|
||||
|
||||
Eine einfache Erweiterung des DYCOS-Algorithmus wäre der Umgang mit
|
||||
mehreren Beschriftungen.
|
||||
|
||||
DYCOS beschränkt sich bei inhaltlichen Zweifachsprüngen
|
||||
auf die Top-$q$-Wortknoten, also die $q$ ähnlichsten Knoten
|
||||
gemessen mit der Aggregatanalyse, allerdings wurde bisher noch nicht
|
||||
untersucht, wie der Einfluss von $q \in \mathbb{N}$ auf die
|
||||
Klassifikationsgüte ist.
|
182
documents/Proseminar-Netzwerkanalyse/DYCOS-Algorithmus.tex
Normal file
182
documents/Proseminar-Netzwerkanalyse/DYCOS-Algorithmus.tex
Normal file
|
@ -0,0 +1,182 @@
|
|||
\subsection{Überblick}
|
||||
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.
|
||||
|
||||
Ein zentrales Element des DYCOS-Algorithmus ist der sog.
|
||||
{\it Random Walk}:
|
||||
|
||||
\begin{definition}[Random Walk, Sprung]
|
||||
Sei $G = (V, E)$ mit $E \subseteq V \times V$ ein Graph und
|
||||
$v_0 \in V$ ein Knoten des Graphen.
|
||||
|
||||
%Sei außerdem $f: V \rightarrow \mathcal{P}(V)$ eine Abbildung
|
||||
%mit der Eigenschaft:
|
||||
%\[ \forall v \in V \forall v' \in f(v): \exists \text{Weg von } v \text{ nach } v'\]
|
||||
|
||||
Ein Random Walk der Länge $l$ auf $G$, startend bei $v_0$ ist
|
||||
nun der zeitdiskrete stochastische Prozess, der $v_i$
|
||||
auf einen zufällig gewählten Nachbarn $v_{i+1}$ abbildet
|
||||
(für $i \in 0, \dots, l-1$).
|
||||
Die Abbildung $v_i \mapsto v_{i+1}$ heißt ein Sprung.
|
||||
\end{definition}
|
||||
|
||||
Der DYCOS-Algorithmus klassifiziert einzelne Knoten, indem $r$ Random Walks der Länge $l$,
|
||||
startend bei dem zu klassifizierenden Knoten $v$ gemacht werden. Dabei
|
||||
werden die Beschriftungen der besuchten Knoten gezählt. Die Beschriftung, die am häufigsten
|
||||
vorgekommen ist, wird als Beschriftung 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 arbeitet jedoch nicht
|
||||
direkt auf dem Graphen, sondern erweitert ihn mit
|
||||
Hilfe der zur Verfügung stehenden Texte. Wie diese Erweiterung
|
||||
erstellt wird, wird im Folgenden erklärt.\\
|
||||
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 \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}
|
||||
genannt.
|
||||
Ein Strukturknoten $v$ wird genau dann mit einem Wortknoten $w \in W_t$
|
||||
verbunden, wenn $w$ in einem Text von $v$ vorkommt. \Cref{fig:erweiterter-graph}
|
||||
zeigt beispielhaft den so entstehenden, semi-bipartiten Graphen.
|
||||
Der DYCOS-Algorithmus betrachtet also die Texte, die einem Knoten
|
||||
zugeordnet 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
|
||||
\input{figures/graph-content-and-structure.tex}
|
||||
\caption{Erweiterter Graph}
|
||||
\label{fig:erweiterter-graph}
|
||||
\end{figure}
|
||||
|
||||
Entsprechend werden zwei unterschiedliche Sprungtypen unterschieden,
|
||||
die strukturellen Sprünge und inhaltliche Zweifachsprünge:
|
||||
|
||||
\begin{definition}[struktureller Sprung]
|
||||
Sei $G_{E,t} = (V_t, E_{S,t} \cup E_{W,t}, V_{L,t}, W_{t})$ der
|
||||
um die Wortknoten $W_{t}$ erweiterte Graph.
|
||||
|
||||
Dann heißt das zufällige wechseln des aktuell betrachteten
|
||||
Knoten $v \in V_t$ zu einem benachbartem Knoten $w \in V_t$
|
||||
ein \textit{struktureller Sprung}.
|
||||
\end{definition}
|
||||
\goodbreak
|
||||
Im Gegensatz dazu benutzten inhaltliche Zweifachsprünge
|
||||
tatsächlich die Grapherweiterung:
|
||||
\begin{definition}[inhaltlicher Zweifachsprung]
|
||||
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.
|
||||
|
||||
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 einem zufälligem Nachbar $v' \in V_t$ von $w$
|
||||
ein inhaltlicher Zweifachsprung.
|
||||
\end{definition}
|
||||
|
||||
Jeder inhaltliche Zweifachsprung beginnt und endet also in einem Strukturknoten,
|
||||
springt über einen Wortknoten und ist ein Pfad der Länge~2.
|
||||
|
||||
Ob in einem Sprung der Random Walks ein struktureller Sprung oder
|
||||
ein inhaltlicher Zweifachsprung gemacht wird, wird jedes mal zufällig
|
||||
neu entschieden. Dafür wird der Parameter $0 \leq p_S \leq 1$ für den Algorithmus
|
||||
gewählt. Mit einer Wahrscheinlichkeit von $p_S$ wird ein struktureller
|
||||
Sprung durchgeführt und mit einer Wahrscheinlichkeit
|
||||
von $(1-p_S)$ ein modifizierter inhaltlicher Zweifachsprung, wie er in
|
||||
\cref{sec:sprungtypen} erklärt wird, gemacht. Der
|
||||
Parameter $p_S$ 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.
|
||||
|
||||
In \cref{alg:DYCOS} wird der DYCOS-Algorithmus als
|
||||
Pseudocode vorgestellt:
|
||||
In \cref{alg1:l8} wird für jeden unbeschrifteten Knoten
|
||||
durch die folgenden Zeilen eine Beschriftung gewählt.
|
||||
|
||||
\Cref{alg1:l10} führt $r$ Random Walks durch.
|
||||
In \cref{alg1:l11} wird eine temporäre Variable für den aktuell
|
||||
betrachteten Knoten angelegt.
|
||||
|
||||
In \cref{alg1:l12} bis \cref{alg1:l21} werden einzelne Random Walks
|
||||
der Länge $l$ durchgeführt, wobei die beobachteten Beschriftungen
|
||||
gezählt werden und mit einer Wahrscheinlichkeit von $p_S$ ein
|
||||
struktureller Sprung durchgeführt wird.
|
||||
|
||||
\begin{algorithm}[ht]
|
||||
\begin{algorithmic}[1]
|
||||
\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),\\
|
||||
$q$ (Anzahl der betrachteten Knoten in der Clusteranalyse)
|
||||
\Ensure Klassifikation von $V_t \setminus V_{L,t}$\\
|
||||
\\
|
||||
|
||||
\ForAll{Knoten $v \in V_t \setminus V_{L,t}$}\label{alg1:l8}
|
||||
\State $d \gets $ leeres assoziatives Array
|
||||
\For{$i = 1, \dots,r$}\label{alg1:l10}
|
||||
\State $w \gets v$\label{alg1:l11}
|
||||
\For{$j= 1, \dots, l$}\label{alg1:l12}
|
||||
\State $sprungTyp \gets \Call{random}{0, 1}$
|
||||
\If{$sprungTyp \leq p_S$}
|
||||
\State $w \gets$ \Call{SturkturellerSprung}{$w$}
|
||||
\Else
|
||||
\State $w \gets$ \Call{InhaltlicherZweifachsprung}{$w$}
|
||||
\EndIf
|
||||
\State $beschriftung \gets w.\Call{GetLabel}{ }$
|
||||
\If{$!d.\Call{hasKey}{beschriftung}$}
|
||||
\State $d[beschriftung] \gets 0$
|
||||
\EndIf
|
||||
\State $d[beschriftung] \gets d[beschriftung] + 1$
|
||||
\EndFor\label{alg1:l21}
|
||||
\EndFor
|
||||
|
||||
\If{$d$.\Call{isEmpty}{ }} \Comment{Es wurde kein beschrifteter Knoten gesehen}
|
||||
\State $M_H \gets \Call{HäufigsteLabelImGraph}{ }$
|
||||
\Else
|
||||
\State $M_H \gets \Call{max}{d}$
|
||||
\EndIf
|
||||
\\
|
||||
\State \textit{//Wähle aus der Menge der häufigsten Beschriftungen $M_H$ zufällig eine aus}
|
||||
\State $label \gets \Call{Random}{M_H}$
|
||||
\State $v.\Call{AddLabel}{label}$ \Comment{und weise dieses $v$ zu}
|
||||
\EndFor
|
||||
\State \Return Beschriftungen für $V_t \setminus V_{L,t}$
|
||||
\end{algorithmic}
|
||||
\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 (auch \enquote{dictionary} oder
|
||||
\enquote{map} genannt) 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 $w \in W_t$ die Anzahl der Vorkommen von
|
||||
$w$ 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.
|
||||
Diese Liste wird bei den inhaltlichen Zweifachsprung,
|
||||
der in \cref{sec:sprungtypen} erklärt wird,
|
||||
verwendet.
|
||||
\end{itemize}
|
||||
|
||||
\input{Sprungtypen}
|
||||
\input{Vokabularbestimmung}
|
48
documents/Proseminar-Netzwerkanalyse/Einleitung.tex
Normal file
48
documents/Proseminar-Netzwerkanalyse/Einleitung.tex
Normal file
|
@ -0,0 +1,48 @@
|
|||
Im Folgenden werden in \cref{sec:Motivation} einge Beispiele, in denen
|
||||
der DYCOS-Algorithmus anwendung finden könnte, dargelegt. In
|
||||
\cref{sec:Problemstellung} wird die Problemstellung formal definiert
|
||||
und in \cref{sec:Herausforderungen} wird auf besondere Herausforderungen
|
||||
der Aufgabenstellung hingewiesen.
|
||||
|
||||
\subsection{Motivation}\label{sec:Motivation}
|
||||
Teilweise beschriftete Graphen sind allgegenwärtig. Publikationsdatenbanken
|
||||
mit Publikationen als Knoten, Literaturverweisen und Zitaten als Kanten
|
||||
sowie von Nutzern vergebene Beschriftungen (sog. {\it Tags}) oder Kategorien als Knotenbeschriftungen;
|
||||
Wikipedia mit Artikeln als Knoten, Links als Kanten und Kategorien
|
||||
als Knotenbeschriftungen sowie soziale Netzwerke mit Eigenschaften der Benutzer
|
||||
als Knotenbeschriftungen sind drei Beispiele dafür.
|
||||
Häufig sind Knotenbeschriftungen nur teilweise vorhanden und es ist wünschenswert die
|
||||
fehlenden Knotenbeschriftungen automatisiert zu ergänzen.
|
||||
|
||||
\subsection{Problemstellung}\label{sec:Problemstellung}
|
||||
Gegeben ist ein Graph, dessen Knoten teilweise beschriftet sind. Zusätzlich stehen
|
||||
zu einer Teilmenge der Knoten Texte bereit. Gesucht sind nun Knotenbeschriftungen
|
||||
für alle Knoten, die bisher noch nicht beschriftet sind.\\
|
||||
|
||||
\begin{definition}[Knotenklassifierungsproblem]\label{def:Knotenklassifizierungsproblem}
|
||||
Sei $G_t = (V_t, E_t, V_{L,t})$ ein gerichteter Graph,
|
||||
wobei $V_t$ die Menge aller Knoten,
|
||||
$E_t \subseteq V_t \times V_t$ die Kantenmenge und $V_{L,t} \subseteq V_t$ die Menge der
|
||||
beschrifteten Knoten jeweils zum Zeitpunkt $t$ bezeichne.
|
||||
Außerdem sei $L_t$ die Menge aller zum Zeitpunkt $t$ vergebenen
|
||||
Knotenbeschriftungen und $f:V_{L,t} \rightarrow L_t$ die Funktion, die einen
|
||||
Knoten auf seine Beschriftung abbildet.
|
||||
|
||||
Weiter sei für jeden Knoten $v \in V$ eine (eventuell leere)
|
||||
Textmenge $T(v)$ gegeben.
|
||||
|
||||
Gesucht sind nun Beschriftungen für $V_t \setminus V_{L,t}$, also
|
||||
$\tilde{f}: V_t \setminus V_{L,t} \rightarrow L_t$. Die Aufgabe,
|
||||
zu $G_t$ die Funktion $\tilde{f}$ zu finden heißt \textit{Knotenklassifierungsproblem}.
|
||||
\end{definition}
|
||||
|
||||
\subsection{Herausforderungen}\label{sec:Herausforderungen}
|
||||
Die Graphen, für die dieser Algorithmus konzipiert wurde,
|
||||
sind viele $\num{10000}$~Knoten groß und dynamisch. \enquote{Dynamisch}
|
||||
bedeutet in diesem Kontext, dass neue Knoten und eventuell auch neue
|
||||
Kanten hinzu kommen bzw. Kanten oder Knoten werden entfernt werden.
|
||||
Außerdem stehen textuelle Inhalte zu den
|
||||
Knoten bereit, die bei der Klassifikation genutzt werden können.
|
||||
Bei kleinen Änderungen sollte nicht alles nochmals berechnen
|
||||
werden müssen, sondern basierend auf zuvor
|
||||
berechneten Knotenbeschriftungen sollte die Klassifizierung angepasst werden.
|
16
documents/Proseminar-Netzwerkanalyse/Makefile
Normal file
16
documents/Proseminar-Netzwerkanalyse/Makefile
Normal file
|
@ -0,0 +1,16 @@
|
|||
DOKUMENT = Ausarbeitung-Thoma
|
||||
|
||||
make:
|
||||
pdflatex $(DOKUMENT).tex -output-format=pdf # Referenzen erstellen
|
||||
bibtex $(DOKUMENT)
|
||||
pdflatex $(DOKUMENT).tex -output-format=pdf # Referenzen einbinden
|
||||
pdflatex $(DOKUMENT).tex -output-format=pdf # Referenzen einbinden
|
||||
make clean
|
||||
|
||||
ebook:
|
||||
latexml --dest=$(DOKUMENT).xml $(DOKUMENT).tex
|
||||
latexmlpost -dest=$(DOKUMENT).html $(DOKUMENT).xml
|
||||
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 *.bbl *.blg *.bak
|
11
documents/Proseminar-Netzwerkanalyse/README.md
Normal file
11
documents/Proseminar-Netzwerkanalyse/README.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
About
|
||||
=====
|
||||
The document in this folder is part of a proseminar at KIT. It is
|
||||
written in German.
|
||||
|
||||
Ausarbeitung zum Proseminar "Netzwerkanalyse" am KIT.
|
||||
|
||||
Die Ausarbeitung soll 10-12 Seiten haben und die Präsentation
|
||||
25-30 Minuten dauern + 10-15 Minuten Diskussion.
|
||||
|
||||
Zu der Ausarbeitung gehört eine [Präsentation](https://github.com/MartinThoma/LaTeX-examples/tree/master/presentations/Datamining-Proseminar).
|
|
@ -0,0 +1,84 @@
|
|||
Bei der Anwendung des in \cite{aggarwal2011} vorgestellten Algorithmus
|
||||
auf reale Datensätze könnten zwei Probleme auftreten,
|
||||
die im Folgenden erläutert werden. Außerdem werden Verbesserungen
|
||||
vorgeschlagen, die es allerdings noch zu untersuchen gilt.
|
||||
|
||||
\subsection{Anzahl der Knotenbeschriftungen}
|
||||
So, wie der DYCOS-Algorithmus vorgestellt wurde, können nur Graphen bearbeitet werden,
|
||||
deren Knoten jeweils höchstens eine Beschriftung haben. In vielen Fällen, wie z.~B.
|
||||
Wikipedia mit Kategorien als Knotenbeschriftungen haben Knoten jedoch viele Beschriftungen.
|
||||
|
||||
Auf einen ersten Blick ist diese Schwäche einfach zu beheben, indem
|
||||
man beim zählen der Knotenbeschriftungen für jeden Knoten jedes Beschriftung zählt. Dann
|
||||
wäre noch die Frage zu klären, mit wie vielen Beschriftungen der betrachtete
|
||||
Knoten beschriftet werden soll.
|
||||
|
||||
Jedoch ist z.~B. bei Wikipedia-Artikeln auf den Knoten eine
|
||||
Hierarchie definiert. So ist die Kategorie \enquote{Klassifikationsverfahren}
|
||||
eine Unterkategorie von \enquote{Klassifikation}. Bei dem Kategorisieren
|
||||
von Artikeln sind möglichst spezifische Kategorien vorzuziehen, also
|
||||
kann man nicht einfach bei dem Auftreten der Kategorie \enquote{Klassifikationsverfahren}
|
||||
sowohl für diese Kategorie als auch für die Kategorie \enquote{Klassifikation}
|
||||
zählen.
|
||||
|
||||
|
||||
\subsection{Überanpassung und Reklassifizierung}
|
||||
Aggarwal und Li beschreiben in \cite{aggarwal2011} nicht, auf welche
|
||||
Knoten der Klassifizierungsalgorithmus angewendet werden soll. Jedoch
|
||||
ist die Reihenfolge der Klassifizierung relevant. Dazu folgendes
|
||||
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 $A$ beschriftet. Zum Zeitpunkt $t=2$ komme ein nicht beschrifteter
|
||||
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$ beschriftet.\\
|
||||
Zum Zeitpunkt $t=3$ komme ein Knoten $v_3$, der mit $B$ beschriftet ist,
|
||||
und die Kante $(v_2, v_3)$ hinzu.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\subfloat[$t=1$]{
|
||||
\input{figures/graph-t1.tex}
|
||||
\label{fig:graph-t1}
|
||||
}%
|
||||
\subfloat[$t=2$]{
|
||||
\input{figures/graph-t2.tex}
|
||||
\label{fig:graph-t2}
|
||||
}
|
||||
|
||||
\subfloat[$t=3$]{
|
||||
\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}
|
||||
|
||||
Würde man nun den DYCOS-Algorithmus erst jetzt, also anstelle von
|
||||
Zeitpunkt $t=2$ zum Zeitpunkt $t=3$ auf den Knoten $v_2$ anwenden, so
|
||||
würde eine $50\%$-Wahrscheinlichkeit bestehen, dass dieser mit $B$
|
||||
beschriftet wird. Aber in diesem Beispiel wurde der Knoten schon
|
||||
zum Zeitpunkt $t=2$ beschriftet. Obwohl es in diesem kleinem Beispiel
|
||||
noch keine Rolle spielt, wird das Problem klar, wenn man weitere
|
||||
Knoten einfügt:
|
||||
|
||||
Wird zum Zeitpunkt $t=4$ ein unbeschrifteter 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$ beschriftet wird bei $\frac{2}{3}$.
|
||||
Werden die unbeschrifteten Knoten jedoch erst jetzt und alle gemeinsam
|
||||
beschriftet, so ist die Wahrscheinlichkeit für $A$ als Beschriftung bei nur $50\%$.
|
||||
Bei dem DYCOS-Algorithmus findet also eine Überanpassung an vergangene
|
||||
Beschriftungen statt.
|
||||
|
||||
Das Reklassifizieren von Knoten könnte eine mögliche Lösung für dieses
|
||||
Problem sein. Knoten, die durch den DYCOS-Algorithmus beschriftet wurden
|
||||
könnten eine Lebenszeit bekommen (TTL, Time to Live). Ist diese
|
||||
abgelaufen, wird der DYCOS-Algorithmus erneut auf den Knoten angewendet.
|
||||
|
||||
|
115
documents/Proseminar-Netzwerkanalyse/Sprungtypen.tex
Normal file
115
documents/Proseminar-Netzwerkanalyse/Sprungtypen.tex
Normal file
|
@ -0,0 +1,115 @@
|
|||
\subsection{Sprungtypen}\label{sec:sprungtypen}
|
||||
Die beiden bereits definierten Sprungtypen, der strukturelle Sprung
|
||||
sowie der inhaltliche Zweifachsprung werden im folgenden erklärt.
|
||||
\goodbreak
|
||||
Der strukturelle Sprung entspricht einer zufälligen Wahl eines
|
||||
Nachbarknotens, wie es in \cref{alg:DYCOS-structural-hop}
|
||||
gezeigt wird.
|
||||
\begin{algorithm}[H]
|
||||
\begin{algorithmic}[1]
|
||||
\Procedure{SturkturellerSprung}{Knoten $v$, Anzahl $q$}
|
||||
\State $n \gets v.\Call{NeighborCount}{}$ \Comment{Wähle aus der Liste der Nachbarknoten}
|
||||
\State $r \gets \Call{RandomInt}{0, n-1}$ \Comment{einen zufällig aus}
|
||||
\State $v \gets v.\Call{Next}{r}$ \Comment{Gehe zu diesem Knoten}
|
||||
\State \Return $v$
|
||||
\EndProcedure
|
||||
\end{algorithmic}
|
||||
\caption{Struktureller Sprung}
|
||||
\label{alg:DYCOS-structural-hop}
|
||||
\end{algorithm}
|
||||
|
||||
Bei inhaltlichen Zweifachsprüngen ist jedoch nicht sinnvoll so strikt
|
||||
nach der Definition vorzugehen, also
|
||||
direkt von einem strukturellem Knoten
|
||||
$v \in V_t$ zu einem mit $v$ verbundenen Wortknoten $w \in W_t$ zu springen
|
||||
und von diesem wieder zu einem verbundenem strukturellem Knoten
|
||||
$v' \in V_t$. Würde man dies machen, wäre zu befürchten, dass
|
||||
aufgrund von Homonymen die Qualität der Klassifizierung verringert
|
||||
wird. So hat \enquote{Brücke} im Deutschen viele Bedeutungen.
|
||||
Gemeint sein können z.~B. das Bauwerk, das Entwurfsmuster der
|
||||
objektorientierten Programmierung oder ein Teil des Gehirns.
|
||||
|
||||
Deshalb wird für jeden Knoten $v$, von dem aus man einen inhaltlichen
|
||||
Zweifachsprung machen will folgende Textanalyse durchgeführt:
|
||||
\begin{enumerate}[label=C\arabic*,ref=C\arabic*]
|
||||
\item \label{step:c1} Gehe alle in $v$ startenden Random Walks der Länge $2$ durch
|
||||
und erstelle eine Liste $L$ der erreichbaren Knoten $v'$. Speichere
|
||||
außerdem, durch wie viele Pfade diese Knoten $v'$ jeweils erreichbar sind.
|
||||
\item \label{step:c2} Betrachte im folgenden nur die Top-$q$ Knoten bzgl. der
|
||||
Anzahl der Pfade von $v$ nach $v'$, wobei $q \in \mathbb{N}$
|
||||
eine zu wählende Konstante des DYCOS-Algorithmus ist.\footnote{Sowohl für den DBLP, als auch für den
|
||||
CORA-Datensatz wurde in \cite[S. 364]{aggarwal2011} $q=10$ gewählt.}
|
||||
Diese Knotenmenge heiße im Folgenden $T(v)$ und $p(v, v')$
|
||||
sei die Anzahl der Pfade von $v$ über einen Wortknoten nach $v'$.
|
||||
\item \label{step:c3} Wähle mit Wahrscheinlichkeit $\frac{p(v, v')}{\sum_{w \in T(v)} p(v, w)}$
|
||||
den Knoten $v' \in T(v)$ als Ziel des Zweifachsprungs.
|
||||
\end{enumerate}
|
||||
|
||||
Konkret könnte also ein inhaltlicher Zweifachsprung sowie wie in
|
||||
\cref{alg:DYCOS-content-multihop} beschrieben umgesetzt werden.
|
||||
Der Algorithmus bekommt einen Startknoten $v \in V_T$ und
|
||||
einen $q \in \mathbb{N}$ als Parameter. $q$ ist ein Parameter der
|
||||
für den DYCOS-Algorithmus zu wählen ist. Dieser Parameter beschränkt
|
||||
die Anzahl der möglichen Zielknoten $v' \in V_T$ auf diejenigen
|
||||
$q$ Knoten, die $v$ bzgl. der Textanalyse am ähnlichsten sind.
|
||||
|
||||
In \cref{alg:l2} bis \cref{alg:l5} wird \cref{step:c1} durchgeführt
|
||||
und alle erreichbaren Knoten in $reachableNodes$ mit der Anzahl
|
||||
der Pfade, durch die sie erreicht werden können, gespeichert.
|
||||
|
||||
In \cref{alg:l6} wird \cref{step:c2} durchgeführt.
|
||||
Ab hier gilt
|
||||
\[ |T| = \begin{cases}q &\text{falls } |reachableNodes|\geq q\\
|
||||
|reachableNodes| &\text{sonst }\end{cases}\]
|
||||
|
||||
Bei der Wahl der Datenstruktur von $T$ ist zu beachten, dass man in
|
||||
\cref{alg:21} über Indizes auf Elemente aus $T$ zugreifen können muss.
|
||||
|
||||
In \cref{alg:l8} bis \ref{alg:l13} wird ein assoziatives Array erstellt,
|
||||
das von $v' \in T(v)$ auf die relative
|
||||
Häufigkeit bzgl. aller Pfade von $v$ zu Knoten aus den Top-$q$ abbildet.
|
||||
|
||||
In allen folgenden Zeilen wird \cref{step:c3} durchgeführt.
|
||||
In \cref{alg:15} bis \cref{alg:22} wird ein Knoten $v' \in T(v)$ mit
|
||||
einer Wahrscheinlichkeit, die seiner relativen Häufigkeit am Anteil
|
||||
der Pfaden der Länge 2 von $v$ nach $v'$ über einen beliebigen
|
||||
Wortknoten entspricht ausgewählt und schließlich zurückgegeben.
|
||||
|
||||
\begin{algorithm}
|
||||
\caption{Inhaltlicher Zweifachsprung}
|
||||
\label{alg:DYCOS-content-multihop}
|
||||
\begin{algorithmic}[1]
|
||||
\Procedure{InhaltlicherZweifachsprung}{Knoten $v \in V_T$, $q \in \mathbb{N}$}
|
||||
\State $erreichbareKnoten \gets$ leeres assoziatives Array\label{alg:l2}
|
||||
\ForAll{Wortknoten $w$ in $v.\Call{getWordNodes}{ }$}
|
||||
\ForAll{Strukturknoten $x$ in $w.\Call{getStructuralNodes}{ }$}
|
||||
\If{$!erreichbareKnoten.\Call{hasKey}{x}$}
|
||||
\State $erreichbareKnoten[x] \gets 0$
|
||||
\EndIf
|
||||
\State $erreichbareKnoten[x] \gets erreichbareKnoten[x] + 1$
|
||||
\EndFor
|
||||
\EndFor\label{alg:l5}
|
||||
\State \label{alg:l6} $T \gets \Call{max}{erreichbareKnoten, q}$
|
||||
\\
|
||||
\State \label{alg:l8} $s \gets 0$
|
||||
\ForAll{Knoten $x \in T$}
|
||||
\State $s \gets s + erreichbareKnoten[x]$
|
||||
\EndFor
|
||||
\State $relativeHaeufigkeit \gets $ leeres assoziatives Array
|
||||
\ForAll{Knoten $x \in T$}
|
||||
\State $relativeHaeufigkeit \gets \frac{erreichbareKnoten[x]}{s}$
|
||||
\EndFor\label{alg:l13}
|
||||
\\
|
||||
\State \label{alg:15} $random \gets \Call{random}{0, 1}$
|
||||
\State $r \gets 0.0$
|
||||
\State $i \gets 0$
|
||||
\While{$s < random$}
|
||||
\State $r \gets r + relativeHaeufigkeit[i]$
|
||||
\State $i \gets i + 1$
|
||||
\EndWhile
|
||||
|
||||
\State $v \gets T[i-1]$ \label{alg:21}
|
||||
\State \Return $v$ \label{alg:22}
|
||||
\EndProcedure
|
||||
\end{algorithmic}
|
||||
\end{algorithm}
|
90
documents/Proseminar-Netzwerkanalyse/Vokabularbestimmung.tex
Normal file
90
documents/Proseminar-Netzwerkanalyse/Vokabularbestimmung.tex
Normal file
|
@ -0,0 +1,90 @@
|
|||
\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. Es ist wünschenswert
|
||||
Wörter zu wählen, die die Texte möglichst stark 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, 15,20}$ auf die Klassifikationsgüte
|
||||
untersucht und festgestellt, dass die Klassifikationsgüte mit größerem
|
||||
$m$ sinkt, sie also für $m=5$ für den DBLP-Datensatz am höchsten ist.
|
||||
Für den CORA-Datensatz wurde mit $m \in \set{3,4,5,6}$ getestet und
|
||||
kein signifikanter Unterschied festgestellt.
|
||||
|
||||
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ößtmöglichen Ungleichverteilung.
|
||||
|
||||
Sei nun $n_i(w)$ die Häufigkeit des Wortes $w$ in allen Texten mit
|
||||
der $i$-ten Knotenbeschriftung.
|
||||
\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.
|
||||
|
||||
Ein Vorschlag, wie die Vokabularbestimmung implementiert werden kann,
|
||||
ist als Pseudocode mit \cref{alg:vokabularbestimmung}
|
||||
gegeben. In \cref{alg4:l6} wird eine Teilmenge $S_t \subseteq V_{L,t}$
|
||||
zum Generieren des Vokabulars gewählt. In \cref{alg4:l8} wird ein Array $cLabelWords$ erstellt, das $(|\L_t|+1)$ Felder hat.
|
||||
Die Elemente dieser Felder sind jeweils assoziative Arrays, deren
|
||||
Schlüssel Wörter und deren Werte natürliche Zahlen sind. Die ersten
|
||||
$|\L_t|$ Elemente von $cLabelWords$ dienem dem Zählen der Häufigkeit
|
||||
der Wörter von Texten aus $S_t$, wobei für jede Beschriftung die
|
||||
Häufigkeit einzeln gezählt wird. Das letzte Element aus $cLabelWords$
|
||||
zählt die Summe der Wörter. Diese Datenstruktur wird in
|
||||
\cref{alg4:l10} bis \ref{alg4:l12} gefüllt.
|
||||
|
||||
In \cref{alg4:l17} bis \ref{alg4:l19} wird die relative Häufigkeit
|
||||
der Wörter bzgl. der Beschriftungen bestimmt. Daraus wird in
|
||||
\cref{alg4:l20} bis \ref{alg4:l22} der Gini-Koeffizient berechnet.
|
||||
Schließlich werden in \cref{alg4:l23} bis \ref{alg4:l24} die Top-$q$
|
||||
Wörter mit den höchsten Gini-Koeffizienten zurückgegeben.
|
||||
|
||||
\begin{algorithm}[ht]
|
||||
\begin{algorithmic}[1]
|
||||
\Require \\
|
||||
$V_{L,t}$ (beschriftete Knoten),\\
|
||||
$\L_t$ (Menge der Beschriftungen),\\
|
||||
$f:V_{L,t} \rightarrow \L_t$ (Beschriftungsfunktion),\\
|
||||
$m$ (Gewünschte Vokabulargröße)
|
||||
\Ensure $\M_t$ (Vokabular)\\
|
||||
\State $S_t \gets \Call{Sample}{V_{L,t}}$\label{alg4:l6} \Comment{Wähle eine Teilmenge $S_t \subseteq V_{L,t}$ aus}
|
||||
\State $\M_t \gets \emptyset$ \Comment{Menge aller Wörter}
|
||||
\State $cLabelWords \gets$ Array aus $(|\L_t|+1)$ assoziativen Arrays\label{alg4:l8}
|
||||
\ForAll{$v \in S_t$} \label{alg4:l10}\Comment{Gehe jeden Text Wort für Wort durch}
|
||||
\State $i \gets \Call{getLabel}{v}$
|
||||
\ForAll{$(word, haeufigkeit) \in \Call{getTextAsMultiset}{v}$}
|
||||
\State $cLabelWords[i][word] \gets cLabelWords[i][word] + haeufigkeit$
|
||||
\State $cLabelWords[|\L_t|][word] \gets cLabelWords[i][|\L_t|] + haeufigkeit$
|
||||
\State $\M_t = \M_t \cup \Set{word}$
|
||||
\EndFor
|
||||
\EndFor\label{alg4:l12}
|
||||
\\
|
||||
\ForAll{Wort $w \in \M_t$}
|
||||
\State $p \gets $ Array aus $|\L_t|$ Zahlen in $[0, 1]$\label{alg4:l17}
|
||||
\ForAll{Label $i \in \L_t$}
|
||||
\State $p[i] \gets \frac{cLabelWords[i][w]}{cLabelWords[i][|\L_t|]}$
|
||||
\EndFor\label{alg4:l19}
|
||||
|
||||
\State $w$.gini $\gets 0$ \label{alg4:l20}
|
||||
\ForAll{$i \in 1, \dots, |\L_t|$}
|
||||
\State $w$.gini $\gets$ $w$.gini + $p[i]^2$
|
||||
\EndFor\label{alg4:l22}
|
||||
\EndFor
|
||||
|
||||
\State $\M_t \gets \Call{SortDescendingByGini}{\M_t}$\label{alg4:l23}
|
||||
\State \Return $\Call{Top}{\M_t, m}$\label{alg4:l24}
|
||||
\end{algorithmic}
|
||||
\caption{Vokabularbestimmung}
|
||||
\label{alg:vokabularbestimmung}
|
||||
\end{algorithm}
|
||||
|
||||
Die Menge $S_t$ kann aus der Menge aller Dokumente, deren
|
||||
Knoten beschriftet sind, mithilfe des in \cite{Vitter} vorgestellten
|
||||
Algorithmus bestimmt werden.
|
15
documents/Proseminar-Netzwerkanalyse/abstract.tex
Normal file
15
documents/Proseminar-Netzwerkanalyse/abstract.tex
Normal file
|
@ -0,0 +1,15 @@
|
|||
In dieser Arbeit wird der DYCOS-Algorithmus, wie er in \cite{aggarwal2011} vorgestellt wurde, erklärt.
|
||||
Er arbeitet auf Graphen, deren Knoten teilweise mit
|
||||
Beschriftungen versehen sind und ergänzt automatisch Beschriftungen
|
||||
für Knoten, die bisher noch keine Beschriftung haben. Dieser Vorgang
|
||||
wird \enquote{Klassifizierung} genannt. Dazu verwendet er die
|
||||
Struktur des Graphen sowie textuelle Informationen, die den Knoten
|
||||
zugeordnet sind. Die in \cite{aggarwal2011} beschriebene experimentelle
|
||||
Analyse ergab, dass er auch auf dynamischen Graphen mit $\num{19396}$
|
||||
bzw. $\num{806635}$ Knoten, von denen nur $\num{14814}$ bzw. $\num{18999}$
|
||||
beschriftet waren, innerhalb von weniger als einer Minute auf einem
|
||||
Kern einer Intel Xeon 2.5GHz CPU mit 32G RAM ausgeführt werden kann.\\
|
||||
Zusätzlich wird \cite{aggarwal2011} kritisch Erörtert und
|
||||
und es werden mögliche Erweiterungen des DYCOS-Algorithmus vorgeschlagen.
|
||||
|
||||
\textbf{Keywords:} DYCOS, Label Propagation, Knotenklassifizierung
|
|
@ -0,0 +1,37 @@
|
|||
\tikzstyle{vertex}=[draw,black,circle,minimum size=10pt,inner sep=0pt]
|
||||
\tikzstyle{edge}=[very thick]
|
||||
\begin{tikzpicture}[scale=1.3]
|
||||
\node (a)[vertex] at (0,0) {};
|
||||
\node (b)[vertex] at (0,1) {};
|
||||
\node (c)[vertex] at (0,2) {};
|
||||
\node (d)[vertex] at (1,0) {};
|
||||
\node (e)[vertex] at (1,1) {};
|
||||
\node (f)[vertex] at (1,2) {};
|
||||
\node (g)[vertex] at (2,0) {};
|
||||
\node (h)[vertex] at (2,1) {};
|
||||
\node (i)[vertex] at (2,2) {};
|
||||
|
||||
\node (x)[vertex] at (4,0) {};
|
||||
\node (y)[vertex] at (4,1) {};
|
||||
\node (z)[vertex] at (4,2) {};
|
||||
|
||||
\draw[edge] (a) -- (d);
|
||||
\draw[edge] (b) -- (d);
|
||||
\draw[edge] (b) -- (c);
|
||||
\draw[edge] (c) -- (d);
|
||||
\draw[edge] (d) -- (e);
|
||||
\draw[edge] (d) edge[bend left] (f);
|
||||
\draw[edge] (d) edge[bend right] (x);
|
||||
\draw[edge] (g) edge (x);
|
||||
\draw[edge] (h) edge (x);
|
||||
\draw[edge] (h) edge (y);
|
||||
\draw[edge] (h) edge (e);
|
||||
\draw[edge] (e) edge (z);
|
||||
\draw[edge] (i) edge (y);
|
||||
|
||||
\draw [dashed] (-0.3,-0.3) rectangle (2.3,2.3);
|
||||
\draw [dashed] (2.5,2.3) rectangle (5, -0.3);
|
||||
|
||||
\node (struktur)[label={[label distance=0cm]0:Sturkturknoten $V_t$}] at (-0.1,2.5) {};
|
||||
\node (struktur)[label={[label distance=0cm]0:Wortknoten $W_t$}] at (2.7,2.5) {};
|
||||
\end{tikzpicture}
|
|
@ -0,0 +1,7 @@
|
|||
\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, white] at (1,0) {$v_2$};
|
||||
\node (struktur)[label={[label distance=-0.2cm]0:$t=1$}] at (-2,1) {};
|
||||
\end{tikzpicture}
|
|
@ -0,0 +1,8 @@
|
|||
\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={\color{blue}$A$}] at (1,0) {$v_2$};
|
||||
\draw[->] (b) -- (a);
|
||||
\node (struktur)[label={[label distance=-0.2cm]0:$t=2$}] at (-2,1) {};
|
||||
\end{tikzpicture}
|
10
documents/Proseminar-Netzwerkanalyse/figures/graph-t3.tex
Normal file
10
documents/Proseminar-Netzwerkanalyse/figures/graph-t3.tex
Normal file
|
@ -0,0 +1,10 @@
|
|||
\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={\color{blue}$A$}] at (1,0) {$v_2$};
|
||||
\node (c)[vertex,label=$B$] at (2,0) {$v_3$};
|
||||
\draw[->] (b) -- (a);
|
||||
\draw[->] (b) -- (c);
|
||||
\node (struktur)[label={[label distance=-0.2cm]0:$t=3$}] at (-1,1) {};
|
||||
\end{tikzpicture}
|
15
documents/Proseminar-Netzwerkanalyse/figures/graph-t4.tex
Normal file
15
documents/Proseminar-Netzwerkanalyse/figures/graph-t4.tex
Normal file
|
@ -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}
|
1325
documents/Proseminar-Netzwerkanalyse/itmalpha.bst
Normal file
1325
documents/Proseminar-Netzwerkanalyse/itmalpha.bst
Normal file
File diff suppressed because it is too large
Load diff
170
documents/Proseminar-Netzwerkanalyse/literatur.bib
Normal file
170
documents/Proseminar-Netzwerkanalyse/literatur.bib
Normal file
|
@ -0,0 +1,170 @@
|
|||
% This file was created with JabRef 2.3.1.
|
||||
% Encoding: Cp1252
|
||||
|
||||
@Online{zappella,
|
||||
author = {Giovanni Zappella},
|
||||
title = {A Scalable Multiclass Algorithm for Node Classification},
|
||||
version = {1},
|
||||
date = {2011-12-19},
|
||||
year = {2011},
|
||||
eprinttype = {arxiv},
|
||||
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},
|
||||
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}
|
||||
}
|
||||
|
||||
@inproceedings{DBLP:conf/kdd/BhagatCR07,
|
||||
author = {Smriti Bhagat AND Graham Cormode AND Irina Rozenbaum},
|
||||
title = {Applying Link-Based Classification to Label Blogs},
|
||||
booktitle = {WebKDD/SNA-KDD},
|
||||
year = {2007},
|
||||
pages = {97-117},
|
||||
ee = {http://dx.doi.org/10.1007/978-3-642-00528-2_6},
|
||||
crossref = {DBLP:conf/kdd/2007web},
|
||||
bibsource = {DBLP, http://dblp.uni-trier.de}
|
||||
}
|
||||
@proceedings{DBLP:conf/kdd/2007web,
|
||||
editor = {Haizheng Zhang AND
|
||||
Myra Spiliopoulou AND
|
||||
Bamshad Mobasher AND
|
||||
C. Lee Giles AND
|
||||
Andrew McCallum AND
|
||||
Olfa Nasraoui AND
|
||||
Jaideep Srivastava AND
|
||||
John Yen},
|
||||
title = {Advances in Web Mining and Web Usage Analysis, 9th International
|
||||
Workshop on Knowledge Discovery on the Web, WebKDD 2007,
|
||||
and 1st International Workshop on Social Networks Analysis,
|
||||
SNA-KDD 2007, San Jose, CA, USA, August 12-15, 2007. Revised
|
||||
Papers},
|
||||
booktitle = {WebKDD/SNA-KDD},
|
||||
publisher = {Springer},
|
||||
series = {Lecture Notes in Computer Science},
|
||||
volume = {5439},
|
||||
year = {2009},
|
||||
isbn = {978-3-642-00527-5},
|
||||
ee = {http://dx.doi.org/10.1007/978-3-642-00528-2},
|
||||
bibsource = {DBLP, http://dblp.uni-trier.de}
|
||||
}
|
||||
|
||||
@Online{bhagat,
|
||||
author = {Smriti Bhagat AND Graham Cormode AND S. Muthukrishnan},
|
||||
title = {Node Classification in Social Networks},
|
||||
year = {2011},
|
||||
version = {1},
|
||||
date = {2011-01-17},
|
||||
eprinttype = {arxiv},
|
||||
eprintclass = {cs.SI, physics.soc-ph},
|
||||
eprint = {http://arxiv.org/abs/1101.3291v1}
|
||||
}
|
||||
|
||||
@article{Vitter,
|
||||
author = {Vitter, Jeffrey S.},
|
||||
title = {Random Sampling with a Reservoir},
|
||||
journal = {ACM Trans. Math. Softw.},
|
||||
volume = {11},
|
||||
number = {1},
|
||||
year = {1985},
|
||||
issn = {0098-3500},
|
||||
pages = {37--57},
|
||||
numpages = {21},
|
||||
url = {http://doi.acm.org/10.1145/3147.3165},
|
||||
doi = {10.1145/3147.3165},
|
||||
acmid = {3165},
|
||||
publisher = {ACM},
|
||||
address = {New York, NY, USA},
|
||||
}
|
||||
|
||||
@MASTERSTHESIS{heck,
|
||||
AUTHOR = {Heck, Michael},
|
||||
TITLE = {Unsupervised Acoustic Model Training for Simultaneous Lecture Translation in Incremental and Batch Mode},
|
||||
SCHOOL = {Karlsruhe Institute of Technology},
|
||||
TYPE = {Diploma Thesis},
|
||||
ADDRESS = {Germany},
|
||||
MONTH = DEC,
|
||||
YEAR = 2012,
|
||||
PDF = {http://isl.anthropomatik.kit.edu/cmu-kit/downloads/Diplomarbeit_Heck_Michael.pdf}
|
||||
}
|
||||
|
||||
@MASTERSTHESIS{Lavesson,
|
||||
AUTHOR = {Lavesson, Niklas},
|
||||
TITLE = {Evaluation and analysis of supervised learning algorithms and classifiers},
|
||||
SCHOOL = {Blekinge Institute of Technology},
|
||||
TYPE = {Diploma Thesis},
|
||||
ADDRESS = {Sweden},
|
||||
MONTH = DEC,
|
||||
YEAR = 2006,
|
||||
PDF = {http://www.bth.se/fou/Forskinfo.nsf/Sok/c655a0b1f9f88d16c125714c00355e5d/$file/Lavesson_lic.pdf}
|
||||
}
|
||||
|
||||
@article{Stone1974,
|
||||
abstract = {{A generalized form of the cross-validation criterion is applied to the choice and assessment of prediction using the data-analytic concept of a prescri
|
||||
ption. The examples used to illustrate the application are drawn from the problem areas of univariate estimation, linear regression and analysis of variance.}},
|
||||
author = {Stone, M.},
|
||||
citeulike-article-id = {6758792},
|
||||
citeulike-linkout-0 = {http://dx.doi.org/10.2307/2984809},
|
||||
citeulike-linkout-1 = {http://www.jstor.org/stable/2984809},
|
||||
doi = {10.2307/2984809},
|
||||
issn = {00359246},
|
||||
journal = {Journal of the Royal Statistical Society. Series B (Methodological)},
|
||||
keywords = {biomarker, cross\_validation},
|
||||
number = {2},
|
||||
pages = {111--147},
|
||||
posted-at = {2011-08-02 14:22:37},
|
||||
priority = {2},
|
||||
publisher = {Blackwell Publishing for the Royal Statistical Society},
|
||||
title = {{Cross-Validatory Choice and Assessment of Statistical Predictions}},
|
||||
url = {http://dx.doi.org/10.2307/2984809},
|
||||
volume = {36},
|
||||
year = {1974}
|
||||
}
|
||||
|
||||
|
||||
@incollection{porter,
|
||||
author = {Porter, M. F.},
|
||||
chapter = {An Algorithm for Suffix Stripping},
|
||||
title = {Readings in Information Retrieval},
|
||||
editor = {Sparck Jones, Karen and Willett, Peter},
|
||||
year = {1997},
|
||||
isbn = {1-55860-454-5},
|
||||
pages = {313--316},
|
||||
numpages = {4},
|
||||
url = {http://dl.acm.org/citation.cfm?id=275537.275705},
|
||||
acmid = {275705},
|
||||
publisher = {Morgan Kaufmann Publishers Inc.},
|
||||
address = {San Francisco, CA, USA},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@incollection{szummer,
|
||||
title = {Partially labeled classification with Markov random walks},
|
||||
author = {Martin Szummer and Jaakkola, Tommi},
|
||||
booktitle = {Advances in Neural Information Processing Systems 14},
|
||||
editor = {T.G. Dietterich and S. Becker and Z. Ghahramani},
|
||||
pages = {945--952},
|
||||
year = {2001},
|
||||
url = {http://media.nips.cc/nipsbooks/nipspapers/paper_files/nips14/AA36.pdf},
|
||||
}
|
1190
documents/Proseminar-Netzwerkanalyse/llncs.cls
Normal file
1190
documents/Proseminar-Netzwerkanalyse/llncs.cls
Normal file
File diff suppressed because it is too large
Load diff
42
documents/Proseminar-Netzwerkanalyse/llncsdoc.sty
Normal file
42
documents/Proseminar-Netzwerkanalyse/llncsdoc.sty
Normal file
|
@ -0,0 +1,42 @@
|
|||
% This is LLNCSDOC.STY the modification of the
|
||||
% LLNCS class file for the documentation of
|
||||
% the class itself.
|
||||
%
|
||||
\def\AmS{{\protect\usefont{OMS}{cmsy}{m}{n}%
|
||||
A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
|
||||
\def\AmSTeX{{\protect\AmS-\protect\TeX}}
|
||||
%
|
||||
\def\ps@myheadings{\let\@mkboth\@gobbletwo
|
||||
\def\@oddhead{\hbox{}\hfil\small\rm\rightmark
|
||||
\qquad\thepage}%
|
||||
\def\@oddfoot{}\def\@evenhead{\small\rm\thepage\qquad
|
||||
\leftmark\hfil}%
|
||||
\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}}
|
||||
\ps@myheadings
|
||||
%
|
||||
\setcounter{tocdepth}{2}
|
||||
%
|
||||
\renewcommand{\labelitemi}{--}
|
||||
\newenvironment{alpherate}%
|
||||
{\renewcommand{\labelenumi}{\alph{enumi})}\begin{enumerate}}%
|
||||
{\end{enumerate}\renewcommand{\labelenumi}{enumi}}
|
||||
%
|
||||
\def\bibauthoryear{\begingroup
|
||||
\def\thebibliography##1{\section*{References}%
|
||||
\small\list{}{\settowidth\labelwidth{}\leftmargin\parindent
|
||||
\itemindent=-\parindent
|
||||
\labelsep=\z@
|
||||
\usecounter{enumi}}%
|
||||
\def\newblock{\hskip .11em plus .33em minus -.07em}%
|
||||
\sloppy
|
||||
\sfcode`\.=1000\relax}%
|
||||
\def\@cite##1{##1}%
|
||||
\def\@lbibitem[##1]##2{\item[]\if@filesw
|
||||
{\def\protect####1{\string ####1\space}\immediate
|
||||
\write\@auxout{\string\bibcite{##2}{##1}}}\fi\ignorespaces}%
|
||||
\begin{thebibliography}{}
|
||||
\bibitem[1982]{clar:eke3} Clarke, F., Ekeland, I.: Nonlinear
|
||||
oscillations and boundary-value problems for Hamiltonian systems.
|
||||
Arch. Rat. Mech. Anal. {\bf 78} (1982) 315--333
|
||||
\end{thebibliography}
|
||||
\endgroup}
|
28
documents/Proseminar-Netzwerkanalyse/mystyle.sty
Normal file
28
documents/Proseminar-Netzwerkanalyse/mystyle.sty
Normal file
|
@ -0,0 +1,28 @@
|
|||
\usepackage{siunitx}
|
||||
\sisetup{
|
||||
group-digits=true,
|
||||
group-separator={\,},
|
||||
}
|
||||
|
||||
%\def\edges{\ensuremath{\mathcal{E}_t}}
|
||||
%\def\nodes{\ensuremath{\mathcal{N}_t}}
|
||||
%\def\labeledNodes{\ensuremath{\mathcal{T}_t}}
|
||||
\DeclareUnicodeCharacter{00A0}{~}
|
||||
|
||||
\theoremstyle{definition}
|
||||
\theoremindent20pt
|
||||
\theoremheaderfont{\normalfont\bfseries\hspace{-\theoremindent}}
|
||||
\renewtheorem{definition}{Definition}
|
||||
|
||||
\def\L{\ensuremath{\mathcal{L}}}
|
||||
\def\T{\ensuremath{\mathcal{T}}}
|
||||
\def\M{\ensuremath{\mathcal{M}}}
|
||||
|
||||
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
|
||||
\renewcommand{\algorithmicensure}{\textbf{Output:}}
|
||||
\renewcommand{\algorithmicforall}{\textbf{for each}}
|
||||
\renewcommand{\algorithmicprocedure}{\textbf{function}}
|
||||
\renewcommand{\ALG@name}{Algorithmus}
|
||||
|
||||
%Hyphenation
|
||||
\hyphenation{Graph}
|
25
documents/Proseminar-Netzwerkanalyse/schwaechenPaper.tex
Normal file
25
documents/Proseminar-Netzwerkanalyse/schwaechenPaper.tex
Normal file
|
@ -0,0 +1,25 @@
|
|||
\subsection{Schwächen des Papers}
|
||||
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 Ergebnisse dieser Analyse können aus folgenden Gründen
|
||||
nicht überprüft werden:
|
||||
\begin{itemize}
|
||||
\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 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
|
||||
extrahiert und der Graph, der keine Zeitpunkte beinhaltet,
|
||||
künstlich in 10 Graphen mit Zeitpunkten unterteilt. Wie
|
||||
jedoch diese Unterteilung genau durchgeführt wurde kann nicht
|
||||
nachvollzogen werden.
|
||||
\item Der auf S. 360 in \enquote{Algorithm 1} vorgestellte
|
||||
Pseudocode soll den DYCOS-Algorithmus darstellen. Allerdings
|
||||
werden die bereits klassifizierten Knoten $\T_t$ neu klassifiziert
|
||||
und mit $\theta$ die Klassifikationsgüte gemessen.
|
||||
\end{itemize}
|
1098
documents/Proseminar-Netzwerkanalyse/splncs.bst
Normal file
1098
documents/Proseminar-Netzwerkanalyse/splncs.bst
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue