{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Binary Matrix Completion in Julia\n", "### Author: [Alex Williams](http://alexhwilliams.info)\n", "\n", "**License**: \"Creative
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Relevent papers\n", "\n", "Mark A. Davenport, Yaniv Plan, Ewout van den Berg, Mary Wootters. [1-Bit Matrix Completion](http://arxiv.org/pdf/1209.3672v3.pdf) *Information and Inference* 3(3), 189-223. (2014)\n", "\n", "### Relevent Code\n", "\n", "**Github Repo**: [Convex.jl](https://github.com/JuliaOpt/Convex.jl)\n", "\n", "**Paper**: Madeleine Udell, Karanveer Mohan, David Zeng, Jenny Hong, Steven Diamond, Stephen Boyd. [Convex Optimization in Julia](https://web.stanford.edu/~boyd/papers/pdf/convexjl.pdf). *SC14 Workshop on High Performance Technical Computing in Dynamic Languages*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Math Notes\n", "\n", "Let $Y$ be a binary matrix with missing entries. We will fit a model $Y \\approx f(X)$, where $X$ is a matrix of real numbers and $f$ is a function that maps real numbers into probabilities, $\\mathbf{R} \\rightarrow [0,1]$, and is applied element-wise to $X$. Let $\\Omega$ be the set of matrix indices $(i,j)$ that are observed in $Y$.\n", "\n", "We will consider the case where $f(\\cdot)$ is the logistic function:\n", "\n", "$$f(x) = \\frac{1}{1+\\exp(-x)}$$\n", "\n", "The log-likelihood function for a given estimate of $X$ is:\n", "\n", "$$\\mathcal{L}(X|Y) = \\sum_\\Omega \\left [ \\mathcal{I}_{Y_{ij} = 1} \\log\\left(f(X_{ij})\\right) + \\mathcal{I}_{Y_{ij} = -1} \\log\\left(1 -f(X_{ij})\\right) \\right ]$$\n", "\n", "Where $\\mathcal{I}$ is the binary event indicator function. Because $f(-x) = 1-f(x)$ for the logistic function, the likelihood simplifies to:\n", "\n", "$$\\mathcal{L}(X|Y) = \\sum_\\Omega - \\log \\left [ 1 + \\exp(-Y_{ij} X_{ij} )\\right ]$$\n", "\n", "Our goal is to maximize find an $X$ that maximizes the likelihood. However, the problem is under-determined due to the missing entries in $Y$. Thus, we search for an $X$ that is low-rank, which we achieve by imposing a nuclear norm constraint.\n", "\n", "$$\n", "\\begin{aligned}\n", "& \\underset{X}{\\text{minimize}}\n", "& & \\sum_{(i,j) \\in \\Omega} \\log(1+\\exp(-Y_{ij} (X_{ij})) \\\\\n", "& \\text{subject to}\n", "& & ||X||_* \\leq \\gamma\n", "\\end{aligned}\n", "$$\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO: Loading help data...\n" ] } ], "source": [ "using PyPlot\n", "using Convex\n", "using SCS\n", "\n", "# passing in verbose=0 to hide output from SCS\n", "solver = SCSSolver(verbose=0)\n", "set_default_solver(solver);\n", "\n", "# logistic function\n", "lgc(x) = 1 ./ (1+exp(-x));" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "image/png": [ "iVBORw0KGgoAAAANSUhEUgAAAjIAAAEgCAYAAACuOplUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3XuUXWV5x/Fnn0tIQiAJ4SYkkASEgETCzCR0VeQutEnlVtAA0kALWgQUAZEWVFq7FsqtrbTl0sVFiCKsCiqXQIsSKIqQyQHBYrgZEhJASgk3TcK5vP0jzFlzzuzfm3lOdi57/H7WmrUyc/bZ797v3vudd3b27zxJCCEYAABADhU29gYAAAB0iokMAADILSYyAAAgt5jIAACA3GIiAwAAcouJDAAAyC0mMgAAILeYyAAAgNxiIgMAAHKLiQwA5MRNN91khUKh+bV06dKNvUm5dvHFF7f0J/KJI7cOJk6c2HIRDObrlFNO2dib7da+D6VSyUaOHGnbb7+9dXd325w5c+zHP/6xNRqNTNs98MADm20edNBBma4b2Jief/55O++886ynp8fGjRtn5XLZxo0bZ9OnT7fzzjvPXnjhhbWuI0mSDbClfzg8/dk+ASoUCjZs2DAbM2aM7bLLLnbYYYfZ3//939vLL7+c6TbOnz+/pc2HHnoo0/XnFROZdeAdSJIkGRKDT6PRsFWrVtnrr79uTzzxhN1yyy121FFH2V577WW//OUvM2unf18NhX4DGo2GffWrX7UpU6bYlVdeaZVKxVasWGH1et1WrFhhCxcutCuvvNKmTJliX/va14xSePlRq9XsnXfescWLF9sDDzxgF198sU2aNMkuvPBCq9frmbTRPiYyLq5R2tgbkGcXXnihvfPOO83vQwj25S9/ufn95MmT7fOf/3zLez7ykY9ssO1bH/r2afXq1bZkyRKbN29e86+ORYsW2X777Wfz58+37u7udW6r/yDOgI6h4Pzzz7crr7yy+f3o0aNt9uzZtvPOO9tLL71k3//+9+2dd96xRqNh//AP/2CrVq2ySy+9dCNuMQbj9NNPt8mTJ9uKFSust7fXHnjgAWs0GtZoNOySSy6xxYsX2/e+9711bqd9TGRc/EBAppIkaX4ddNBBA17feeedm6+ffPLJ4amnngpHHHFE2GqrrUKSJOGhhx4KixcvblnPTTfd1LKOOXPmNF+bOHHigDbee++9cMUVV4SPfexjYezYsaFcLodtt902HHnkkeG//uu/Mt2nWq0WLrjggpZldt1111CtVpvLPPHEE+H0008Pf/RHfxTGjx8fRo4cGYYNGxY+9KEPhZkzZ4bbbrutZZ1f//rXW9aX9tXXJ4sXLw5nn312+PjHPx522mmnMGrUqFAul8M222wTDj744HDdddeFer3u3mcgawsWLGg5h8ePHx+WLl3assySJUvCjjvu2LLcwoULm6/feOONzZ8XCoWwePHicM0114SPfvSjYfjw4WHbbbcNp5xySnjllVcGtP/YY4+FT3/602GnnXYKm222WRg+fHiYMGFC2H///cOXvvSl0NvbO+A9S5cuDeedd16YOnVqGDVqVBg2bFiYPHlyOO2008Kzzz47YPn2a/d3v/tduOCCC8KkSZNCuVwOJ598cvj4xz/efP3www8fsI5KpdKyjrvvvrv5WqPRCLfddluYNWtW2H777UO5XA6jR48O+++/f7juuutCrVZL7fv77rsv7LfffmHkyJFhzJgx4YgjjghPPfVUy/YWCgV98Naynw899FDL608//XSYNGlSyzI33HBDyzKXXnppOOqoo8Juu+0Wxo0bF0qlUhg1alT46Ec/Gs4555ywbNmyluXXNib2/11w/fXXh09/+tNhzz33DNtss00ol8th8803D3vssUf43Oc+F379618Pel/zgIlMxjwTma6urrD55pu3XEhpE5nvfOc7LevoP5GZNGlSy2svvvhi+PCHPxw94b/yla9kuk8hhDBr1qyW5W6//fbma1ddddVaL8K//uu/bi5/8cUXR5ctFArNPrnrrrvWuu6ZM2eGRqPh2mcga3/5l3/Zcl5ee+21qctdc801Lcv91V/9VfO1/hOZJEnCn/3Zn6We8zvttFNYvnx5833z588PpVIpep1cfPHFLdtxzz33hC222EIuP2LEiHDHHXe0vKf9F3z/SUuSJOGUU04JN998c/P7UqkUXnvttZZ1nHvuuS2Tvb5rd9WqVWHmzJnRfTjooIPC73//+5b1tfdZ39fIkSPDJz7xifUykQkhhMcff7xlmT333LPl9XHjxkX3ZauttgrPPPNMc/m1jXP9fxd0d3dHlx0+fHiYP3/+oPd3U8d/LW1ETzzxhJVKJfvMZz5ju+++u73wwgu2+eabd7y+er1uRx99dPNBwdGjR9uJJ55oO+ywgz322GN21113mZnZpZdeanvvvbcdf/zxmeyHmdlpp51m9957b/P7n/zkJ3bccceZmdnw4cNt3333tX322ce23npr23zzze29996zn/3sZzZ//nwzM7v22mvt1FNPte7ubjvssMNs1KhRdvXVV9tvfvMbMxv433TTp083M7NyuWzTpk2znp4e22abbWzLLbe0lStX2hNPPGF33323hRBs3rx5dscdd9if//mfZ7a/gFf/BzOTJJHX3+zZs+30009vfv/www/Ldd5zzz32yU9+0rq6uuynP/2p/fd//7eZmb388st21lln2Q9+8AMzM7v66qubz2mMHz/ePvOZz9gWW2xhr7zyij333HP2yCOPtDxvsWTJEjvuuONs5cqVZrbm+vvUpz5lw4cPtx/+8If25JNP2qpVq+zEE0+0//mf/7FJkyalbt8jjzxi++67r33iE5+w1atX29ixY+24446zL3zhC/b2229bvV63W2+91c4++2wzW/MM0a233tp8/ymnnNLcrnPPPdfmzZtnZmbFYtGOPfZYmzp1qr300kt2yy232OrVq23+/Pl29tln27XXXmtmZq+++qqdccYZzfUNGzbMTj75ZNt6663t9ttvtwceeED27bqaPn267b333s3nBhctWmSvvfaabb/99mZmNmHCBDv44INt5513trFjx5qZ2bJly+z222+3N99801asWGHnn39+c9y+7LLL7MUXX7Rrrrmm2cbpp59uu+yyi5mtGe/7bLvttvbJT37Sdt11Vxs7dqyVSiV77bXX7M4777SXX37ZVq9ebWeeeaY9/fTT623/N6iNPZMaatZ296L/HZkkScKPfvSjAct0ekem/e7EggULWt73qU99qvnatGnTMtunEEJ45plnBvyl2O5Xv/pVuPXWW8NVV10VrrjiinD55ZeHkSNHNt/zjW98o2X5Aw44YK3t9nnhhRfC7bffHv71X/+1ue7x48en/lULbAwjRoxo+Ws7ZvTo0c1lR40a1fx5+92FU089tflao9EIBx10UMsdht/+9rchhBCOOuqo5s+/9a1vDWhv1apVLXdw+t8V2WGHHcI777zTsuyECROar5999tnN19rvVBx77LGp+/f5z3++uUx3d3fz5z/5yU+aPy8Wi+Gll14KIYTw5ptvttxRuuyyy1rW92//9m8td3neeOONEEII3/zmN1u2p/9/07/11lstd0WyviMTQuuYmyTJgP++e/fdd8P9998frrvuuvCP//iP4fLLL285ViNGjGj577L58+cPqt0Q1hynBx98MFx//fXhn/7pn8Lll1/eclewUCiEl19+edD7vCnjjsxGNHXqVDviiCMyW1/fX2N9ZsyYIZf95S9/ab/73e/W6Q5Qf6HtobP+f909+eSTNmfOnLXO/pcvX+5ud8mSJXbSSSfZI488kvm6gU3dnDlzmv9OksROOumk5l3OEIJVKhX7kz/5EzvggAPsRz/6kZmtCSnceeedtttuu9muu+5qPT09dsABB9gOO+zQXFf/seTVV19t+Wu/Xeza+9u//dvUn5966ql29dVXm5lZpVKxRYsW2ZQpU+y73/1uc5m+uxVmZr/4xS9akj/nn3++nX/++anrrtfr9thjj9nMmTNtwYIFzZ/33f3uM3r0aDvyyCPtxhtvlNu/rtS42Gg07KKLLrIrr7zS3n//ffn+1atX2xtvvGHbbbdd6vqUf/7nf7avfe1r9u6770a3bfny5TZ+/PhBrXNTRvx6I5oyZcqglms/eVevXp263JtvvjnotpMksTfeeGPQy6/Ns88+2/J938WxcuVKmzVrVsskJvkgNpi0RQfVfsUcffTRLQNplusGsrTjjjs2//3WW2+1JB77a3+t/wSjvyRJmr/g+my77bYt369YscLMzL7whS/YqaeeauVyufmL/pZbbrGvf/3rNmvWLNtxxx3tzjvvbL7PM5aocSRJEjnG7bPPPrbPPvs0v587d669//77zf8KM1vz39WdbE+SJPa///u/ZramL/uMHTvWisViy7Lt/ZW1/uNikiTNc+Bf/uVf7Jvf/GZzEqPGLTP/2PXjH//YvvSlL7VMYob6uMgdmY1I3Q1p/4TJvv+n7vP888+nvm/cuHHNfydJYpdccomVSvoQjxkzZrCbulb//u//3vL9IYccYmZr/rJ79dVXmz8/55xz7IILLrCtt97azNYMJJ1OqJ577jl78sknm98ff/zxdtlllzUH/hkzZlhvb29H6waydsABB9iLL75oZmv+OLnttttafln3ue2221q+33///VPXF0Kw1157zT784Q83f/bb3/62ZZm+a7xQKNh1111nl112mT366KP23HPP2QsvvGDz5s2zF1980d5++22bM2eO/emf/qkNHz7cxo0b19zWnXfe2c466yy5X1tssYV8bcSIEfK1U089tfn8yve+9z2bNm1acwK39dZb29FHH91ctv/YZmb22c9+1nbbbTe57p6enpb9N1szqavVai1jYnt/Zemxxx5r+QNuzz33bE48v//97zd/vuOOO9oPfvAD22effaxcLtvVV1/d8lyPV/91jxo1yv7jP/7DDjjgANtss81s3rx5NmvWrI7XvcnaeP+rNTR5npE55ZRTUtfx9ttvt6znL/7iL5qv3XffffJJ9fZnZG688cbU9b/44ovhvvvuy2SfqtVq+MpXvtKyzO67796MPH/3u99tea1SqTTf2///w9P649BDD22+NmPGjAHb9bOf/azl/f0TFM8880wYNmzYoJ+xAda33t7elvN1/PjxA55RWLp0aUv8ulAoyPh1+7Nf9Xo9HHjggS3PmPQ9I/Pss8+G9957b8A2LVy4MPX67P+MzIgRI2Rc9+c//3l48sknm9974sxvv/12yzNyu+yyS/Pf55xzTsuyK1asCOVyufn6nDlzUte5YsWKcOuttza//9a3viXHxBUrVjQ/9mJdn5FpTwA9/fTTA56HvPnmm5uv90+WHnnkkc2ftx/DQqEQlixZ0nz9kUceaVnnvffeO2Db+iex9t5775bXTjrppEE/Y5Mn3JHZBG255ZY2ZcoUW7RokZmZ3XLLLbZ8+XIbPny4/ed//qd838yZM22vvfayX/3qV2a25tbsD3/4Q5s2bZqVSiV7+eWX7Re/+IU9/fTTNmfOHDv88MPd27Z06VK74oorbPXq1bZ06VK79957bdmyZc3XR40aZbfeemvzrlL7reUTTzzRjj/+eHvllVfspptuirY1YcKE5r8XLlxoX/ziF23ChAmWJImdccYZtuuuu1qhUGiWRvjiF79oTzzxhL377rt20003WbVade8fsL50d3fbOeec0/xAvOXLl9vUqVNt9uzZttNOO9mSJUuaH4jX59xzz7Wuri65zhtuuMFef/116+rqsgcffLDl2ZYjjjii+V8n3/72t+3666+3gw8+2CZNmmTbb7+9rV692u64447m8kmSNNMzZ511ll199dW2cuVKW7Vqle2777527LHH2uTJk61ardrzzz9vDz/8sC1fvtxuvPFG23vvvd39seWWW9qxxx5rt9xyi5lZM6GYJMmAO1Vjxoyx0047rflczc0332y//vWv7dBDD7VRo0bZ66+/bpVKxR599FHbcccdbfbs2WZmdtJJJ9nf/d3fNe9qf+5zn7NHH320mVrq+6+3dXXbbbfZ448/bm+//XbLB+L1OeGEE+ykk05qfj9lypRmuvTuu++2z372s7bDDjvYPffcYwsXLpTt9B8TzdY87/Tkk09auVy2rq4uO/jgg23KlCnNNNZTTz1ls2fPto985CM2f/58e/DBBzPZ303Oxp5JDTVZ3JEJIYSbbrqpZV19X9ttt13Yd999m9+3fyDeb37zm7Dbbrulvrf/LD/WdmyfYl977bVXeOqppwa8v/0zZvq+Dj/88Jb0Q/s23XvvvbKt//u//wshhHDGGWekvj5t2rTQ09PDHRlsUhqNRrjoootCsViMXkulUil89atfHfD+9jsyhxxySOr7J0yY0PKBameeeeZar98TTjihpa177rknbLnllmsdS/qnKtvvVKzNww8/PGCdH/vYx1KXXbVqlfzcnP5f7Z+tdf3114dCoTBgueHDh4f99tvPtb1qP9VXuVwOF1100YAP5fz5z3/ecse472vYsGED7pr0vyMTQggzZsxIbevMM88MIay5494/9db/WLV/ltFQuSPDRCZjfSdMoVBI/eU5ceLE5utrm0x85zvfCVOnTg3Dhw8P2223XTj55JPDsmXLwsknn9xsp/2iDSGE3//+9+Hb3/52OPDAA5uf6jhq1Kiwxx57hBNOOCHccMMN4a233uponwqFQigWi2HkyJHhQx/6UOju7g5z5swJd911l/zQuZUrV4Yvf/nLYfz48WGzzTYLkydPDhdeeGFYtWrVWvvj+uuvD9OmTQsjRoxo2Ya+iUy9Xg+XXHJJmDx5cthss83C+PHjwxlnnBHeeuutcOCBB0aPBbCxPPfcc+Hcc88N3d3dYauttgrlcjlstdVWoaenJ5x33nnh+eefT31f3x84fef14sWLw1VXXRWmTp0aRowYIT/Zd+HCheHCCy8Mhx56aJg8eXLYYostwrBhw8J2220XDjnkkHDdddelXr/Lli0Lf/M3fxO6u7vD6NGjQ7lcDmPHjg3d3d3h9NNPD3fddVd4//33m8v3fZhl3/YNxu67795ybav/Eu9zxx13hKOOOipMmDAhDB8+PIwYMSJMnDgxzJo1K1x22WVh8eLFA94zb968sN9++4XNN988jBkzJsyaNSv09vZ2tL1p+1koFEK5XA5jxowJu+66azjssMPCN77xjQGfztvfww8/HPbff/8wcuTIMHr06HDooYeG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" ], "text/plain": [ "Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Construct a random m-by-n binary matrix matrix\n", "m,n,k = 40,40,2\n", "M = randn(m,k)*randn(k,n) # Underlying low-rank matrix\n", "fM = lgc(M) # Probability matrix, maps M onto interval [0,1]\n", "Y = map(x->x>rand()? 1 : -1,fM) # True data, binary matrix\n", "\n", "# Suppose that we only observe a fraction of entries in Y\n", "n_obs = 800\n", "Yobs = fill(NaN,(m,n))\n", "obs = randperm(m*n)[1:n_obs]\n", "Yobs[obs] = Y[obs]\n", "\n", "# Plot the ground-truth, full dataset and our partial observations\n", "figure(figsize=(7,14))\n", "subplot(1,2,1)\n", "imshow(Y,cmap=ColorMap(\"bwr\"),interpolation=\"None\")\n", "xticks([]),yticks([]),title(\"True Data\",fontweight=\"bold\")\n", "\n", "subplot(1,2,2)\n", "imshow(Yobs,cmap=ColorMap(\"bwr\"),interpolation=\"None\")\n", "xticks([]),yticks([]),title(\"Observed Data\",fontweight=\"bold\")\n", "show()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Reconstruct the full matrix, via nuclear norm minimization\n", "Mest = Variable(m,n) # estimate of matrix M\n", "p = minimize(logistic_loss(-Y[obs].*(Mest[obs])))\n", "p.constraints += nuclear_norm(Mest) <= trace(real(sqrtm(M'*M))) # impose low-rank on estimate of M\n", "solve!(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Each observation, $Y_{ij}$, is a stochastic event. We are interested in the probability associated with these events.\n", "\n", "### Put differently, $Y_{ij} \\sim \\text{Bernoulli}(P_{ij})$. How good is our estimate of $P_{ij}$?" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": [ "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" ], "text/plain": [ "Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fMest = lgc(Mest.value)\n", "\n", "# Plot the ground-truth vs our reconstruction\n", "figure(figsize=(7,14))\n", "subplot(1,2,1)\n", "imshow(fM,cmap=ColorMap(\"Greys\"),interpolation=\"None\")\n", "xticks([]),yticks([]),title(\"True\\nProbabilities\",fontweight=\"bold\")\n", "\n", "subplot(1,2,2)\n", "imshow(fMest,cmap=ColorMap(\"Greys\"),interpolation=\"None\")\n", "xticks([]),yticks([]),title(\"Reconstructed\\nProbabilities\",fontweight=\"bold\")\n", "show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### It is kind of difficult to determine how well we did just by eye, so let's look at a histogram:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": [ "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5QWsWLFihWGz2YzVq1ebaceOHTNq1apl3HrrrcWuP23aNMNmsxnHjx/3ZzEBFzt27DBsNpsxd+5cM+3s2bNGs2bNjO7duxe5rrf1HvAXb+r1kiVLDJvNZuzevdvfxQRKJC8vz/jpp58MwzCML774wrDZbEZSUpKldX11vy6Xbks1atRQzZo1S71+cnKyunTpoo4dO5ppLVu2VN++fbVy5UpfFBEoseTkZDVo0EB/+tOfzLQ6derolltu0Zo1a5Sfn29pOxcvXtSvv/4qg+FIKCPJyckKDAzUmDFjzLSQkBDdfffd+vzzz5WRkVHkur6o94CveVOv7QzDUHZ2ti5cuODPogKWBQcHq169epJU4u8Jvrpfl0vw4I2LFy/qq6++UqdOnVyWde7cWd99953OnDlTDiVDdbd371516NDBJb1z587KycnR//73P0vbueKKK1SzZk1FRUXp9ttvp38t/G7v3r1q0aKFU3c5qaDuStK+ffuKXNcX9R7wNW/qtV2fPn0UHR2tiIgI3Xjjjfr222/9UlagLPjqfl3pgocTJ07o3Llzio2NdVlmTzty5EhZFwtQZmamV/Wydu3aevDBB7V48WKtXr1af/nLX7RixQr17NlT2dnZfikzIHlXd72t94C/eFM3IyIiNGrUKL300kt699139cgjjyglJUXdu3dXenq638oM+JOv7tdeD5g2DEN5eXmW8oaGhnq7O+Xm5koqaHr0tH17HqC0SlOvz54961W9HDt2rNP/b775ZnXp0kW33XabXnrpJU2cONFSeYCSys3NLXXd9bbeA/7iTb0eNmyYhg0bZv5/8ODB6t+/v3r16qWnn35aL7/8su8LDPiZr+7XXrc8bNmyReHh4ZZevmi+tk9b6e6L3dmzZ53yAKVVmnodFhbm83qZmJioBg0aKCUlxbsDAorgTd31R70HfMHXdfOPf/yjunbtankKY6Ci8dU14XXLw5VXXqmlS5daytugQQNvd6fatWsrJCREmZmZLsvsaQ0bNvR6P6jeSlOvY2Nj3Tb5eVsv4+LidOLEiVKtC1jhTd31V70HvOWPuhkXF8c4HlRavromvA4e6tevr5EjR3q7GcsCAgLUtm1b7dq1y2XZjh071LRpU0VERJRZeVA1laZex8fHa9u2bTIMw2nO5R07digiIkItWrQocTkMw1BaWprTzGKAr7Vv316b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SJK++eYb7du3z+O6R48e1dKlS7Vq1SpdccUVkqSMjAzNnDlTksyBs5J06623auPGjVqzZo3mzJmj3r17KzCwoHfejz/+qPHjx0sqaD14/PHHtW7dOg0bNkySlJ2drTvvvLPUx2gUamLu0KGDtm3bpvj4eDNt1apV+uSTT7Rt2zY1aNBAu3bt0lNPPSVJatiwoV577TV9+OGH5q/q27Zt07x584rcb0ZGhh544AEZhqGoqCgtWLBA69evN38h/eabbzR58mS36x46dEjjxo3Thg0btGjRIpe+64cOHdKAAQO0Zs0arVy5Uq1bt9aOHTs0e/ZsSVJYWJjmzp2rNWvWmJ/n0aNHdd9991naX2RkpNasWSNJqlWrlt58801t2rRJb7zxhu655x41bNjQaf3t27frxIkT5vlxt/3C5S3JOU5NTdXBgwclSf369dP69eu1bt06vfDCCxo0aJBCQ0PNfRX+vCVpyZIlZl2uU6eOlixZolWrVunMmTNuy1vUttzp2rWrXnjhBa1Zs0YfffSR/v3vf+uZZ56RVPALdnF1pbhrpaguZO3bt3epz8nJydq2bZumTJni1fV16NAhjRgxQh988IFef/11l8/d0ZQpU/Sf//xHUkHr07p16/T666+b/b/Hjx+v9PR0SdL7779vnttZs2YpJSVFK1as0GOPPaY2bdooICBA119/vXk92m3bts18WfXTTz/plVde0auvvmq2WLz33nuy2WxasWKFnnjiCTPvokWLzPcRERGaPn26VqxYoQ0bNuijjz7S8uXL1bx5c0nS7NmzlZ+f7/P7yYULF8zPSypoDf7ggw80fvx4ffXVV5aP21F6erp69OihtWvXasaMGWZ9WrRokdtftA8fPqzOnTsrOTlZ7777rnr27OlVPfr66681Y8YMrV27Vv3795dUMNbuoYceMvOU9hqysm07q9dzYcnJyU736rvuusush44tEoX56x4HeFSekQuqjyFDhpi/cmzcuNEwDMNYtGiR+WvHxIkTnfI7tjz861//MtM3bdrk9GulYRjG+vXrnbbz448/ui3D888/b+YbNmyYmZ6fn+/06+C+ffsMwyh5y4OnX4Q8pRuGYYwbN87c3pQpU4xPPvnE+OSTT4z333/fTG/btm2R53bevHlm3rvuusvcxtatW42IiAjDZrMZNWvWNPM7/lo6YsQIl+05/iLWpEkT48KFC07Lx44day7/+9//bqZnZWUZoaGh5rHaWzuK21+3bt0Mm62gNWn79u1GTk6Ox2N99NFHDZvNZmzYsMFyeUtyjlNTU820kSNHGocOHTIuXrzotiyXX36506/ThmEYAwcONNd/+eWXzXTHeuuu5aFwHfP0S/eZM2eMJ554wmjbtq0RHh7u8itlx44di9z2hg0bLF0rRfFUn725vnr27Glp3xcuXDBq1apl2Gw2IyQkxEhJSTG2bdtmbNu2zbjvvvvM7c2dO9cwjN/ri81mM5KTk83WSnfcfZ52VloeHnvsMTP9qquuMtOXLFlipttbX2vXru20/ffff9/o16+fUadOHeOSSy5x+QX5q6++MvP66n6yY8cOMy0uLs7puunRo4fbeumOY8tDjRo1jF9//dVcNmLECHPZjBkzXM5lVFSUU6uoYXhXj26//XYz/6lTp8z7X0BAgFnXS3sNedq2zWYz0tPTDcNwrg+laXkoKt3O3efvr3sc4AktD/C77OxsrVu3TpJUu3Zt8xfqm2++2fyFbsWKFW7Xtdls6tq1q/n/zp07m++///57SQXTdtp/pXvuued02WWXmX2gX331VfNXoP/973/muo7bDAwMdJqn3v6rTFlwLNPMmTPVs2dP9ezZU4MHDzbTU1NTLW9jyZIl5jauueYa5eTkSJJOnTplDnR1dMMNNxS57QEDBrj06fd0HmNiYsyWIUlu+ya729/dd98tqaAFpVu3boqIiFCzZs10zz33uHwW69atU40aNcw6VNLyFneOW7RooZ49e0qS3njjDTVt2lQRERHq3r275syZo3Pnzrndr53jWBzHuur43huJiYl68skn9Z///Ee5ubku0zwWHt9SWM+ePS1dK6XhzfVV3OB3u6ysLPMYz507p2uvvVa9evVSr1699PLLL5v5Dhw4IEm67bbbzIHXw4YNU506dVS/fn0NGTJEKSkpJTi64nXp0sV8X6tWLUkF969OnTqZ6bVr15bk/Dm9/fbbGjx4sDZt2qTjx4/r4sWLTp+pYRg6deqUpTKUpK471tX4+Hin68bxWEqiVatWioyMdLudw4cPu+T/4x//qJo1a3o8hpLWI8f8UVFR5kQchmGY+y/tNeRp25JcxuCVtbK8xwESA6ZRBt59913l5eVJko4fP66goCAFBASofv36unjxoqSCQODzzz8vdls2NzOhhIWF6dNPP9X06dPVt29fxcbG6syZM9qyZYvGjBmj5557zrcH9BvHQYCSPA6KLYrjlzX7H7HCrwsXLig/P9/SNorajruuM8VNO1naaSk9fQl1t727775bH374oW6//Xa1bdtWoaGhOnTokBYvXqxrrrnG/OL0448/av/+/erbt6+CgoIsb78k59hms+mDDz7Q3LlzNXDgQF1++eXKy8vT9u3b9cgjj2jcuHGlOR0e52R3THesT+7q0g8//KD3339fkhQZGamXX35Zmzdv1scff2zmsV9PnpTXtVIcq/XMal23B81t2rTR7t27NXbsWF199dWqWbOmsrKy9M4776h///6W7jlWOU6Z6vhFPCoqqsj1FixYYL4fNWqUNm7cqK1bt6pfv35menGfq50v7idlqaynvfXFNVQRVYR7HKoXggf43fLlyy3lczfrkmEY2rFjh/l/x/eOU0TWqVNHjz32mDZu3KiMjAx99913Zv/9t99+W5Kcfily3E5+fr727t1r/r9FixZFltP+ZeD48eM6f/68pILZKzy1EDh+kSgccDiWKSkpSRcuXHB5nT592uOX5cLbmD59usdt2H9xduTpS21Ryz2dx+PHj+u7776TVHDM7qYs9LS//v37KykpSV9++aWys7PNfsRHjx7VZ599Jklm61VRv1IXV14r5zgiIkLjx4/XunXrdPjwYf3000/mzFr2uuRJ06ZNzfe7du0y3zueJ0eOXzgzMzPN9+5mDcrIyDDf9+/fX3/961/Vs2dPBQcHF1mmwqxcK6XhzfVVXD20q1u3rvlLdWRkpE6fPu3yWZ4/f15Lliwx12ndurXmz5+vzz77TCdOnDBnE7p48aLeffddM5/jdepNC0xJ2T9Xm82mF154QX379lW3bt3McRuF+ep+4lhX9+7d6/Sl2VN9LU5qaqqys7PdbsexVdKuJPcXK/XIMf+pU6f0zTffmPu54oorvLqGitu2rxT1+XpSlvc4QOI5D/Cz48ePa+PGjZIKvnTbBznb5eXlacKECZIKBv/94x//cNnGo48+qsDAQIWHh+vRRx8102+88UZJ0qeffqqxY8dq6NChatasmerUqaOvvvrK/PXR3gw7dOhQTZw4Ufn5+Xr77bf1xBNPqGvXrkpKSjKnF23Tpo3atWtX5DE1b95cu3fvVk5Ojm699Vb17NlTL730ksdfrOxdFQzD0CuvvKKBAwcqPDxcHTt21K233qp//vOfkqRx48YpKytLbdu21cmTJ/Xdd99p/fr1at26tV588UWP5Rk6dKgmTZqkc+fO6emnn5ZU0F0gJydHhw8fVkpKigICAvTee+85rWf1C1thiYmJZpkXLFighg0bqlmzZpo/f755rvv37+/SHcHT/oYMGaKoqCj16NFDcXFxOn/+vNMXb/s2161bJ5vNpkGDBpWovCU5x+np6br22ms1fPhwXXnllapfv74OHz6sY8eOOZXFk8GDB+vDDz+UJE2dOlVhYWGKiIhwqreOHAO6559/XjVq1NDBgwedvvzaXX755eb7lJQUvfXWWwoICPA4GN4dq9dKafjq+ipKQECA/vznP2vhwoXKzs7WddddpwcffFC1a9dWenq69u/fr9WrV2vFihXq2rWrnn32WW3evFkJCQm69NJLFRER4RSYOR5v7dq1lZaWJsMw9MILL6hDhw6qWbOmpXn1S3stSQU/ghw8eFCGYejxxx/XddddpzfeeMPselWYr+4nHTp0UKNGjZSRkaEjR45o5MiRuu2225SSkmIG7CV15swZDR8+XA888ID27dtndke12Wzm/bo43tSj5cuXq1WrVoqPj9eCBQvMet2+fXs1atTI6XMq6TVU3LYdeVMf7J+vVPAjQq9evRQSEqJ27dp5bMUqy3scIIkB0/CvhQsXuh385shxakv7VJGOA6Ydp5Wzvxo1amRkZWUZhmEY27Ztc1nuONjw2WefNff10ksvuUxNZ39FR0cbX3zxhZnX02DWxYsXu6wbFRVlXHrppeb/HQcyLliwwCV/48aNzeVTpkzxWH6bzWbce++9xZ7nRYsWuQy0dHwNHDjQzOtpUJ9dcQP2DMMwJk6c6HFfDRs2NNLS0izv79prr/W4rdjYWOPXX381cnNzjfDwcKfBjCUpr9Vz/OOPP1r+LOwDbG02m5l27tw5Iz4+3mW9li1buv3s8/PznbZjf7Vu3dp8f+edd5r5ExISXPL27NnT7bbd1d+SXCueOF6bhQfs+uL6Ks7JkyedBiS7O44dO3YYhmEYTz31lMd8gYGBxmeffWZu929/+5tLnt69exuG4TzI1/Hz8FS3PZ0jd3UmOTnZZb9hYWFGp06d3G7bl/eTt956y22e5s2bW/5sHAdMN27c2IiOjnbZ3pgxY8z8ngafOyptPXL3tyI4ONjp/JX2GrKy7eIGTDtu29N9y3HiCceXfXue6pY/7nGAJ3Rbgl/ZuyLZbDanwVuO7INobb9NaWh/b/83OTlZY8aMUZ06dRQeHq5BgwZp69atiomJkVTQZDtx4kR169ZNDRo0UFBQkCIjI9WlSxe9+OKLeuSRR8x93Xvvvdq4caMGDhyomJgYBQUFqVGjRrrjjju0e/dudezY0czrWAZHf/nLX/Too4+qXr16Cg8PV9++fbVt2zazG0Dh/H/96181ceJEXXbZZbrkkktcBug99dRTWrNmja677jrFxMQoODhYcXFx6tWrl2bPnq0pU6YUe57HjBmjzZs36+abb1aDBg0UHBys2NhYXX311Xriiezicm8AAAJ9SURBVCecWnQ8HZfV5ZL0zDPPaOXKlbrmmmvMh281adJEDzzwgPbs2eP0K3lx27vvvvs0fPhwNWvWTJGRkQoKClJcXJxGjBihTz75RJGRkfroo4+Um5vrtsuSlfJaPccxMTGaNm2aevfurYYNGyo4OFjh4eH6wx/+oKefflovvPCC034Lf5ZBQUHauHGjbrvtNkVHRys6OlrDhw83+1QXzh8YGKh3331X3bp1U0hIiC699FJNnz7d/BWxcP433nhDd9xxh+rUqaNatWpp5MiRZotS4bzuzktJrhVPijrfvri+ilOzZk1t375dTz75pNq1a6fw8HBFRESoRYsWuuWWW7Ry5UpzOtNBgwbpr3/9q9q2bavatWsrMDBQMTEx6t+/vzZs2KBu3bqZ2502bZrGjBmjhg0bKiAgwOV82sta3DkuLr3wNoYMGaJFixapefPmCgsLU5cuXbRhwwazxcOf95Phw4dr+fLluvLKK82Hii1ZskS33Xab230Xp0mTJtq6dat69+6t8PBwxcbGasqUKU6D2a187qWtR5MnT9Zzzz2nxo0bKyQkRB06dNDatWvVq1cvM39pryEr2y7q2KzWnZiYGL377rtq3769wsPDLa/nj3sc4InNMKrY8+0BVDn333+/Fi5cqO3bt/ts5iIA3ktLSzP7/Pfu3VsfffRROZcIgL/R8gCgwouPj9f06dMJHAAAKGcMmAZQ4Y0ePbq8iwAAAETLAwAA8FJJx0cAqLwY8wAAAADAEloeAAAAAFhC8AAAAADAEoIHAAAAAJYQPAAAAACwhOABAAAAgCUEDwAAAAAsIXgAAAAAYAnBAwAAAABLCB4AAAAAWPL/Ac7eQuTvdCGfAAAAAElFTkSuQmCC" ], "text/plain": [ "Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "figure(figsize=(8,3))\n", "PyPlot.hist(vec(fM-fMest),100)\n", "xlim([-1,1]),xlabel(\"Absolute errors/residuals for estimated probabilities\",fontweight=\"bold\"),tight_layout()\n", "show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Our estimate isn't perfect, since we have incomplete data and each data point is a noisy event.\n", "\n", "### To get a sense of how good our estimate is, compute the [Hellinger distance](http://en.wikipedia.org/wiki/Hellinger_distance) between our estimate and the true probabilities. Then, compare this to how well we could do by randomly guessing the probabilities." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": [ "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qVMwGAxYunQpevbsib/85S82t3P69GkMGzYM/fv3x8GDB3lLheTkZHz33XeYNm0aRowYAQcHB2zduhW3b98GUBVfXnjhBb6dsLCwarfft29fDB8+HBUVFXB1da3xuBp6jj/++GO+jc6dO2Pq1KmQyWRIT0/HtWvXcO7cOerf+wjExcXhiSeewMiRI/HLL7/gzJkzAKpqlbZv345XXnkFAFBcXIwJEybwGmmpVIpnnnkGbdu2xaFDh5CYmAigqgVQ586dsXLlSpvv9/333+PJJ59EREQELl26xGvtCgsL8eyzz/JWKzt27IBGowEAuLq6Yu7cufDw8EB2djZu3bqFuLg4wfXSmPdb165dMWHCBIhEIpSXl2PgwIHo1KkTryX86quvBN/Be/bs4X9PnjyZ9xnduHEjtm3bBqCqH9jo0aMRHh6OnJwc7N69G0VFRbh69Sqefvpp/PDDDwCA8vJyzJ49G5WVlXy9mTNnomPHjjh8+DCOHDlS20dq00svvYSjR48CACQSCaZMmYLu3bsjNTUVX375JSoqKhAbG4u//e1v+Oyzz2xu4/z587w2My0tDV9//TWAqtYL7733HiIiIuDu7o73338fFy9exDfffMPXXbVqFY8t/v7+Nrd/+vRpeHh4YPr06fD09LRZY2qZR23IOT5w4ACysrIAVOX9nnvuOfj7+yM3Nxepqak4depUw2NRg4p9pFVr37691RNUc3WtgROJRA+0Bm79+vXVPnEtLCxk7u7uNT5VZIyxixcvsi+//JJt3ryZbdiwwarW4Msvv6zXuTH3+++/s71797KPP/6Ybdy4kW3YsIHZ29vz9desWcPTTpw4kS9/9913rbZVXl7O7t27x/83r0H09fVlxcXFgrT+/v789b/97W/8tdTUVMHxmZ6kk5avV69egifU+fn5/DXL+3bp0qX8NfPaE5FIxL766iv+mlqtZq6urvy1rl278tdcXFz48nPnzlntT35+PisqKuL/m9eCjRs3TpD22rVrgn347rvv+GvmsUMkErGPPvrI5vGb13y99NJLfLl5rWSHDh348sOHD9f4pHzatGn8tZ49e/Llo0aN4stlMhm7desWf83y6XtdY535U3mlUsnS09P5a0ajkfXt25e/PnHiRP6aZY3A5MmT+WtqtVpQ629+TizPa3X7aVkDN2XKFJvpqquBa+g57tmzJ1/+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KpOxit7YKYETEZGmwFICFxsbW2WbqhKtgoIC5s+fz9y5c8nMzKywjcPh4IcffuCHH35g0aJFtG3blvj4eB544AF8fHyqFevVV19d7ljnzp259NJL+eGHH8rdz2638+uvv+Lv719hf5s2bSI7O5tJkya5HJ88eTLLli1jzZo13HXXXdWKTURE/icqKqraSZi7b+xEREQaC0sJ3JIlS2p844iICI4dO1buWOfOnWnVqhUOh4MTJ06wf/9+UlNTAcjIyGDatGnMnj2bjIwMy/d2OBwcPXqUHj16uBwvKCjA39+fgoICAgMDiYmJ4fnnn6dFixZmm127dgHlp+r06dMHm83G7t27lcCJiNQxd9/YiYiINBY1nkKZk5PD/v37AczkqzqOHTuGr68v0dHR/P73v+d3v/tdhevNnPfYsGEDK1euZNWqVRw9erRGMS9btoz09HSeeeYZ81hoaCiPPvooffr0wW63s27dOl555RW++uorNm/ejIeHB3A6ifTw8KB169YufXp5eREcHEx6enqNYhMRkepx542diIhIY2E5gUtNTWXSpEl89NFHwOm3WjabjSFDhvDKK69UuUdcQkICEydOJCgoqMp7tWrVilGjRjFq1Ch++eUXXn31Vath88MPPzB58mSuueYa7r77bvN4YmKiS7vRo0cTGRnJ9OnTWbFiBWPGjAFOr4Hz8vKqsG9vb28KCwstxyYiIiIiInIulhK4zMxMrrnmmnJr15xvrq655hq+/PJLLr744kr7mD59upVbExwcbPnazMxMhg8fTmBgICtWrKhynV58fDxPPvkkGzduNBM4X19fSkpKKmxfVFSEr69vlX2e/aYxJiaGmJgYN76JiJzL8uXLWb58ucux3NzcCxSNiIiISO2xlMDNmjXLTN68vb2JiIgA4MCBA5SUlJCRkcGsWbP429/+ZjmwI0eOUFBQQJcuXSz3cabc3FyGDRvGyZMn2bp1K23atKnyGh8fH4KCgsjOzjaPtW3blrKyMrKyslymUZaUlJCdnU1oaOg5+5wzZw59+vSx/kVEpEoVPRT58ssvueKKKy5QRCIiIiK1w9JG3mvXrgVgwIABpKWl8d133/Hdd99x5MgRBg4cCMCaNWvc7jcnJ4dJkyYRGBjIJZdcQrdu3SgsLOTmm2/mpptuKrf5dnUVFRUxcuRI9u/fz4cffki3bt2qdV1e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RBqehIQEjhw5wt69ewkNDQUgOjoau93Oo48+SkxMjLmmpbi4uNz1RUVFwP/WvVQkPj6+3DgVExNDTExMbX0NkSZv+fLlLF++3OVYbm7ueY/jfIwpoHFF5HyoybhiKYF7+umnrVx2Th07dqwy6WvevDldunRhzJgx3HHHHdXqNzQ0lMzMTEJCQvjiiy/o27dvpW09PT258847z9lfYWEh06dPZ8SIEeZC4PHjx2O320lISOC+++6jVatW1YpNRBq3bdu20bt3b/OHltPIkSNZsmQJu3fvpmvXrsD/pj2dKSMjg+Dg4HPOQJgzZw59+vSp3cBFxEVFycuXX37JFVdccV7jOB9jCmhcETkfajKuWErgBgwYgGEYvPzyy+U27j58+DCLFy/GMIxqvalzOnToULXaff/997z//vusXr26WlUwvby8zGpNVU3rdDgc2O12fv31V/z9/Stss2nTJrKzs8sVVJk8eTLLli1jzZo1qpYpIgCUlpZSVlZW4XGAU6dO0a5dOy666CJ27txZrt2OHTvo1atXnccpIg2DxhQRAYtr4JKTk0lOTq7wNd+hQ4eYOXMmM2fOrHFw5/L222/zxhtv1GqfBQUF+Pv706pVK4KDg3nggQfIz893abNr1y6ActWd+vTpg81mY/fu3bUak4g0XH369OHLL79k3759LseXL1+Oh4cHPXv2BOC2227jww8/JC0tzWyzceNG9u3bx+23335eYxaR+ktjiohAHRQx+eWXXyxdd+zYMXr27El4eDjr168nJyeHnJwc1q1bR3h4OL/5zW/Yt28fa9eupX379gAsWbKk1uIODQ3l0UcfZcmSJbz99tvcfPPNvPLKKwwdOtTlaVdGRgYeHh60bt3a5XovLy+Cg4NJT0+vtZhEpGF75JFHsNls/Pa3v+WZZ57hlVde4aabbuL9999n3LhxtGnTBoAnnniC5s2bM2DAAObPn8+zzz7L7bffTs+ePRk7duwF/hYiUl9oTBERcGMK5dKlS1myZIm5Ts3hcPDggw+6LHK12+18/fXXAAQGBroVyJQpU/j6669JSkrixhtvNI8PGTKE559/njFjxjBjxgzefPNN5syZw2233cZXX33l1j3OJTEx0eXz6NGjiYyMZPr06axYsYIxY8YAp9fAOTfKPJu3t7cqO4mIqWfPnmzevJkZM2bw17/+laKiIiIiIkhMTHQpeBQWFkZycjIPP/wwjz32GN7e3owYMYLZs2er1LeImDSmiAi4kcD99NNPJCcnuxxzTiesyJVXXulWIO+//z4AeXl55c4VFBQAsGbNGgBzYW1FbWtTfHw8Tz75JBs3bjQTOF9fX0pKSipsX1RUVGVlJxFpWq688spqbZx76aWXsn79+vMQkYg0ZBpTRKROdsa+4oor+Nvf/ubWNc4CI4888giFhYX069cPwzDYsWNHuWIoJ06cAKjzao8+Pj4EBQWRnZ1tHmvbti1lZWVkZWW5TKMsKSkhOzu7XGWos6k0r0jdqy8lv0VERERqW7UTuPj4eO655x4AIiIiAHjnnXdcSl3abDYCAwPx8/NzO5Do6GjeeOMNsrOzeeCBBypsc/PNNwOny+gCREZGun0fd+Tl5ZGVlcVFF11kHuvduzcAO3fuZNiwYebxlJQU7HZ7ldWdVJpXpO7Vl5LfIiIiIrWt2glcQECA+eYoNjYWwzD4zW9+Q3h4eK0E8tJLL/H999/zxRdfVHg+KiqKOXPmAKfL4F5//fW19taquLiYkpKScolnQkICAEOHDjWPDRw4kKCgIBYsWOCSwC1YsIAWLVowfPjwWolJRERERETkbJamUFZU/TE3N5ft27dTUlLCwIHC/quuAAAgAElEQVQD3X4LFxwczPbt23nttddYtWoVBw8eBKBz585ER0dzzz330KzZ6XBff/11t/qeP38+OTk5ZoXI1atX8/PPPwMQFxdHdnY2vXv35s477zQ3wPzoo49Yt24dw4YN45ZbbjH78vHxISEhgcmTJzN69GhuvPFGtm7dyrJly0hMTNQm3iIiIiIiUmcsJXCLFy/mtddeIzQ0lH//+9/s27eP66+/nszMTADatGnDtm3bzKmW1eXp6cl9993HfffdZyWsSs2ePdvcKNwwDN577z1WrlyJYRjExsYSGBjIyJEj+fjjj1m6dCllZWV06dKFZ599lqlTp5brb+LEiXh6ejJ79mxWr15N+/btmTt3LnFxcbUat4iIiIiIyJksJXArV67k008/5U9/+hNwOkFyJm8AmZmZPP30026/KXPKy8sjJyfHLGxyJucecO746aefqmzjbqwTJkxgwoQJbsciIiIiIiJilaUEzrnX27XXXgvAhg0bAHjooYfYuXMnn376KZs3b3arz+LiYp555hkWLlxY4WbgDocDwzBcNtUWERERERFpSiwlcMeOHcMwDEJDQyksLOTgwYP4+Pjw17/+lfXr1zNy5EiOHj3qVp8PPfQQCxcuPGebit7IiYiIiIiINBWWEjjDMHA4HGRmZppv47p06YKHh4dZaMTHx8etPpOSksy/u3XrRlBQkNnXmfcVERERERFpqiwlcJ06deL777/ngQceoHnz5gDm/mdpaWkAXHzxxW71WVxcDJwu3T99+nQrYYmIiIiIiDRqNisXOfdfO3HiBEeOHAHgzjvvBP63yba7G+YOHDgQgMsuu8xKSCIiIiIiIo2epTdwjz/+OHa7nffffx8vLy/Gjx/PkCFDADh58iSDBg1i9OjRbvX50ksvsX37dqZPn05ERAQ9e/a0EpqIiIiIiEijZSmBs9lsPPnkkzz55JPlzr377ruWAhk8eDCnTp1iz5499O7dG39/fwIDA83zziqUzg2+RUREREREmhpLCVxdcG60DaeTtdzcXHJzc13aqIiJiIiIiIg0ZZbWwDkcDhYtWsSVV15JcHAwHh4eLv9sNhseHh61Hau2ERARERERkSbN0hu4p556ilmzZtVqIHa7vVb7ExERERERaWwsJXD/+te/zL99fX0JDAzUnm0iIiIiIiJ1zFIC51ybFhcXx5w5cywla8nJyRiGQa9evfD39zc/V6V///5u30tERERERKQxsJTA9evXj+TkZH73u99ZftM2YMAADMNg69atXHPNNebnita5OY8bhkFZWZml+4mIiIiIiDR0loqYvPDCC/j6+vLCCy9w/Phxyzc/O1mrrEiJ87iKmIiIiIiISFNm6Q3ctGnTaNWqFdu2baN9+/Z069bNZc82p08++aTSPmJjYzEMg5CQEPNzVbSuTkREREREmjJLCVxycrL5d3FxMV999VW5NlUlW0uWLDnnZxEREREREXFlaQpldWi6o4iIiIiISO2y9Abu4MGDNb7x2LFj3ZoS6Sxisnjx4hrfW0REREREpCGylMCFh4fX+MZLly51+xolcCIiIiIi0pRZSuCcduzYwfLly9m3bx8AkZGRxMTE0Ldv31oJ7myalikiIiIiIk2Z5QTu8ccf5/nnn3c5tnbtWubNm8ejjz5KYmLiOa8/V4XKyqgKpYiIiIiINGWWErgVK1aUS96cHA4Hzz//PH369GHUqFGV9nHDDTdYubWIiIiIiEiTZakK5d///ncAfHx8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eXl51u/BZWdny9XV1e69N23aVP7+/vrll19qtVYAAAAAjVe1b+Q9cuRIHTx4UB999JF++OEHGYahyy+/XOHh4fLy8nJkjVa11cgVFhZKOnvk8I88PDysc9zc3FRYWKimTZtWuI67u7t1LQAAAABwtGo3cJLk5eWlW265pcJtu3fv1pVXXnnB15eXl9dk9w7j6ekpSSouLrbbVlRUZDPH09NTJSUlFa5TVFRknfdnZs2apebNm9uMRUVFKSoqqsp1A6hYYmKiEhMTbcbqy5VxAQAAaqJGDVxFPv74YyUkJCglJaVWvq9WG86dOnnuVMrzZWdny9/fX25ubta5ZWVlys3NtTmNsqSkRHl5eWrTps0F97V06VL16dPHgdUD+KOKPhRJS0tT3759nVQRAACAY1TpO3DvvfeewsLC1K1bNw0fPtzm6owbNmzQVVddpRtvvFHJyckXXasmpxo6+jTFtm3bKjAwUDt27LDblpqaar1/nCRdddVVkmQ39+uvv1Z5ebnNXAAAAABwpEofgdu0aZP+8pe/WL+Htn//fm3dulUlJSX67rvv7G5iXdHVJc/Xtm1bTZs2TTExMerSpUulajhw4IBWrlypFStW6MSJE5UtvVLGjh2rNWvWKDMz03orgZSUFGVkZOiBBx6wzhs2bJhatmypV155RSNHjrSOv/LKK/L29taoUaMcWhcAAAAAnFPpBu65556r8CqRDz74oHJycqxjXl5eio6O1n333XfB9X799VclJCRo8eLF6tGjh8LDw9WnTx917txZfn5+MgxDJ0+eVEZGhtLS0pScnKw9e/ZU60ImL774on799VfrFSLfe+896z3lZs6cKV9fX82dO1fr1q3T9ddfr9jYWBUUFCghIUEhISGKjo62ruXh4aEFCxbo3nvv1fjx4xUeHq7t27frzTffVHx8PDfxBgAAAFBrKt3A7dy5U5J05ZVXat68eSovL9eCBQv0zTffSDrbuM2ePVszZsyQn5/fRdd76qmn9PTTT+vEiRP67rvv9N1330myP3L3x4YtICCgUveYO9+SJUusNwm3WCxav3693n33XVksFk2ePFm+vr4KDg7Wtm3bdP/99+uhhx6Su7u7IiIitGTJEuv33865++675ebmpiVLlui9997TpZdeqmeffVYzZ86sUl0AAAAAUBWVbuDy8vJksVgUFxenMWPGSJJc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LrFuO3ea07nTns6XnZ0tf3//C17ye+nSperTp4/jiwZgVVHzkpaWpr59+zqlntrMFIlcAepCTXKFBg4AalFRUZFGjx6tAwcOKDk5WVdccYXN9rZt2yowMFA7duywe21qaqp69+5dV6UCMAEyBQDfgQOAWlJWVqYJEyboq6++0rp16zRgwIAK540dO1YbNmxQZmamdSwlJUUZGRmKjIysq3IB1HNkCgCJI3AAUGseeOABvf/++xo9erRyc3O1du1am+1//etfJUlz587VunXrdP311ys2NlYFBQVKSEhQSEiIoqOjnVE6gHqITAEg0cABQK3ZvXu3LBaL3n//fb3//vs22ywWi/WXreDgYG3btk3333+/HnroIbm7uysiIkJLliy56HdVADQeZAoAiQYOAGrNli1bKj23e/fu2rRpUy1WA8DsyBQAEt+BAwAAAADToIEDAAAAAJOggQMAAAAAk6CBAwAAAACToIEDAAAAAJOggQMAAAAAk6CBAwAAAACToIEDAAAAAJOggQMAAAAAk6CBAwAAAACToIEDAAAAAJOggQMAAAAAk6CBAwAAAACToIEDAAAAAJOggQMAAAAAk6CBAwAAAACToIEDAAAAAJOggQMAAAAAk6CBAwAAAACToIEDAAAAAJOggQMAAAAAk6CBAwAAAACToIEDAAAAAJOggQMAAAAAk6CBAwAAAACToIEDAAAAAJOggQMAAAAAk6CBAwAAAACToIEDAAAAAJOggQMAAAAAk6CBq6bi4mLNmTNHbdq0kZeXlx8K/NkAABQASURBVK6++molJyc7uywAJkWmAHA0cgVomGjgqunOO+/U0qVLdfvtt+v555+Xq6urbrrpJn322WfOLg2ACZEpAByNXAEaJhq4akhNTdX//M//aNGiRXrqqacUExOjzZs367LLLtPs2bOdXZ7TpKamOrsE1ECiswtoxMiUipEp5keuOA+5UjFyxdzIlLNo4KrhnXfeUZMmTXTXXXdZx9zd3TV16lR98cUXysrKcmJ1zrNjxw5nl4AaIBSdh0ypGJlifuSK85ArFSNXzI1MOYsGrhrS09PVtWtX+fj42IyHhoZKknbt2uWMsgCYFJkCwNHIFaDhooGrhuzsbAUFBdmNnxv75Zdf6rokACZGpgBwNHIFaLho4KqhsLBQ7u7uduMeHh7W7QBQWWQKAEcjV4CGq4mz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8svt9nHFFVeovLxcR44cUbdu3f50382bN5cktWvXzm785MmTduuaSU5OjvLz87Vs2TItW7bMbrvFYlFOTo7mzJmj5ORk9e/fX507d1Z4eLgmTpyoQYMG1Wj/NflZb9iwQU888YR2796t4uJi67iLy8U/F6rs+0b9Qq7Uf2QKmWImZIo5kCv1L1do4BooT09Pm+fjx4/XF198odmzZ6t3797y8fFRWVmZRowYofLycrvX/9lVgIw6uELPn+27ovG6qKc2nfvZ33777brjjjsqnNOrVy8FBgZq//792rBhgzZt2qSkpCS9/PLLmjdvnuLi4qq9/+r+rLdv366bb75ZQ4cO1SuvvKKgoCC5ubnp9ddf11tvvXXR/Vb2faN+IVfqPzKFTDETMsUcyJX6lys0cI3AyZMntXnzZj3++ON69NFHreMZGRnVXvOyyy5TeXm5Dhw4YPNJ1v79+23mBQYGysvLS/v27bNbY9++fXJxcbH7BKUxCQwMVLNmzXTmzBkNGzbsgnO9vLw0fvx4jR8/XqWlpbr11lv15JNPau7cuWratGmd3vwyKSlJXl5e+s9//iM3Nzfr+GuvvWZXR0V1VeV9o34iV+onMoVMMSsypf4iV+pfrvAduEbg3CcUf/z06tlnn632mueu3PP8889fcE1XV1eFh4fr3//+tw4dOmQdP3bsmN566y0NHjxYPj4+1a6jLoOgNri6umrs2LFKSkrSnj177LafOzR/4sQJm3E3NzfrqRylpaWSJG9vb0mqtVM1zv9Zn/s3debMGevYwYMH9a9//cvudd7e3nY1VfZ9o/4iV+onMoVMMSsypf4iV+pfrnAErhHw9fXVkCFD9PTTT6u0tFRt2rTRRx99pIMHD1Z7zSuvvFJRUVF6+eWXlZ+fr4EDByolJUU//vij3dwnnnhCH3/8sa699lrdc889cnV11bJly1RaWqqnn366Bu/M/KclSNKiRYu0ZcsWDRgwQNOmTVO3bt2Ul5entLQ0paSk6MSJEwoPD1dQUJAGDRqk1q1ba+/evXrppZc0atQoaxj269dPkvTII49owoQJcnNz08033ywvLy+H/JzOXyMiIkJLly7ViBEjFBUVpePHj+vll19Wly5d9M0339i8rm/fvkpOTtbSpUsVFBSkjh07qn///pV636i/yJX6i0whU8yITKnfyJV6lit1d8FL1IW4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" ], "text/plain": [ "Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Measure reconstruction error with Hellinger distance\n", "function Hellinger_dist(p,q)\n", " return sum((sqrt(p)-sqrt(q)).^2 + (sqrt(1-p)-sqrt(1-q)).^2)\n", "end\n", "\n", "# Build a list of unobserved entries\n", "not_obs = (Int64)[]\n", "for i = 1:(m*n)\n", " if !(i in obs)\n", " push!(not_obs,i)\n", " end\n", "end\n", "\n", "nr = 100\n", "rdf = zeros(nr) # random distribution of distances, full matrix\n", "rdo = zeros(nr) # random distribution of distances, observed entries\n", "rdu = zeros(nr) # random distribution of distances, observed entries\n", "for a = 1:nr\n", " rdf[a] = Hellinger_dist(rand(m,n),fM)\n", " rdo[a] = Hellinger_dist(rand(m,n)[obs],fM[obs])\n", " rdu[a] = Hellinger_dist(rand(m,n)[not_obs],fM[not_obs])\n", "end\n", "\n", "function plot_error(rr,ind)\n", " bar(1,mean(rr),color=\"k\",align=\"center\",width=0.2,alpha=0.4)\n", " bar(1.4,Hellinger_dist(fMest[ind],fM[ind]),color=\"r\",width=0.2,align=\"center\")\n", " plot(1+0.025*randn(nr),rr,\".k\",alpha=0.5)\n", " xlim([0.8,1.6]), xticks([1,1.4],[\"random\\nguesses\",\"estimate\"])\n", "end\n", "\n", "figure(figsize=(9,5))\n", "subplot(1,3,1), plot_error(rdf,[1:(m*n)]), title(\"full dataset\",fontweight=\"bold\")\n", "ylabel(\"Reconstruction Error\\n(Hellinger Distance)\",fontweight=\"bold\")\n", "subplot(1,3,2), plot_error(rdo,obs), title(\"observed entries\",fontweight=\"bold\")\n", "subplot(1,3,3), plot_error(rdu,not_obs), title(\"unobserved entries\",fontweight=\"bold\")\n", "tight_layout()" ] } ], "metadata": { "kernelspec": { "display_name": "Julia 0.3.9", "language": "julia", "name": "julia-0.3" }, "language_info": { "name": "julia", "version": "0.3.8" } }, "nbformat": 4, "nbformat_minor": 0 }