{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bayesian hypotheses comparison on sequential data with HypTrails\n", "\n", "In this tutorial, we present the HypTrails approach that allows to compare hypotheses about sequential data. For more information, please also refer to an extended HypTrails notebook that also covers Bayesian basics." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## HypTrails\n", "\n", "First, we implement HypTrails." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# further implementations can be found:\n", "# Python: https://github.com/psinger/hyptrails\n", "# Java: https://bitbucket.org/florian_lemmerich/hyptrails4j\n", "# Apache spark: http://dmir.org/sparktrails/\n", "# also see: http://www.philippsinger.info/hyptrails/\n", "\n", "from __future__ import division\n", "\n", "import itertools\n", "from scipy.sparse import csr_matrix\n", "from scipy.special import gammaln\n", "from collections import defaultdict\n", "from sklearn.preprocessing import normalize\n", "import numpy as np\n", "\n", "class HypTrails():\n", " \"\"\"\n", " HypTrails\n", " \"\"\"\n", "\n", " def __init__(self, vocab=None):\n", " \"\"\"\n", " Constructor for class HypTrails\n", " \n", " Args:\n", " vocab: optional vocabulary mapping states to indices\n", " \"\"\"\n", " \n", " self.vocab = vocab\n", "\n", " def fit(self, sequences):\n", " \"\"\"\n", " Function for fitting the Markov Chain model given data\n", " \n", " Args:\n", " sequences: Data of sequences, list of lists\n", " \"\"\"\n", " \n", " # first, we derive all basic states from given sequences\n", " states = set(itertools.chain.from_iterable(sequences))\n", " self.state_count = len(states)\n", "\n", " # dictionary of dictionaries for counting transitions between states\n", " transitions = defaultdict(lambda : defaultdict(float))\n", " \n", " # vocabulary for mapping states to indices\n", " if self.vocab is None:\n", " self.vocab = dict((v,k) for k,v in enumerate(states))\n", " \n", " i_indices = []\n", " j_indices = []\n", " values = []\n", "\n", " # iterate through sequences\n", " for seq in sequences:\n", " i = 0\n", " # iterate through elements of a sequence\n", " for j in xrange(1, len(seq)):\n", " elemA = seq[i]\n", " elemB = seq[j]\n", " i += 1\n", " \n", " i_indices.append(self.vocab[elemA])\n", " j_indices.append(self.vocab[elemB])\n", " values.append(1.)\n", " \n", " shape = (self.state_count, self.state_count)\n", " self.transitions = csr_matrix((values, (i_indices, j_indices)),\n", " shape=shape)\n", "\n", " #print \"fit done\"\n", "\n", " def evidence(self, hypothesis, k=1, prior=1.):\n", " \"\"\"\n", " Determines Bayesian evidence given fitted model and hypothesis\n", " \n", " Args:\n", " hypothesis: Hypothesis csr matrix, \n", " indices need to map those of transition matrix\n", " k: Concentration parameter k\n", " prior: proto Dirichlet prior\n", " Returns\n", " evidence\n", " \"\"\"\n", " \n", " pseudo_counts = k * self.state_count\n", " \n", " if hypothesis.size != 0:\n", " # in case of memory issues set copy to False but then care about changed hypothesis matrix\n", " hypothesis = normalize(hypothesis, axis=1, norm='l1', copy=True)\n", "\n", " # distribute pseudo counts to matrix, row-based approach\n", " hypothesis = hypothesis * pseudo_counts\n", "\n", " # also consider those rows which only include zeros\n", " norma = hypothesis.sum(axis=1)\n", " n_zeros,_ = np.where(norma == 0)\n", " hypothesis[n_zeros,:] = pseudo_counts / self.state_count\n", " else:\n", " # if hypothesis matrix is empty, we can simply increase the proto prior parameter\n", " prior += k\n", " \n", " # transition matrix with additional Dirichlet prior\n", " # not memory efficient\n", " transitions_prior = self.transitions.copy()\n", " transitions_prior = transitions_prior + hypothesis\n", " \n", " # elegantly calculate evidence\n", " evidence = 0\n", " evidence += gammaln(hypothesis.sum(axis=1)+self.state_count*prior).sum()\n", " evidence -= gammaln(self.transitions.sum(axis=1)+hypothesis.sum(axis=1)+self.state_count*prior).sum()\n", " evidence += gammaln(transitions_prior.data+prior).sum()\n", " evidence -= gammaln(hypothesis.data+prior).sum() + (len(transitions_prior.data)-len(hypothesis.data)) * gammaln(prior)\n", " return evidence" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Synthetic example\n", "\n", "Next, let us consider a synthetic example where we know the mechanisms creating given sequences. In detail, we create a synthetic graph and generate synthetic sequences by letting a random walker walk through this graph. We then compare some hypotheses with each other which should further demonstrate the mechanics of HypTrails." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Synthetic data generation\n", "\n", "First, we generate a random graph. To that end, we create a Barabasi-Albert random network with 13 nodes and new nodes are attached to the existing graph with 2 edges. The graph layout is visualized.\n", "\n", "Note that this network is undirected. However, there are also extensions that allow to generate directed Barabasi-Albert networks. For simplicity, we focus on the undirected case here though." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nH0uKi5lqsVDfSX3UA7+3WMgvKlIIi8h5KYgl6jySmcld2dmMS0gIeRjXA+MSErh7+nQezco67/Ui\nIgpiiTomk4nFhYX87vHHGWmxsCtE990JjLRYGJOdzQsFBSG6q4hEOr0jlqjl9Xp5rayMvKefZkZj\nI/M8nqBWUzcDi8xmSuLjyS8q0kxYRAKiIJaoV1tbyxPTplFjt/OvjY081traoU0/jgJ/iYnh5fh4\nBtlsvPLGG3onLCIBUxCLnOJwOFhZUEB5RQVD4uKwut1YPR764ytl2Ixvb2mn2YwzIYHqpiYmT5pE\nzuzZpKenGzt4EemyFMQiZ3C5XFRVVeG023Fs3syRujqampqIi4ujd3Iy6RkZWG02hg0bph2zROQ3\nUxCLiIgYSKumRUREDKQgFhERMZCCWERExEAKYhEREQMpiEVERAykIBYRETGQglhERMRACmIRERED\nKYhFREQMpCAWERExkIJYRETEQApiERERAymIRUREDKQgFhERMZCCWERExEAKYhEREQMpiEVERAyk\nIBYRETGQglhERMRACmIREREDKYhFREQMpCAWERExkIJYRETEQApiERERAymIRUREDKQgFhERMZCC\nWERExEAKYhEREQMpiEVERAykIBYRETGQglhERMRACmIREREDKYhFREQMpCAWERExkIJYRETEQApi\nERERAymIRUREDKQgFhERMZCCWERExEAKYhEREQMpiEVERAykIBYRETGQglhERMRACmIRERED/T/C\nzS2nVJtttwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "import networkx as nx\n", "\n", "g = nx.barabasi_albert_graph(13, 2)\n", "nx.draw(g, with_labels=True, node_size=1000, width=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we let a random walker run through the network. At each step, the walker chooses one out-link at random. Overall, we generate 100 trails with a length of 5 for each one." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[8, 3, 1, 3, 2], [8, 6, 4, 6, 12], [9, 12, 6, 4, 5], [3, 8, 6, 12, 6], [11, 0, 11, 0, 2], [0, 4, 5, 4, 5], [11, 4, 6, 4, 7], [0, 11, 0, 4, 7], [1, 2, 4, 2, 3], [4, 7, 9, 10, 8]]\n" ] } ], "source": [ "from random import choice\n", "\n", "# let us create 100 individual sequences\n", "i = 100\n", "sequences = []\n", "while(i>0):\n", " # pick random vertex of G\n", " v = choice(g.nodes())\n", " seq = []\n", " seq.append(v)\n", " # let us try to produce sequences with length 5\n", " x=4\n", " while x>0:\n", " # pick random neighbor node\n", " v = choice(g.neighbors(v))\n", " seq.append(v)\n", " x -= 1\n", "\n", " i-=1\n", " sequences.append(seq)\n", "\n", "# show some trails\n", "print sequences[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we visualize one random walk on the network which ends in one sequence out of the set of 100 sequences." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nof8Py/ifYf8FFVEAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# find a sequence with distinct nodes for visibility reasons\n", "i = 0\n", "for seq in sequences:\n", " if len(seq) == len(set(seq)):\n", " break\n", " i += 1\n", "\n", "node_colors=[]\n", "for n in g.nodes():\n", " if n in sequences[i]:\n", " node_colors.append('g')\n", " else:\n", " node_colors.append('r')\n", " \n", "edge_colors=[]\n", "for e in g.edges():\n", " try:\n", " idx1 = trails[i].index(e[0])\n", " idx2 = trails[i].index(e[1])\n", " if idx1 + 1 == idx2:\n", " edge_colors.append('g')\n", " elif idx2 + 1 == idx1:\n", " edge_colors.append('g')\n", " else:\n", " edge_colors.append('black')\n", " except:\n", " edge_colors.append('black')\n", " continue\n", " \n", "nx.draw(g, with_labels=True, node_size=1000, node_color = node_colors, edge_color = edge_colors, width=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fitting\n", "\n", "Again, we start by fitting the model." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "ht = HypTrails()\n", "ht.fit(sequences)\n", "vocab = ht.vocab" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Hypotheses\n", "\n", "Now, having the data to study, we want to compare some exemplary hypotheses with each other. Each hypothesis should express a certain belief about the mechanisms producing the sequences at hand. Remember that each hypothesis can be expressed via belief in parameters of a Markov chain model. We define some hypotheses next." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Uniform hypothesis\n", "\n", "As before, the uniform hypothesis can be seen as a baseline and believes in random transitions." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# we can use an empty matrix here as the HypTrails class then \n", "# properly distributes the chips for elicitation\n", "hyp_uniform = csr_matrix((ht.state_count,ht.state_count))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Structural hypothesis\n", "\n", "With this hypothesis we want to express our belief that the sequences at interest have been generated by a walker that randomly chooses hyperlinks to go to the next node---this means that we do not believe in teleportation here." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 0. 0. 1. 0. 1. 0. 0. 0. 0. 0. 0. 1. 0.]\n", " [ 0. 0. 1. 1. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n", " [ 1. 1. 0. 1. 1. 1. 0. 0. 0. 1. 0. 0. 0.]\n", " [ 0. 1. 1. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0.]\n", " [ 1. 0. 1. 0. 0. 1. 1. 1. 0. 0. 0. 1. 0.]\n", " [ 0. 0. 1. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 1. 0. 0. 1. 0. 0. 0. 1. 0. 0. 0. 1.]\n", " [ 0. 0. 0. 1. 1. 0. 0. 0. 0. 1. 0. 0. 0.]\n", " [ 0. 0. 0. 1. 0. 0. 1. 0. 0. 0. 1. 0. 0.]\n", " [ 0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 1. 0. 1.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0. 0.]\n", " [ 1. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 0. 0. 0.]]\n" ] } ], "source": [ "i_indices = list()\n", "j_indices = list()\n", "values = list()\n", "# let us iterate through all nodes\n", "for k,v in vocab.iteritems():\n", " # get the neighbors of each node (i.e., those nodes the current node links to)\n", " # and set the corresponding value of the hypothesis matrix G to 1\n", " for w in g.neighbors(k):\n", " i_indices.append(v)\n", " j_indices.append(vocab[w])\n", " values.append(1)\n", "\n", "shape = (ht.state_count, ht.state_count)\n", "\n", "hyp_structural = csr_matrix((values, (i_indices, j_indices)),\n", " shape=shape, dtype=np.float64)\n", "\n", "print hyp_structural.todense()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Data hypothesis\n", "\n", "Here, we also want to show that a data hypothesis always gets ranked as the most plausible hypothesis and thus, is an upper limit. In detail, a data hypothesis \"cheats\" by taking the actual transitions for expressing beliefs of the hypothesis. Note that extracting information from the data and use it as a hypothesis is no valid approach and this example should only provide a better understanding of the relative behavior of various hypotheses." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "hyp_data = ht.transitions.copy()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Comparing hypothesis\n", "\n", "We compare the hypotheses with varying concentration parameters k." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111)\n", "\n", "# uniform hypothesis\n", "evidences = []\n", "for k in xrange(0,6):\n", " if k == 0:\n", " evidences.append(ht.evidence(csr_matrix((ht.state_count,ht.state_count)),k))\n", " else:\n", " evidences.append(ht.evidence(hyp_uniform,k))\n", "ax.plot(np.arange(0,6), evidences, marker='o', clip_on = False, label=\"uniform\", linestyle='--')\n", "\n", "# structural hypothesis\n", "evidences = []\n", "for k in xrange(0,6):\n", " if k == 0:\n", " evidences.append(ht.evidence(csr_matrix((ht.state_count,ht.state_count)),k))\n", " else:\n", " evidences.append(ht.evidence(hyp_structural,k))\n", "ax.plot(np.arange(0,6), evidences, marker='o', clip_on = False, label=\"structural\", linestyle='--')\n", "\n", "# data hypothesis\n", "evidences = []\n", "for k in xrange(0,6):\n", " if k == 0:\n", " evidences.append(ht.evidence(csr_matrix((ht.state_count,ht.state_count)),k))\n", " else:\n", " evidences.append(ht.evidence(hyp_data,k))\n", "ax.plot(np.arange(0,6), evidences, marker='o', clip_on = False, label=\"data\", linestyle='--')\n", "\n", "# Further plotting\n", "ax.set_xlabel(\"hypothesis weighting factor k\")\n", "ax.set_ylabel(\"marginal likelihood / evidence (log)\")\n", "\n", "plt.legend(bbox_to_anchor=(1,0.8),loc=\"upper right\", handlelength = 3)\n", "plt.grid(False)\n", "ax.xaxis.grid(True)\n", "plt.tight_layout(pad=0.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Overall, the results accurately represent what we expected as we know the underlying mechanisms producing the synthetic sequences at interest. We can see that the data hypothesis is the most plausible one which also was to be expected as it is built by taking the actual transitions from the data. The structural hypothesis represents a good explanation of the synthetically-produced sequences as it encodes the strategy of the walker---i.e., choosing any out-link at random at each step. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Wikispeedia human Web navigation example\n", "\n", "We now focus on an example of human Web navigation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data\n", "\n", "As previously, we load our data into a list of lists where each element corresponds to a sequence." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import csv\n", "sequences = []\n", "\n", "# from https://snap.stanford.edu/data/wikispeedia.html\n", "for line in csv.reader((row for row in open(\"data/paths_finished.tsv\") if not row.startswith('#')), delimiter='\\t'):\n", " if len(line) == 0:\n", " continue\n", " seq = line[3].split(\";\")\n", " # for simplicity, let us remove back clicks\n", " seq = [x for x in seq if x != \"<\"]\n", " sequences.append(seq)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[['14th_century', '15th_century', '16th_century', 'Pacific_Ocean', 'Atlantic_Ocean', 'Accra', 'Africa', 'Atlantic_slave_trade', 'African_slave_trade'], ['14th_century', 'Europe', 'Africa', 'Atlantic_slave_trade', 'African_slave_trade'], ['14th_century', 'Niger', 'Nigeria', 'British_Empire', 'Slavery', 'Africa', 'Atlantic_slave_trade', 'African_slave_trade'], ['14th_century', 'Renaissance', 'Ancient_Greece', 'Greece'], ['14th_century', 'Italy', 'Roman_Catholic_Church', 'HIV', 'Ronald_Reagan', 'President_of_the_United_States', 'John_F._Kennedy'], ['14th_century', 'Europe', 'North_America', 'United_States', 'President_of_the_United_States', 'John_F._Kennedy'], ['14th_century', 'China', 'Gunpowder', 'Fire'], ['14th_century', 'Time', 'Isaac_Newton', 'Light', 'Color', 'Rainbow'], ['14th_century', 'Time', 'Light', 'Rainbow'], ['14th_century', '15th_century', 'Plato', 'Nature', 'Ultraviolet', 'Color', 'Rainbow']]\n" ] } ], "source": [ "print sequences[:10]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "51318" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(sequences)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fitting\n", "\n", "Before we pay attention to comparing hypotheses, we fit the Markov chain model to given Wikispeedia data." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "ht = HypTrails()\n", "ht.fit(sequences)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Hypotheses\n", "\n", "Now, let us specify some hypotheses for our Wikispeedia data at hand." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Uniform hypothesis\n", "\n", "We start with a uniform hypothesis where we equally believe in each transition. This can be seen as a baseline hypothesis." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# we can use an empty matrix here as the HypTrails class then \n", "# properly distributes the chips for elicitation\n", "hyp_uniform = csr_matrix((ht.state_count,ht.state_count))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Self-loop hypothesis\n", "\n", "This hypothesis just believes that people refresh the page over and over again." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from scipy.sparse import lil_matrix\n", "\n", "# the hypothesis matrix simply has the diagonal set to 1\n", "hyp_selfloop = lil_matrix((ht.state_count,ht.state_count))\n", "hyp_selfloop.setdiag(1.)\n", "hyp_selfloop = hyp_selfloop.tocsr()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Structural hypothesis\n", "\n", "One, potentially plausible, hypothesis could be that people prefer to navigate between pages if a hyperlinks between these pages exists. We can express this hypothesis by an adjacency matrix based on given underlying link network. If a link exists, we believe in given transition." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "i_indices = []\n", "j_indices = []\n", "values = []\n", "\n", "# read the links from file and build matrix\n", "for line in csv.reader((row for row in open(\"data/links.tsv\") if not row.startswith('#')), delimiter='\\t'):\n", " if len(line) == 0:\n", " continue\n", " if line[0] in ht.vocab and line[1] in ht.vocab:\n", " i_indices.append(ht.vocab[line[0]])\n", " j_indices.append(ht.vocab[line[1]])\n", " values.append(1.)\n", " \n", "shape = (ht.state_count, ht.state_count)\n", "hyp_structural = csr_matrix((values, (i_indices, j_indices)),\n", " shape=shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Semantic similarity hypothesis\n", "\n", "Finally, related work has proposed that humans prefer to navigate by semantic similarity between consecutive websites. We formalize this as a hypothesis based on textual tf-idf similarity between Wikipedia pages." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from sklearn.feature_extraction.text import TfidfVectorizer\n", "\n", "articles = np.empty((ht.state_count,),dtype=object)\n", "\n", "# add the article text to the array\n", "for k,v in ht.vocab.iteritems():\n", " articles[v] = open(\"data/plaintext_articles/\"+k+\".txt\").read()\n", "\n", "# build tf-idf features\n", "vect = TfidfVectorizer(max_df=0.8, sublinear_tf=True)\n", "X = vect.fit_transform(articles)\n", "\n", "# all-pairs cosine similarity\n", "hyp_similarity = X * X.T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Comparing hypotheses\n", "\n", "Now, let us compare the plausibility of given hypotheses given the data and some values of k." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/psinger/anaconda2/lib/python2.7/site-packages/scipy/sparse/compressed.py:730: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil_matrix is more efficient.\n", " SparseEfficiencyWarning)\n" ] }, { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111)\n", "\n", "# uniform hypothesis\n", "evidences = []\n", "for k in xrange(0,6):\n", " if k == 0:\n", " evidences.append(ht.evidence(csr_matrix((ht.state_count,ht.state_count)),k))\n", " else:\n", " evidences.append(ht.evidence(hyp_uniform,k))\n", "ax.plot(np.arange(0,6), evidences, marker='o', clip_on = False, label=\"uniform\", linestyle='--')\n", "\n", "# self-loop hypothesis\n", "evidences = []\n", "for k in xrange(0,6):\n", " if k == 0:\n", " evidences.append(ht.evidence(csr_matrix((ht.state_count,ht.state_count)),k))\n", " else:\n", " evidences.append(ht.evidence(hyp_selfloop,k))\n", "ax.plot(np.arange(0,6), evidences, marker='o', clip_on = False, label=\"self-loop\", linestyle='--')\n", "\n", "# structural hypothesis\n", "evidences = []\n", "for k in xrange(0,6):\n", " if k == 0:\n", " evidences.append(ht.evidence(csr_matrix((ht.state_count,ht.state_count)),k))\n", " else:\n", " evidences.append(ht.evidence(hyp_structural,k))\n", "ax.plot(np.arange(0,6), evidences, marker='o', clip_on = False, label=\"structural\", linestyle='--')\n", "\n", "# semantic similarity hypothesis\n", "evidences = []\n", "for k in xrange(0,6):\n", " if k == 0:\n", " evidences.append(ht.evidence(csr_matrix((ht.state_count,ht.state_count)),k))\n", " else:\n", " evidences.append(ht.evidence(hyp_similarity,k))\n", "ax.plot(np.arange(0,6), evidences, marker='o', clip_on = False, label=\"sem. similarity\", linestyle='--')\n", "\n", "# further plotting\n", "ax.set_xlabel(\"hypothesis weighting factor k\")\n", "ax.set_ylabel(\"marginal likelihood / evidence (log)\")\n", "\n", "plt.legend(bbox_to_anchor=(1,0.8),loc=\"upper right\", handlelength = 3)\n", "plt.grid(False)\n", "ax.xaxis.grid(True)\n", "plt.tight_layout(pad=0.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In above figure, we can see the results for comparing four hypotheses about the production of our sequences at interest; each hypothesis is depicted in a distinct color. The x-axis reports the hypothesis weighting factor k that corresponds to the level of belief in a given hypothesis---the higher the fewer parameter configurations receive corresponding belief in the Dirichlet prior. The y-axis reports the evidence. Note that for simplicity, we now state that higher evidence (for the same values of k) mean higher plausibility. For completeness, Bayes factors should be computed to judge the strength of the differences.\n", "\n", "Not surprisingly, the structural hypothesis is the most plausible one. After all, Wikispeedia players are only allowed to utilize hyperlinks for navigation. But, also the semantic similarity hypothesis is more plausible than the uniform hypothesis." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 }