Non-Intrusive Load Monitoring using Machine and Deep Learning Techniques