1

I'm working on a project where I'm developing an interface that learns how you typically use a space, and tries to create the most appropriate control strategy for heating/lighting. I've done some research into the area of machine learning techniques, but I was wondering if there were any recommendations on which learning algorithm would work best for this scenario. I have a lot of different input parameters: I designed a low-cost wireless sensor which reports light, temperature, humidity, and motion detection every 8 seconds... I also tap into live weather feeds through the internet for exterior conditions... And I'm also storing all of the different UI changes (toggles, sliders, etc...) so hopefully I can tell when people are actually changing certain settings and adapt accordingly. As far as learning algorithms... there's a lot of different options including (to name just a few):

  • K-Means
  • Decision Tree
  • Naïve Bayes
  • Neural Networks
  • Hidden Markov Models
  • Nearest Neighbors

Which of these would be most ideal for the scenario I'm referring to of: Having multiple data sources and correlating them with user input to predict future desires and plan accordingly.

Jimmy Hoffa
  • 16,079
  • 3
  • 69
  • 80
  • Why do you think you need machine learning to solve this problem? It's not clear what your problem is that you are trying to learn about. What sort of HVAC equipment are you using to control the temperature / humidity / air flow ? – Peter K. Mar 19 '13 at 01:16
  • @Peter, I've actually also designed other pieces of hardware to help control the environment locally. But, I can wirelessly control desk fans, heaters, task lights, as well as AC units (which heat and cool), and overhead lights whose color/brightness can be controlled. So, there are a lot of different output conditions which can be adjusted based on the 'learned' preferences of the individual. – andyopayne Mar 19 '13 at 01:24
  • 1
    Most examples I've seen don't need to delve into any of the algorithms. Have a look at fuzzy controllers. They don't tend to need much "learning" (unless you count calibration as learning), but they do give a way of relating qualitative statements about comfort to what you should do with the heating / cooling system. – Peter K. Mar 19 '13 at 01:46
  • Thanks Peter. I have read a few papers which apply fuzzy logic to this sort of problem... with some decent results. I understood fuzzy logic as a way to determine if a variable was either in or out of a certain set (hence the fuzzy distinction). But, would fuzzy logic help in determining the most appropriate course of action (ie. is it better to turn on a fan vs. turning on the AC unit? Which do you prioritize and when?) Do you think fuzzy controllers can deal with this sort of optimization? – andyopayne Mar 19 '13 at 01:55
  • I could see a solution to your problem with all those techniques. And while you're at it, toss in evolutionary algorithm, particle swarms, and neuro-fuzzy approaches. But first, define a thing you're trying to optimize (lowest energy cost, comfort, etc.). Then figure out how to measure that thing. Just doing that is a big part of the problem. – ipaul Mar 19 '13 at 02:35
  • Hi Paul. Ok... I get that I was a bit vague in describing the problem. It's actually a multi-objective problem where I'm trying to optimize for both user comfort and energy performance. In an ideal set up, I'd have a slider in the preferences menu allowing the user to select which of the two parameters should get priority (which would weight both selections). Does this help? Or still too vague? To be clear... I wasn't trying to use all of those algorithms... just trying to figure which one might lead to a good solution. – andyopayne Mar 19 '13 at 03:01
  • 4
    Any machine learning algorithm that's learning this from scratch is going to take too long to amass enough data from its environment to learn anything useful. Controllers like this have been done before; the way you do it is by putting engineering equations into the system (things like thermodynamic calculations), and then using a simple learning algorithm to tweak the constants in those equations. – Robert Harvey Mar 19 '13 at 03:24
  • @andyopayne: Robert gives some excellent advice. – Peter K. Mar 19 '13 at 12:14
  • Thanks Robert. I agree with Peter... excellent advice! Just one follow up. Do you think fuzzy controllers (as suggested above) would be the most appropriate type of controller for this application? Also, you mention some simple learning algorithms to 'tweak the constants'. What kind of learning algorithm did you have in mind? Thanks again for the advice. – andyopayne Mar 19 '13 at 15:23
  • Yes, that paper Peter linked looks like a good start. – Robert Harvey Mar 19 '13 at 16:56
  • As cool as I think the ML approaches are, have you considered using more conventional statistical methods? As you noted in the post, this problem is one of correlation. Multivariate regression, PCA, and even simple curve fitting are among the list of good tools for model estimation and prediction. – Throwback1986 Mar 20 '13 at 17:29

1 Answers1

1

Monte-Carlo methods may work for you. In a nutshell: define the boundaries of the results you are looking for, for example energy consumption(derived from measured system parameters) within a range, and run a simulation where the free variables are allowed to vary to simulate a physical system. The sets that fall within the solution space will define the acceptable input ranges.

If your search space is manageable (depends on your system constraints), then you can fit curves to these parameters.

Alternately, you can use a minmax approach if you can define your search space in a way suitable for local minimization.

  • Thanks mistermeta. I've actually decided to use a neural network. I'm in the process of refining my GUI, but so far, it seems to be working pretty well. I appreciate all of the feedback. – andyopayne Sep 10 '13 at 19:46