Learning Data Streams With Changing Distributions and Temporal Dependency