Skip to content

Instantly share code, notes, and snippets.

@cwidmer
Created October 1, 2014 19:53
Show Gist options
  • Save cwidmer/6778b10798d97c4e6715 to your computer and use it in GitHub Desktop.
Save cwidmer/6778b10798d97c4e6715 to your computer and use it in GitHub Desktop.
Properties of blocking eigen decomposition
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline\n",
"import pylab\n",
"import numpy as np\n",
"import scipy as sp\n",
"\n",
"from IPython.display import display, Math, Latex\n",
"\n",
"#My matrix is given by:\n",
"\n",
"display(Latex(r\"\"\"\n",
"Basic reminder for working with subsets of eigen-decompositions:\n",
"\n",
"$$\n",
"U = \\left[\n",
"\\begin{array}{c}\n",
"U_{1} \\\\\n",
"U_{2} \n",
"\\end{array}\\right]\n",
"$$\n",
"\n",
"$$\n",
"U^T U = \\left[\n",
"\\begin{array}{c}\n",
"U_{1} \\\\\n",
"U_{2} \n",
"\\end{array}\\right]^T \n",
"\\left[\n",
"\\begin{array}{c}\n",
"U_{1} \\\\\n",
"U_{2} \n",
"\\end{array}\\right] =\n",
"U_1 U_1^T + U_2 U_2^T = I \\Rightarrow U_1 U_1^T = I - U_2 U_2^T\n",
"$$\n",
"\n",
"$$\n",
"U^T U = \\left[\n",
"\\begin{array}{c}\n",
"U_{1} \\\\\n",
"U_{2} \n",
"\\end{array}\\right]\n",
"\\left[\n",
"\\begin{array}{c}\n",
"U_{1} \\\\\n",
"U_{2} \n",
"\\end{array}\\right]^T = \n",
"\\left[\n",
"\\begin{array}{cc}\n",
"\\overbrace{U_1 U_1^T}^{I} & \\overbrace{U_1 U_2^T}^{=0 \\text{ orthogonality}}\\\\\n",
"U_2 U_1^T & U_2 U_2^t \n",
"\\end{array}\\right]= \n",
"\\left[\n",
"\\begin{array}{cc}\n",
"I & 0 \\\\\n",
"0 & I\n",
"\\end{array}\\right]\n",
"$$\n",
"\n",
"\"\"\"))\n",
"\n",
"\n",
"\n",
"#display(Math(r'F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx'))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"\n",
"Basic reminder for working with subsets of eigen-decompositions:\n",
"\n",
"$$\n",
"U = \\left[\n",
"\\begin{array}{c}\n",
"U_{1} \\\\\n",
"U_{2} \n",
"\\end{array}\\right]\n",
"$$\n",
"\n",
"$$\n",
"U^T U = \\left[\n",
"\\begin{array}{c}\n",
"U_{1} \\\\\n",
"U_{2} \n",
"\\end{array}\\right]^T \n",
"\\left[\n",
"\\begin{array}{c}\n",
"U_{1} \\\\\n",
"U_{2} \n",
"\\end{array}\\right] =\n",
"U_1 U_1^T + U_2 U_2^T = I \\Rightarrow U_1 U_1^T = I - U_2 U_2^T\n",
"$$\n",
"\n",
"$$\n",
"U^T U = \\left[\n",
"\\begin{array}{c}\n",
"U_{1} \\\\\n",
"U_{2} \n",
"\\end{array}\\right]\n",
"\\left[\n",
"\\begin{array}{c}\n",
"U_{1} \\\\\n",
"U_{2} \n",
"\\end{array}\\right]^T = \n",
"\\left[\n",
"\\begin{array}{cc}\n",
"\\overbrace{U_1 U_1^T}^{I} & \\overbrace{U_1 U_2^T}^{=0 \\text{ orthogonality}}\\\\\n",
"U_2 U_1^T & U_2 U_2^t \n",
"\\end{array}\\right]= \n",
"\\left[\n",
"\\begin{array}{cc}\n",
"I & 0 \\\\\n",
"0 & I\n",
"\\end{array}\\right]\n",
"$$\n",
"\n"
],
"metadata": {},
"output_type": "display_data",
"text": [
"<IPython.core.display.Latex at 0x9c58e10>"
]
}
],
"prompt_number": 34
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# eigenvectors are orthogonal\n",
"\n",
"def load_data(num_ind):\n",
" \n",
" X = np.random.random_sample((num_ind, 1000))\n",
" y = np.random.random_sample(num_ind)\n",
"\n",
" X -= X.mean(axis=0)\n",
" y -= y.mean()\n",
"\n",
" return X, y\n",
"\n",
"\n",
"num_ind = 10\n",
"X, y = load_data(num_ind)\n",
"\n",
"K = X.dot(X.T)\n",
"\n",
"#TODO: establish relationship\n",
"U0, S0, V0 = np.linalg.svd(X)\n",
"\n",
"S, U = np.linalg.eigh(K)\n",
"\n",
"print \n",
"\n",
"idx = np.random.permutation(np.arange(num_ind))[0:num_ind/2]\n",
"\n",
"UUT = U.dot(U.T)\n",
"UTU = U.T.dot(U)\n",
"\n",
"pylab.imshow(UUT, interpolation=\"nearest\")\n",
"pylab.title(r\"UU^T\")\n",
"pylab.show()\n",
"\n",
"\n",
"pylab.imshow(UTU, interpolation=\"nearest\")\n",
"pylab.title(r\"U^TU\")\n",
"pylab.show()\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x9c58240>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x9ad6470>"
]
}
],
"prompt_number": 35
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# we show that a subset only maintains identity in one direction\n",
"\n",
"idx = np.random.permutation(np.arange(num_ind))[0:num_ind/2]\n",
"U1 = U[~idx,:]\n",
"U2 = U[idx,:]\n",
"\n",
"UUT = U2.dot(U2.T)\n",
"UTU = U2.T.dot(U2)\n",
"\n",
"pylab.imshow(UUT, interpolation=\"nearest\")\n",
"pylab.title(r\"U2U2^T\")\n",
"pylab.show()\n",
"\n",
"\n",
"pylab.imshow(UTU, interpolation=\"nearest\")\n",
"pylab.title(r\"U2^TU2\")\n",
"pylab.show()\n",
"\n",
"pylab.imshow(UUT + U1.dot(U1.T), interpolation=\"nearest\")\n",
"pylab.title(r\"U1U1^T + U2U2^T\")\n",
"pylab.show()\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x9dbae80>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n3LkTsbGx3Z67btvZ9XWMdTzus04IXUIi+l1LLdBa63WZT8Xu6OjAggULsHTpUsybN6/H83G2tf7G\nI6JAxFpv3+743029LvP6UlwphdLSUmRkZGDdunUhSkdEOnkt9qlTp7B//3589tlnyM3NRW5uLqqr\nq43IRkQB8vpSfPLkybh165YRWYgoRHjlGZFALDaRQCw2kUAsNpFALDaRQCw2kUAmpVRQ24GaTCYg\nTcOOoodDP/KOadlVWuZOMc3VMhcANuETLXMjrk7UMhcA/vzAX7XMrYe+zP/zhKbLoS/rGYvPTeit\nwjxjEwnEYhMJxGITCcRiEwnEYhMJxGITCcRiEwnEYhMJxGITCcRiEwnEYhMJxGITCcRiEwnEYhMJ\nxGITCcRiEwnEYhMJxGITCcRiEwnEYhMJxGITCcRiEwnk0wffe5UTkindJGZ/F/qhv2nGQC1zdW0R\nDABX8YiWuYn/omHr6N84P0jRMreh9WEtcwHgT6+3aZnbL9alZe6Nu3wr84xNJBCLTSQQi00kEItN\nJBCLTSQQi00kkE/FdrvdyM3Nxdy5+j5NkohCx6di79y5ExkZGbc/MpeI+jyvxb58+TKOHz+O5cuX\n9/o5vETU93gt9vr167F9+3ZERPDHcaJ7hcdLSquqqjB06FDk5uaitrb27gu/sf3+9WArMMQaimxE\n9Afuus9x6/NTXtd5LHZ9fT2OHj2K48eP48aNG/j1119RUlKCffv2dV9osQWTlYh8FDllMiKnTO66\n7972Wq/rPL6+3rx5M5xOJ+x2Ow4dOoRp06b1LDUR9Tl+/eDMd8WJ7g0+/9lmQUEBCgoKdGYhohDh\nW91EArHYRAKx2EQCsdhEArHYRAKx2EQChWSX0g8r54ViTDf/in8L+cw7Gk01WuZGXN2gZS6gbzfR\nq/v1XZtQ+IGeXVuP9X9Uy1wAwN/6aRl7f87PWubeuMvjPGMTCcRiEwnEYhMJxGITCcRiEwnEYhMJ\nxGITCcRiEwnEYhMJxGITCcRiEwnEYhMJxGITCcRiEwnEYhMJxGITCcRiEwnEYhMJxGITCcRiEwnE\nYhMJZFJKBbX9pclkAj4K/Q6aql3f7pmR01q0zP3zA3/VMhcAnEjRMrcZA7XMBYCTCY9omfvPP3+o\nZS4ALMNeLXPnzf0vLXNRZUJvFeYZm0ggFptIIBabSCAWm0ggFptIIBabSCCvxW5ubkZhYSEsFgsy\n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\nH4ZOjaZozL0rAAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x9af2128>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAPYAAAEKCAYAAAAhNageAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEBZJREFUeJzt3X9oVYX/x/HXrpuoTW0VzXLTa81oc6M7Khayta36sEqn\nwha68kdq/hFEVGBlUWsQkT+ijCUSlFqGSPSH1WSktbuVIhYpWBoG7tacQkWaP+euu+f7x9cuXjd3\nf+zunu3d8wGHds895973vfDcubvezk1zHMcRAFM8bg8AIPkIGzCIsAGDCBswiLABgwgbMIiwAYMI\n+yo8Ho+OHDkSse61117TggULJEnBYFC1tbWaMmWKPB6PWltbI7atqKjQBx98ELHO7/crNzc3fPmV\nV15RUVGRMjIy1NDQcNVZ6uvr5fF49Nxzz0Wsf+ONNzR27FiNHTtWo0ePVnp6evhyUVFRQo+7Lxs3\nblRZWVmv9V6vV998840kafXq1SoqKtK4ceN0yy23aM2aNeHtAoGAPB6PQqFQxP6PP/64XnnlFUlS\nU1OTSktLlZWVpZtuuknLli3TmTNnet3nP//8ozvuuEOZmZnas2dPxHXTpk0LP/709HSNHj06fPnN\nN98c8PMwnBB2HNLS0iIu33vvvdq8ebMmTJjQ67q0tLRe6640depUrV69WjNmzLjqtuvWrdOmTZvU\n0tKipqYmrVy5MnzdSy+9pNOnT+v06dNav369pk+fHr584MCBqI+noqKi1y+keFw588cff6yTJ0+q\nublZjY2N2rp1a9T9/72NU6dO6dVXX9Xx48d16NAhdXZ2avny5RHbd3V1adasWfL5fFq3bp3mzJmj\nQ4cOha//+eefw4+/rKxM7733Xvjyiy++mPDjHI7S3R5gOLn8Q3oZGRl6+umnJUkjRoxI6PYWLlwo\nSfrkk0/U1wcAP/30U73zzjv69ttvlZubq7a2Nj3wwAOaMGGCFi1a1Gu2eD9EGMsvn1hdHuFtt92m\n2bNna9euXZo7d26/+/07c11dXXjdqFGjtGzZMtXX14fX9fT0qK6uTvn5+Vq/fr0k6ZprrlF1dbX8\nfr9ycnKuetv/RRyxh6ju7m4dOXJEra2t4Zfv2dnZ8vv9OnbsmM6dO+fyhFfnOI7a2tpUWFiY8G20\ntrZG7H/gwAFVVVWFo5akmpoavf/++9q9e3eft5GsX1rDEUfsIWrkyJF64YUXeq2//vrrtWLFiqTd\n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\n",
"text": [
"<matplotlib.figure.Figure at 0x747f048>"
]
}
],
"prompt_number": 39
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment