News for hackers. Stuff that matters.
Re:Likelihood for Gaussian Processes by mccourt on Thursday December 10, 2015 @01:50PM (#10712485)
I am the author of these posts, and I am happy to answer questions if you have any.
Re:Likelihood for Gaussian Processes by Zephyr314 on Thursday December 10, 2015 @04:24PM (#10713589)
One of the co-founders of SigOpt (YC W15) here, I'm also happy to answer any questions about what we do and how.
Re:Likelihood for Gaussian Processes by kshitijl on Thursday December 10, 2015 @08:16PM (#10714905)
I am familiar with basic regression theory and numerical optimization; I have a qualitative understanding of VC bound. Given this background:

What is the number of parameters in a GP model?

A parametric regression/classification model has some number of parameters, and having estimated them I only need to carry them around. If a model has more parameters, it is less parsimonious and less desirable than a model with fewer parameters that achieves the same error.

If I add regularization/bias/prior to a model, it reduces the dimension of parameter-space.

In a GP model I need to hold on to my entire training set. But clearly the number of parameters I'm fitting is much smaller. So how do I quantify that?

To be clear, I'm not talking about the hyperparameters of the covariance function.

Re:Likelihood for Gaussian Processes by mccourt on Thursday December 10, 2015 @09:33PM (#10715145)
I am not exactly sure what you are asking here, but I think that is more a terminology disconnect than anything. I haven't even heard someone say Vapnik-Chervonenkis dimension in a long time, so we may be coming at this from two different standpoints. But I'll try to answer as best I can.

When you say parametric regression model, do you mean something like s(x) = a + bx where the parameters here are a and b? If that's the case then I might say that a GP model has N parameters, where there are N pieces of data. You could argue (and I think Rasmussen does) that GPs are nonparametric, since there are N parameters and N pieces of data, but I don't usually use that term about GPs.

As you point out, you do not need to carry around the data after you have fit something like a s(x) = a + bx model ... you only need a and b to make predictions. This is not true for GPs, where you will always need the {x_1, ..., x_N} points in order to make predictions. The benefit to using these kernels as your basis s(x) = c_1K(x, x_1) + ... + c_NK(x, x_N) instead of s(x) = a + bx + cy + dx^2 + ... is that there is a guaranteed unique interpolant to your data. It would depend on how you define "error" (and this is a constant issue in any sort of real-world setting) but if you are defining error by how well your model fits the data then a GP model would perfectly fit any data. I'm not saying that is really what you want (I talk in http://blog.sigopt.com/post/132959177928/sigopt-fundamentals... about why that is a bad idea at times), but I am suggesting that there are certain properties that GPs satisfy very nicely.

I would need to understand why you are saying that the number of parameters you are fitting is much smaller. I don't immediately know how you can guarantee that just by looking at a bunch of x and y values. If there is a specific reason you think your data came from a very simple function, then that would make sense, but if you can't make that assumption I don't know why it would immediately be preferable to use one model over another.

Given that, if you do think that your data came from a relatively low parameter source (to put it in tangible terms, suppose you have 20000 pieces of data and you think you should only need 50 components in your s function) then you can create a 50 term model using reproducing kernels instead of polynomials (or whatever else). This is often called an RBF network (or kernel network). You can find a great reference online (http://www.eng.buffalo.edu/~psingla/Teaching/MAE502/ReadingP...) or a decent reference in chapter 18 of my book (kernel-based approximation methods in Matlab). If you choose to use this strategy you would be creating a model where you would only have to carry around 50 parameters, instead of the 20000 that you would have to use in the GP setting. The benefit over polynomials would be flexibility and locality, the benefit over GPs would be cost (50<<20000 so predictions are cheaper). There are also Support Vector Machines/Regression which do this stuff in a sparse framework (less that 20000 basis functions) using reproducing kernels.

Basically, I would totally agree with you that simpler is better. A the end of the day, I think of GPs as a useful tool for identifying local behavior, but I try not to use them globally (although in this paper I looked at the global limit, http://epubs.siam.org/doi/abs/10.1137/110824784). Probably the best strategy, if you believe that your data comes from a low complexity function and should only need a few parameters to fit it well is to explicitly define a nonzero mean for your GP; see (Chapter 2.7 in http://www.gaussianprocess.org/gpml/chapters/RW2.pdf) or Chapter 17.3 in my book. This lets the low parameter model handle most of the heavy lifting and the GP handles the final touches. You still have to carry around the N pieces of data (sorry) but you get closer to that parsimonious result that you wanted.

Incidentally, if you're just worried about carrying around more data than you want to, or that the cost of making predictions is too high, there are computational techniques to deal with this. Two good friends of mine, Lei Wang with tree codes (http://epubs.siam.org/doi/abs/10.1137/120903002) and Jie Chen with H-matrices/semiseparable/recursive rank (http://www.mcs.anl.gov/papers/P5112-0314.pdf), worked on something like this for massive problems (I think Jie Chen was in the billions while we were at Argonne together). So there are options out there even for those extreme cases, depending on what your situation/goal is.

Hope that helped. Thanks for reading.

Re:Likelihood for Gaussian Processes by kshitijl on Thursday December 10, 2015 @10:50PM (#10715339)
With N parameters for N data points I have far, far too many degrees of freedom and have grossly overfit my training set. The only way to guarantee good generalization outside one's training set is to have a lot of data compared to the number of degrees of freedom in the model.

To avoid this, we use bias/prior/regularization which reduces the effective number of degrees of freedom. For example, fitting a quadratic polynomial to some data, we have 3 degrees of freedom including the constant term. If I add a regularization term \lambda*||a|| where a is the vector of coefficients, I can alleviate overfitting. We can determine an optimal value for \lambda using validation or cross-validation. For \lambda=0, we have 3 parameters. As \lambda->infinity, we force the answer closer and closer to the constant 0 polynomial ie. no degrees of freedom.

In other words, regularization avoids overfitting by reducing the dimension of the model.

I am not worried about the amount of data I have to carry around; rather, it was a way of thinking about the dimension of parameter-space.

Don't big alarm bells go off in your head when you hear N parameters for N data points?

Re:Likelihood for Gaussian Processes by glial on Thursday December 10, 2015 @11:56PM (#10715527)
> Don't big alarm bells go off in your head when you hear N parameters for N data points?

Gaussian process models typically also have hyperparameters that control things like the smoothness of the learned surface. My hand-wavey sense of how GPs work is that you have a prior distribution over functions (think curves) and a hyperparameter controlling the smoothness/length-scale of those functions. You observe data, then find the posterior distribution over functions that make your data most likely - i.e. of all these possible functions, which ones have the best chance of actually generating the data you're observing? The shape of that posterior distribution depends on the set of N points you observe, and it will be different if you have different data. In that sense, then, the data are parameters, since the posterior depends exactly on the set of data.

The analogy to traditional regression comes by having the hyperparameters (controlling the covariance function IIRC, i.e. the smoothness of the posterior curves), which allows the resulting posterior distribution to explain the data perfectly (overfitting, sharp curves) or not (generalizability, smooth curves). See for example slides 23-24 of this slide deck:

https://www.cs.toronto.edu/~hinton/csc2515/notes/gp_slides_f...

Rasmussen has some useful video tutorials of all this. It's been a few years since I've watched them but if you're interested I'd recommend them.

Re:Likelihood for Gaussian Processes by mccourt on Friday December 11, 2015 @12:00AM (#10715535)
Well, this is the difference in phrasing between the traditional statistical modeling setting and the terminology used in numerical analysis; perhaps this is why GPs are sometimes referred to as a nonparametric model. Also, I think you're oversimplifying the role of regularization, but that's more of a semantic than salient point.

You are correct that you should not use "N parameters for N data points", but the role that covariance kernels play is not the same as the role played by (as you suggest) polynomials. Covariance kernels have some sort of localized behavior which limits the degree to which they interact with the data. Not to limit the discussion to things I'm comfortable with, but I wrote some of this up at a very high level here http://blog.sigopt.com/post/131498069303/sigopt-fundamentals.... As a result, I think one could argue that the compactness of their domain (practical compactness, regardless of their potentially infinite support) produces the actual dimension of the parameter space. As such, different locations in the domain may have different dimensionality, though most of the time the swift decay of kernels away from their center will lead to a much lower "effective dimensionality" than N.

Maybe a good way to think of this is the following: Why are you using a quadratic polynomial to fit your (presumably, if you have only 3 parameters) 1D data? Probably just because you feel like it - which is as good a reason as any, short of some rigorous statistical testing. I use kernels because I like their theoretical properties, not because "the data demands it" or some more rigorous reason. But suppose you actually thought of the biggest polynomial you could use: an N-1 degree polynomial:

s(x) = a_1 + a_2x + a_3x^2 + a_4x^3 + ... + a_Nx^{N-1}

That's the biggest (unique) polynomial you could use to fit your data. You feel, probably correctly, that N terms is too many, so you zero out some of these terms by manually setting most of the coefficients equal to 0 and solving (somehow) for the rest:

s(x) = a_1 + a_2x + a_3x^2 + 0x^3 + ... + 0x^{N-1}

This is one, very common and very useful way, to fit data, and it is the first thing I teach when I introduce people to approximation theory. But think about the main drawback behind this method: this is the same function everywhere that you want to make approximations. You have no ability to do anything different in different regions of your domain. You could have a problem for which this is true, but I think a lot of problems have some degree of spatial variability/locality, and this is where kernel methods shine. Kernel methods propose that you fit a model that looks like

s(x) = a_1K(x,x_1) + a_2K(x,x_2) + a_3K(x,x_3) + a_4K(x,x_4) + ... + a_NK(x,x_N)

Now, does this require you to invert an NxN matrix - absolutely. But because there is some locality in these K functions, different kernels will end up being 0 in different locations. Suppose that x_4 through x_N are very far from x_1; your interpolation in that setting looks like:

s(x) = a_1K(x,x_1) + a_2K(x,x_2) + a_3K(x,x_3) + a_4 0 + ... + a_N 0 , for x close to x_1

Notice I use the term "close" here; the decision of what close means is the hyperparameter solution that this blog post was trying to allude to, and that this other post http://blog.sigopt.com/post/134931028143/sigopt-in-depth-pro... addresses more thoroughly. These summation values are probably not identically 0 (although it could be, if you like the Wendland or Wu kernels) but it may be close enough to think of it as 0. Suppose, instead, that you are over near x_N and that only x_4 is close to x_N:

s(x) = a_1 0 + a_2 0 + a_3 0 + a_4 K(x,x_4) + ... + a_N K(x,x_N) , for x close to x_N

Notice that both the polynomial and kernel methods have less than N terms which are nonzero, but only the kernel method has the ability to deal with regional differences within your problem. That's the benefit for kernel methods over polynomials; they more intelligently zero out a bunch of the terms in the summation. Incidentally, this is also the outcome of using support vector machines/regression, although that problem is phrased in a different way and chooses which pieces of data are worth considering, not which basis functions should be considered. But, I digress ...

You are absolutely correct to be worried about overfitting: it is the bane of all people who do any sort of statistical modeling and it will cause problems if you are not wary. But kernels are not inherently problematic on this front. First off, they offer a locality that can have a similar effect as polynomial fitting, but with the benefit of acting locally rather than globally. Perhaps the best point to be made though is that you can combine a polynomial method (for global action) with a kernel method (for local action). That's sometimes called universal kriging, and is basically just GPs with a nonzero (polynomial) mean. My book has an example of this in chapter 17.3, and Rasmussen and Williams talks about this in chapter 2.7 (http://www.gaussianprocess.org/gpml/chapters/RW2.pdf).

I would also mention that regularization is something that can be done in the GP framework. I described the impact in http://blog.sigopt.com/post/132959177928/sigopt-fundamentals... at a high level, but you can read more about it in chapter 15.1 of my book, or under the name smoothing spline (https://en.wikipedia.org/wiki/Smoothing_spline, though not the best writeup), or in RBF networks. If you really want to get fancy, you could even make the argument that interpolation with reproducing kernels has some built-in regularization because the interpolant is the minimum norm interpolating function in the Hilbert space; I don't have an easily accessible reference for that but you can see the derivation worked out here http://math.iit.edu/~fass/590/notes/Notes590_Ch8Print.pdf. That's not the same norm that you are referring to above, but I mention it simply to note that people in the kernel community are as worried about this situation as you are and we have some results that help inform of how to deal with potential overfitting.

Thanks for your interest. I really appreciate the opportunity to go in depth with this.

Re:Likelihood for Gaussian Processes by kshitijl on Friday December 11, 2015 @12:06AM (#10715552)
Ahh thanks, this line

> Notice that both the polynomial and kernel methods have less than N terms which are nonzero, but [...]

starts to answer my worry a little bit. It really is not the case that there are N true degrees of freedom, we just nominally started out with that many and then gave up certain ones of them.

What I would love to have is a quantitative analysis of the "number of free parameters" in my model after I have fit it, so that I can compare it to (say) a 50-parameter polynomial model that is equally good at reproducing the training set.

Re:Likelihood for Gaussian Processes by mccourt on Friday December 11, 2015 @12:40PM (#10718484)
I'm happy to think on this with you, although it might take a little time to think about.

One short answer I could point you to regarding this question is a topic called "local interpolation" using a compactly defined Lagrange basis with a prescribed size (perhaps size 50) of the parameter space. I talk about this in the context of kernel-based finite difference methods in remark 19.8 of my book: some of the references I point to there are (http://epubs.siam.org/doi/abs/10.1137/090769570, Hangelbroek is an outstanding author) and (http://www.sciencedirect.com/science/article/pii/S0377042711...). I think it's also possible to look at this question from the framework of moving least squares/approximate approximation (http://link.springer.com/chapter/10.1007/978-3-642-56103-0_8) or maybe even quasi-interpolation, depending on how you think about it (http://link.springer.com/article/10.1007/BF01279020).

If you'd like to talk about this offline, email me (see the blog post). I'll still post any thoughts I have here.

Re:Likelihood for Gaussian Processes by kshitijl on Friday December 11, 2015 @12:18AM (#10715576)
I am also very interested in knowing what to do when the dimension of the input space can vary.

For example, suppose that I'm interested in learning 4-body gravitational motion using 3-body training data ie. predict total energy of a system given mutual distances.

Notwithstanding the fact that this is trivial to compute directly, how do I set this up as a GP? Are there general strategies for this? What do I look up on google scholar, or what application field of ML most deals with this?

Thanks a lot for your help.

Re:Likelihood for Gaussian Processes by Xcelerate on Friday December 11, 2015 @06:13AM (#10716458)
> I am also very interested in knowing what to do when the dimension of the input space can vary.

It is frequently the case that one's data lies on a (curvy) low dimensional manifold embedded within a higher dimensional space. Because of this, performing an orthogonal projection to a lower dimension is often a bad idea. Consider the famous "Swiss roll" dataset: http://www.convexoptimization.com/dattorro/manifold_learning... Although the data lies on a 2D manifold, there exists no affine subspace to project the data onto; one must instead perform a non-linear mapping.

Problems like this are tackled using a variety of methods that attempt to "unroll" the manifold into its own vector space. The rest of the problem can then be solved using the tools of linear algebra. See http://repository.upenn.edu/cgi/viewcontent.cgi?article=1001... for example.

Re:Likelihood for Gaussian Processes by nonbel on Thursday December 10, 2015 @08:19PM (#10714921)
I have a question that is only tangentially related to this so feel free to ignore.

Say I flip 50 fair coins, P(heads)=P(tails)=0.5, 10 times each a day for 100 days. For each coin we have 100 records like HTHTHHTTHT. Now I count the number of tails (5 in the example) for each day for each coin. So each coin has a record with length 100 like [5, 8, 5, ...,6]. Now I can calculate the variance of these values for each coin and end up with 50 variances. What do we expect the distribution of these variances to look like?

Re:Likelihood for Gaussian Processes by mccourt on Thursday December 10, 2015 @08:52PM (#10715028)
I need a bit of clarification here. In the list of length 100, each entry in that list is a binomial random variable X~Binom(10, .5). The variance of each of these binomials is Var(X) = 10(.5)(.5) = 2.5.

But I don't think that's the variance you're talking about. Do you mean the sample variance of the list of length 100? I'm sure that we can figure that out too (or at least what it should look like) but I want to confirm that's the variance you are interested in. Off the top of my head, I think this sample variance should have a roughly Chi-Square distribution, since Binom(10, .5) is close to normal (sort of). In the Wikipedia article, it explains how Chi-Square can be expressed a sum of normals squared (https://en.wikipedia.org/wiki/Chi-squared_distribution). I could maybe figure out the actual distribution if you really need it.

Then you ask what should the distribution look like? Is this answered by the answer above, or did you mean something related to the 50 samples in particular?

Re:Likelihood for Gaussian Processes by nonbel on Thursday December 10, 2015 @09:13PM (#10715093)
Thanks, I'm wondering how to calculate the distribution of sample variances. Yes, each variance is calculated from the list of 100 counts of #tails. It's just something that has bothered me for awhile.
Re:Likelihood for Gaussian Processes by mccourt on Thursday December 10, 2015 @09:38PM (#10715164)
Okay. I'll see what I can do. No promises though - I may have taught probability recently, but I left all the hard problems to my students ;)
Re:Likelihood for Gaussian Processes by nonbel on Friday December 11, 2015 @07:42AM (#10716736)
I ended up using monte carlo, but it seems like something that should be known.
Re:Likelihood for Gaussian Processes by GFK_of_xmaspast on Thursday December 10, 2015 @08:29PM (#10714960)
Re:Likelihood for Gaussian Processes by nonbel on Thursday December 10, 2015 @08:41PM (#10714991)
I am asking how to calculate the expected distribution of sample variances, not sample means.