Energy disaggregation, also known as nonintrusive load monitoring (NILM), is the task of separating aggregate energy data for a whole building into the energy data for individual appliances. Studies have shown that simply providing disaggregated data to the consumer improves energy consumption behavior. However, placing individual sensors on every device in a home is not presently a practical solution. Disaggregation provides a feasible method for providing energy usage behavior data to the consumer which utilizes currently existing infrastructure. In this paper, we present a novel framework to perform the energy disaggregation task. We model each individual device as a single-input, single-output system, where the output is the power consumed by the device and the input is the device usage. In this framework, the task of disaggregation translates into finding inputs for each device that generates our observed power consumption. We describe an implementation of this framework, and show its results on simulated data as well as data from a small-scale experiment.