7 ms·
Likelihood for Gaussian Processes
- mccourt 11y agoI am the author of these posts, and I am happy to answer questions if you have any.
- Zephyr314 11y agoOne of the co-founders of SigOpt (YC W15) here, I'm also happy to answer any questions about what we do and how.
- kshitijl 11y agoI 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.
- mccourt 11y agoI 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-approximation-of-data 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/ReadingPapers/IntroductionRBF.pdf 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 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 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 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 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.
- kshitijl 11y agoWith 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?
- glial 11y ago> 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_fall08.pdf 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.
- nonbel 11y agoI 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?
- GFK_of_xmaspast 11y agoApproximately normal. See stuff like : http://onlinestatbook.com/2/sampling_distributions/samp_dist_p.html http://onlinestatbook.com/2/sampling_distributions/samp_dist...
- nonbel 11y agoI am asking how to calculate the expected distribution of sample variances, not sample means.
- mccourt 11y agoI 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 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?
- 11y ago
- gerty 11y agoI am a frequentist by training and got a little confused by Bayesian and engineering terminology while flipping through the posts. Bear with me. Did I understand well that kernel interpolation is what we'd call a kind of non-noisy kernel regression? If it's the case and dimension d of the regressors is large, multivariate non-parametric estimation will have very slow convergence, won't it?
- mccourt 11y agoI also get confused by the notation, so you are not alone. I think it is fair to say that kernel interpolation is a non-noisy kernel regression. Of course, this would also depend on your choice of terminology ... I use the word regression to mean any sort of fitting of specific basis functions to data - the fit doesn't have to be perfect. Interpolation, at least in my mind, means that the fit does have to be perfect. So when I say kernel interpolation I think it is fine to think of it as regression that perfectly passes through any data points. Technically, I like to think of the fact that the data has noise as independent of the strategy that you use to fit it. So you could perfectly interpolate noisy data (a bad idea) and you could do a regression on noise-less data (also bad, but not as bad). But yeah, I think it's probably safe to say "non-noisy kernel regression". As far as your real question, chapter 9 of my book talks about that, and the reason I mention that here is that it is a complicated question. Just to confirm, when you say dimension you mean physical dimension, not the number of pieces of data, right? The classical convergence bounds all deal with the smoothness of the data (or rather the function that generated the data) and the smoothness of the reproducing kernel. The relevance of the smoothness is augmented by the dimension, so the dimension can be relevant. Arguably, this is why statisticians like Michael Stein would say that Gaussians are not appropriate for low dimensions (too much smooothness) but are necessary for high dimensions (because without the smoothness the convergence is too slow). Some recent results (http://epubs.siam.org/doi/abs/10.1137/10080138X http://epubs.siam.org/doi/abs/10.1137/10080138X) talk about dimension independent bounds, but with some caveats, and almost entirely from the numerical analysis standpoint (which can be tough to read). Sorry to sort of fork the answer into pieces there. Anything else I can help with?
- gerty 11y ago
- Xcelerate 11y agoExcellent post. Would you have a recommendation on a resource for learning about reproducing kernel Hilbert spaces? In particular, I'm interested in learning more about how they are applied to data analysis. I've been reading about them in a very theoretical sense, but very few math texts provide "real-world" examples of how they are used.
- mccourt 11y agoThanks for reading, I'm glad you enjoyed it. You are correct that there are few texts that discuss real-world examples of reproducing kernel Hilbert spaces without a significant amount of overhead to get there. In reality, I'm not sure there is an easy way to talk about reproducing kernel Hilbert spaces without all that functional analysis, which is a tough topic. I would argue that's probably the greatest thing holding back kernels - their high barrier to entry. I'll spend one line here to mention my book (kernel-based approximation methods in Matlab) and also say that it is pretty heavy on the theory; the second half of the book deals with reproducing kernels as used in a variety of fields, but getting there requires a lot of very tough math. Lemme take a moment to list places (some more real-world than others) where I know that reproducing kernels pop up - and anyone else reading this please feel free to add to this list: 1) Approximation theory - My bread and butter and the most important role for kernels as far as I'm concerned. When you have scattered data (especially in higher dimensions) and you want to interpolate and predict unobserved values, reproducing kernels give you several very nice guarantees. Through this, they also pop up in computer vision or surface reconstruction from point cloud data. 2) Spatial statistics - They actually play an identical role in kriging as they do in approximation theory, albeit for totally different reasons. People who are doing remote sensing or topological mapping may use reproducing kernels (or software that uses these kernels. 3) Machine learning - Both RBF networks and support vector machines use reproducing kernels, although in two different ways. The mechanism by which they are used in support vector machines (feature maps) is difficult for me to understand which is why I don't talk about them much. They are still a very important field that uses kernels. 4) Differential equations - The same theory that makes reproducing kernels work for approximation theory also works for numerically solving differential equations. You could lump stuff regarding Green's functions in here too, although those may not be reproducing kernels. 5) Numerical integration - Especially for integration in higher dimensions, basically all the theory of convergence for quasi Monte Carlo methods relies on reproducing kernel Hilbert spaces. Maybe the best thing I can point you to is the same place where I first learned about this stuff: math.iit.edu/~fass/590. That's an old (recently updated) class website from a class I took at the Illinois Institute of Technology when I was an undergrad there. Dr. Fasshauer does an outstanding job putting notes and slides for his class together. If you're feeling adventurous, I would recommend our book, but a good starting point would be his class notes, which I still turn back to often and are written to introduce graduate students (who know nothing about kernels) to the topic. I'll work on putting together a list of good application-oriented sources as well. Thanks for your interest! Did you have a specific example/topic of kernels from data analysis that piqued your interest? I could look into more targeted content.