Skip to content

Instantly share code, notes, and snippets.

@karlnapf
Created February 7, 2017 18:38
Show Gist options
  • Save karlnapf/20f6ca0ea962e0c135d3a0f4a2d6f6a8 to your computer and use it in GitHub Desktop.
Save karlnapf/20f6ca0ea962e0c135d3a0f4a2d6f6a8 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 184,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import scipy as sp\n",
"import matplotlib.pyplot as plt\n",
"from scipy.spatial.distance import squareform, pdist, cdist\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Solve standard ridge regression problem, i.e. GP regression predictive mean. $\\lambda$ here is the regularisation parameter, which corresponds to the observation noise in GP land."
]
},
{
"cell_type": "code",
"execution_count": 185,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f55f08efd50>"
]
},
"execution_count": 185,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n8v8uqlf7fgiF1gAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f55f09ce350>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"N = 20\n",
"D = 1\n",
"freq = 10\n",
"sigma_noise = 0.4\n",
"sigma_kernel = 0.1\n",
"lmbda = 0.1\n",
"\n",
"X = np.random.rand(N,D)\n",
"X[:,0] = np.sort(X[:,0])\n",
"y_true = np.sin(X*freq)\n",
"y = y_true + np.random.randn(N,D)*sigma_noise\n",
"\n",
"\n",
"K = np.exp(-squareform(pdist(X, 'sqeuclidean')) / sigma_kernel)\n",
"K_reg = K+np.eye(N)*lmbda\n",
"L_lower = sp.linalg.cho_factor(K_reg)\n",
"alpha = sp.linalg.cho_solve(L_lower, y)\n",
"alpha = np.squeeze(alpha)\n",
"\n",
"res = 100\n",
"X_test = np.linspace(-1,2,res).reshape(-1,1)\n",
"y_test = np.sin(X_test*freq)\n",
"K_train_test = np.exp(-cdist(X, X_test, 'sqeuclidean') / sigma_kernel)\n",
"y_test_pred = np.dot(K_train_test.T, alpha)\n",
"\n",
"\n",
"plt.plot(X,y, 'b.')\n",
"plt.plot(X_test,y_test, 'r-')\n",
"plt.plot(X_test,y_test_pred, 'b-')\n",
"\n",
"plt.legend([\"train data\", \"ground truth\", \"predictive mean\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\"Update\" the solution, which essentially is \"recursive\" kernel least squares (IEEE paper). That is, given a new pair of data and response, and given the $\\alpha_{n-1}=(K_{n-1,n-1}+\\lambda I_{n-1})^{-1}y_{n-1}$ construct $\\alpha_{n}=(K_{nn}+\\lambda I_{n})^{-1}y_n$ in $\\mathcal{O}((n-1)^2)$ computation. Note I here also construct $K_{nn}^-1$ from $K_{n-1,n-1}$. Also note that storing these matrix inverses is unstable and needs to be replaced with Cholesky factor updates. But this gets the idea down."
]
},
{
"cell_type": "code",
"execution_count": 186,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# new observation\n",
"x_new = np.random.rand(1,D)\n",
"y_new = np.sin(x_new*freq)[0]\n",
"\n",
"# for readsability\n",
"alpha_old=alpha.copy()\n",
"K_old = K_reg.copy()\n",
"K_old_inv = np.linalg.inv(K_old)\n",
"\n",
"# kernel of new observations\n",
"# costs O(1)\n",
"k_new_new = 1 # gaussian kernel\n",
"k_new = np.exp(-cdist(X, x_new, 'sqeuclidean') / sigma_kernel)[:,0]\n",
"\n",
"# new kernel matrix\n",
"# costs O(n-1) where n-1 is the number of previous observations\n",
"K_new = np.zeros((N+1, N+1))\n",
"K_new[:N,:N] = K_old\n",
"K_new[N,:N] = k_new\n",
"K_new[:N,N] = k_new\n",
"K_new[N,N] = k_new_new + lmbda\n",
"\n",
"# low rank update to kernel matrix, note this requires a system solve using the \"old\" kernel matrix\n",
"# costs O((n-1)^2) for the matrix multiplication/triangular solve\n",
"a_new = np.dot(K_old_inv, k_new)\n",
"gamma_new = k_new_new + lmbda-np.dot(k_new, a_new)\n",
"\n",
"# construct new inverted kernel matrix, wqould be required for the next update (see above)\n",
"# costs O((n-1)^2)\n",
"K_inv_new = np.zeros((N+1, N+1))\n",
"K_inv_new[:N,:N] = gamma_new*K_old_inv+np.outer(a_new, a_new)\n",
"K_inv_new[N,:N] = -a_new\n",
"K_inv_new[:N,N] = -a_new\n",
"K_inv_new[N,N] = 1\n",
"K_inv_new /= gamma_new\n",
"\n",
"# construct the alpha using the residual of the prediction using the \"old\" alpha\n",
"# costs O(n-1)\n",
"alpha_new = np.zeros(N+1)\n",
"y_pred_old = np.dot(k_new, alpha_old)\n",
"error = np.squeeze(y_new-y_pred_old)\n",
"alpha_new[:N] = alpha_old-a_new*(error/gamma_new)\n",
"alpha_new[N] = error/gamma_new\n"
]
},
{
"cell_type": "code",
"execution_count": 187,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.1546319456101628e-13"
]
},
"execution_count": 187,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# constructed new inverted kernel matrix is the same as naively inverted new kernel matrix?\n",
"np.max(np.abs(K_inv_new - np.linalg.inv(K_new)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compare predictions oif the \"updated\" solution to a naively (recomputed from scratch) one. As handling this with matrix inverse in unstable, this might differ depending on the seed. But works most of the time for smallish $n$."
]
},
{
"cell_type": "code",
"execution_count": 195,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f55f0341910>"
]
},
"execution_count": 195,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f55f040b150>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# kernel between training and test data\n",
"K_train_test_new = np.zeros((N+1, K_train_test.shape[1]))\n",
"K_train_test_new[:N,:] = K_train_test\n",
"K_train_test_new[N,:] = np.exp(-cdist(x_new, X_test, 'sqeuclidean') / sigma_kernel)\n",
"\n",
"# naive prediction (and computation of alpha)\n",
"# costs O(n^3)\n",
"y_new_naive = np.zeros(N+1)\n",
"y_new_naive[:N] = y[:,0]\n",
"y_new_naive[N] = y_new\n",
"y_new_naive = np.atleast_2d(y_new_naive).T\n",
"L_new_naive = sp.linalg.cho_factor(K_new)\n",
"alpha_new_naive = np.squeeze(sp.linalg.cho_solve(L_new_naive, y_new_naive))\n",
"\n",
"plt.plot(X,y, 'b.')\n",
"plt.plot(x_new, y_new, 'ro')\n",
"plt.plot(X_test,y_test_pred, 'b-')\n",
"plt.plot(X_test,np.dot(K_train_test_new.T, alpha_new), 'm.-')\n",
"plt.plot(X_test,np.dot(K_train_test_new.T, alpha_new_naive), 'y--')\n",
"\n",
"plt.legend([\"train data\", \"new data\", \"old prediction\", \"efficient update\", \"naive update\"])"
]
},
{
"cell_type": "code",
"execution_count": 189,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.04638520071e-14\n"
]
},
{
"data": {
"image/png": "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\nP4jZVZQlBAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f55f09cf9d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# constructed new alpha is the same as naively computed alpha?\n",
"plt.plot(alpha_new)\n",
"plt.plot(alpha_new_naive)\n",
"print np.max(np.abs(alpha_new-alpha_new_naive))\n"
]
},
{
"cell_type": "code",
"execution_count": 321,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def cholesky_insert(R, u):\n",
" \"\"\"\n",
" Given a Cholesky factorization R of a n-dimensional PSD matrix A=R.T*R, and a vector u to form a\n",
" new matrix A_new by adding u to the last column/row of A, this computes the Cholesky factorization of the new\n",
" (n+1)-dimensional A_new matrix in O(n^2).\n",
" \n",
" This is a simplified version of the FORTRAN dchinx routine of qrupdate, where I avoid\n",
" re-triangulization by only allowing to add at the end, not in the middle of A.\n",
" \"\"\"\n",
" \n",
" # assumes that we want to insert at the end, i.e. j=n+1 in the fortran code\n",
" n = R.shape[0]\n",
" assert R.shape[0]==n\n",
" assert R.shape[1]==n\n",
" assert u.shape[0]==n+1\n",
"\n",
" # shift vector, not necessary (as compared to foretran code) as we insert a the end\n",
" t = u[n]\n",
"\n",
" # check for singularity of R.\n",
" assert np.alltrue(np.diag(R)>0)\n",
"\n",
" # form R' \\ u\n",
" # HS: TODO use triangular solve, which for some reason currently does not work\n",
" # this is O(n^2) if triangular solve is used\n",
" u = sp.linalg.solve(R.T, u[:n])\n",
" #print np.linalg.inv(R.T).dot(u[:n])\n",
" #print sp.linalg.solve_triangular(R, u[:n], trans=1)\n",
" rho2 = np.sum(u**2)\n",
" rho = np.sqrt(rho2)\n",
"\n",
" # assert positive definiteness.\n",
" rho = t - rho2\n",
" assert rho > 0\n",
"\n",
" # shift columns (not needed as we insert at the end)\n",
" # HS: just increase matrix size and fill with zeros\n",
" R1 = np.zeros((n+1,n+1))\n",
" R1[:n,:n] = R\n",
" R1[:n,n] = u\n",
" R1[n,n] = np.sqrt(rho)\n",
"\n",
" return R1"
]
},
{
"cell_type": "code",
"execution_count": 322,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 1.84336766 -1.55442039 0.19601874 0.59924448]\n",
" [ 0. 3.27031757 0.72476075 0.69716588]\n",
" [ 0. 0. 3.34255146 0.33428234]\n",
" [ 0. 0. 0. 0.85066773]]\n",
"True\n"
]
}
],
"source": [
"# create PSD matrix\n",
"X = np.random.randn(3,10)\n",
"X = np.dot(X,X.T)\n",
"\n",
"# vector to add\n",
"u = np.random.rand(4)+1\n",
"X_new = np.zeros((4,4))\n",
"X_new[:3,:3] = X\n",
"X_new[3,:] = u\n",
"X_new[:,3] = u\n",
"\n",
"# decompose old matrix\n",
"R = sp.linalg.cholesky(X)\n",
"R_new = cholesky_insert(R,u) # costs O(n^2)\n",
"\n",
"print R_new\n",
"\n",
"print np.allclose(R_new, sp.linalg.cholesky(X_new)) "
]
},
{
"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.12"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment