I. Introduction
Many real applications, such as network-traffic monitoring, the stock market, credit card fraud detection, and web click streams, generate continuously arriving data, which are known as data streams [1]. A data stream is a real-time, continuous, ordered (implicitly by arrival time or explicitly by time-stamps) sequence of items. For data-stream applications, it is impossible to control the order in which items arrive, and the volume of data is usually too large to be stored on permanent devices or to be scanned thoroughly more than once. Moreover, the concept of interest may depend on some hidden context, not given explicitly in the form of predictive features. In other words, the concepts, which we try to learn from those data, drift with time. For example, the buying preferences of customers may change with time, depending on the current day of the week, availability of alternatives, discounting rate, etc. As the concepts behind the data evolve with time, the underlying clusters may also change considerably with time. Performing clustering on the entire time-evolving data not only decreases the quality of clusters but also disregards the expectations of users that usually require recent clustering results. It is hence recognized that the methods and techniques to analyze the evolving trends in fast data streams have become very important in recent years [2].