What model would be appropriate for predicting electrical consumption given multiple (mostly) independent variables?

I have about 1000 samples worth of daily electrical consumption for a building. I'd like to build a predictor based on a number of observable inputs, including:

• daily temperature (continuous)
• hours of sunlight (continuous)
• is_monday, is_tuesday, ... (binary)
• is_holiday_or_weekend (binary)

... and maybe a couple of others. I have some insights into the data. For example, a typical consumption-vs-temperature graph, ignoring all the other inputs has a typical shape dictated by standby power and ramping up due to HVAC as the temperature increases (i.e. isn't a linear function): I'm admittedly new to advanced statistics & ML, but I'm not afraid to learn what's needed to solve the problem. What I'd like to avoid, though, is going too far down the wrong algorithmic path.

Having read some of the literature, I get the impression that using Support Vector Regression with a Radial Basis Function for the kernel would be a reasonable approach.

But should I be exploring regression techniques or other machine learning techniques?

Hours of sunlight and daily temperature are usually correlated to seasons. Not to mention that day of the week and hour are cyclic too. This kind of scenarios reminds me of Gaussian Processes, a general-purpose semi-parametric regression approach.

So, you may be interested in this:

http://www.gaussianprocess.org/gpml/ (Gaussian Processes for Machine Learning)

and this

http://videolectures.net/mlss09uk_rasmussen_gp/ (Video lecture)

Available software here

http://www.gaussianprocess.org/#code

and the book comes with some matlab packages too, afaik.

• "Hours of sunlight and daily temperature are usually correlated" -- I was wondering if anyone would catch that! :) – fearless_fool Jul 17 '14 at 13:17
• I've not listened through the entire lecture(s) yet, but Gaussian Processes appears to be an appropriate technique. Thanks! – fearless_fool Jul 17 '14 at 23:20

A radial basis function w/ SVM is very close to a nearest-neighbors approach. It doesn't seem appropriate here.

One thing I'd not is that a convex relation of your graph is $e^x$. Given that, doing some sort of linear regression on the logarithm of temperature will probably give reasonable results. But of course, it doesn't exactly represent what you want.

To really fit your model, you want to fit a mixture of a bernoulli model condition on temperature, times a linear model on temperature. The idea being that the linear model kicks in only if the bernoulli model does. The bernoulli model is a latent variable, so you can fit it with EM, where you take expectation of the bernoulli, and maximize the linear regression.