امروزه داده ها با سرعت و حجم بسیار بالایی تولید می شوند که در موارد متعددی به صورت جریان داده هستند. جریان داده، یک توالی نامحدود از داده هایی است که با سرعت و حجم بالا تولید می شوند که آن را به عنوان دنباله ای از اشیا داده ای در فواصل زمانی تعریف می نمایند. یکی از رایجترین پردازشهای موجود در خصوص جریان داده ها خوشه بندی است که به طورکلی هدف آن تقسیم داده ها در گروه های همگن میباشد. یکی از الگوریتم های موجود برای خوشه بندی الگوریتم CluStream است که شامل دو فاز آنلاین و آفلاین می باشد و نسخه پیاده سازی شده ای از آن در محیط توزیع شده آپاچی اسپارک نیز وجود دارد. الگوریتم CluStream در فاز آنلاین تعداد ثابتی از ریزخوشه ها را حفظ میکند. این امر در یک جریان داده در حال تکامل، با توجه به پیچیدگی داده های ورودی در جریان های دنیای واقعی، فرضی غیرعملی به نظر می رسد. علاوه براین در این الگوریتم داده های تاریخی را در طول جریان نگهداشته و مکانیزمی جهت حذف تدریجی خوشه های منقضی شده تعبیه نشده است. این مسیٔله باعث میشود با ورود مداوم جریان داده به مرور شعاع خوشه ها بزرگتر شده و دادههای بیشتری به هر خوشه افزوده شود که این امر موجب کاهش دقت خوشهها میگردد. در فاز آفلاین نیز خوشه های نهایی بر اساس پارامتر ثابتی تعیین می شوند. ثابت در نظر گرفتن این پارامتر در عمل میتواند سبب شکستن یک خوشه به چند خوشه دیگر یا تجمیع چندین خوشه با یکدیگر شود و ممکن است کیفیت خوشه های تشخیص داده شده توسط الگوریتم را پایین آورد. جهت رفع مشکلات ذکر شده، در این پایاننامه تغییراتی در فاز آنلاین و آفلاین الگوریتم CluStream صورت گرفته است. در روش پیشنهادی تعداد ریزخوشه ها در طول زمان تغییر میکند. ریزخوشه های جدید به تدریج و در صورت نیاز ساخته میشوند و پس از رسیدن ریزخوشه ها به تعداد ماکزیمم، رفتار الگوریتم پیشنهادی همانند الگوریتم CluStream میباشد. علاوه براین در فاز آنلاین به منظور حذف خوشه های منقضی شده دو ایده پیشنهاد شده است. ایده اول افزودن تابعی به نام تابع پاکسازی یا هرس جهت حذف خوشه های منقضی شده و ایده دوم استفاده از پنجره لغزان به منظور حفظ داده های اخیر و حذف داده های قدیمی تعبیه شده است. همچنین در فاز آفلاین الگوریتمی پیشنهاد شده است که تعداد خوشه های نهایی را به صورت پویا مشخص میکند. در