Machine Learning Approaches to Non-Intrusive Load Monitoring