Learning in Non-Stationary Environments: Methods and Applications