پوشش پیشوند

از ویکی‌پدیا، دانشنامهٔ آزاد

دنباله‌کاوی یکی از مسائل مهم و با استفاده‌های گسترده در داده‌کاوی است. دنباله‌کاوی به این دلیل مسئله دشواری است که برای آن نیاز داریم تعداد زیادی زیردنباله تولید کنیم و آن‌ها را آزمایش کنیم. تعداد زیادی از الگوریتم‌های دنباله‌کاوی مانند الگوریتم آپریوری از یک روش ساخت کاندید و آزمایش استفاده می‌کنند اما این روش برای پایگاه‌داده‌های شامل الگوهای متعدد یا زیاد مناسب و بهینه نیست.

پوشش پیشوند(به انگلیسی: prefixspan) یک الگوریتم بهینه برای انجام دنباله‌کاوی است. پوشش پیشوند یک الگوریتم تصویر محور است که از روش گسترش الگو استفاده می‌کند. در این الگوریتم بصورت بازگشتی یک پایگاه‌داده به تعدادی پایگاه‌داده تصویرشده کوچکتر تبدیل می‌شود و الگوها برای هر پایگاه‌داده گسترش می‌یابند و برای هر کدام از پایگاه‌داده‌های کوچکتر الگوهای پرتکرار پیدا می‌شوند.[۱]

صورت مسئله[ویرایش]

مجموعه آیتم‌ها است. یک مجموعه‌آیتم زیرمجموعه‌ای از مجموعه است. دنباله یک دنباله از مجموعه‌آیتم‌ها مانند است که هرکدام از ها یک مجموعه‌آیتم هستند. به هرکدام از ها یک عضو از دنباله می‌گوییم که به‌صورت است که هرکدام از ها یک آیتم هستند.

به دنباله زیردنباله‌ای از می‌گوییم اگر موجود باشد که برای هر مجموعه‌آیتم زیرمجموعه‌ای از باشد و آنرا با علامت نشان می‌دهیم.

اگر S مجموعه‌ای از دنباله‌ها باشد تعریف می‌کنیم:

دنباله‌کاوی عددی به عنوان minSupport و مجموعه‌ای مانند S از دنباله‌ها دریافت می‌کند و همه دنباله‌های را می‌یابد که:

مثال[ویرایش]

اگر minSupport برابر ۲ باشد و اعضای S بترتیب و و باشد. دنباله شامل پنج عضو (a) و (abc) و (ac) و (d) و (cf) است که هرکدام یک مجموعه‌آیتم هستند.

در اینصورت یک دنباله جواب است چون زیردنباله‌ای از دنباله‌های اول و سوم S است.[۲]

الگوریتم[ویرایش]

پیشوند و تصویر و پسوند[ویرایش]

در ابتدا فرض می‌کنیم همه آیتم‌های آیتم‌مجموعه‌ها بصورت مرتب شده هستند. به دنباله یک پیشوند از دنباله می‌گوییم اگر برای هر داشته باشیم و و همچنین آیتم‌های همگی بصورت الفبایی بعد از آیتم‌های باشند.

اگر زیردنباله‌ای از باشد تصویر با پیشوند زیردنباله از با شرایط زیر است:

  1. پیشوندی از باشد.
  2. بیشینه باشد. یعنی هیچ موجود نباشد که پیشوندی از باشد.

اگر پیشوندی از باشد به دنباله پسوند نسبت به می‌گوییم که .

به عنوان مثال پیشوندی از است و پسوند مربوط به آن است.[۳]

صورت الگوریتم[ویرایش]

الگوریتم از این گذاره استفاده می‌کند که اگر الگوهای پرتکرار با طول i باشند الگوهای به طول i + 1 را می‌توان به n دسته تقسیم کرد که اعضای دسته jام همگی دارای پیشوند باشند. با استفاده از گزاره قبل الگوریتم از سه مرحله تشکیل شده‌است:

  1. پیدا کردن همه الگوهای پرتکرار که طول آنها j است (آنهارا بنامید).
  2. تقسیم فضای مسئله از این طریق که همه دنباله‌هایی که زیردنباله‌ای از آن‌ها است را به منتسب می‌کنیم.
  3. برای هر دنباله پایگاه‌داده تصویر شده را ایجاد می‌کنیم و بصورت بازگشتی به یافتن الگوهای پرتکرار می‌گردیم. لازم است ذکر شود پایگاه‌داده تصویر شده از تصویر روی همه دنباله‌های منتسب شده به بدست می‌آید.[۴]

شبه کد[ویرایش]

Algorithm (PrefixSpan) Prefix-projected sequential pattern mining
Input: Database S, min_support
Output: The complete set of sequential petterns
Method: call PrefixSpan(<>, 0, S)
 Subroutine PrefixSpan()
 The parameters are
 1.  is sequential pattern
 2. l is length of 
 3.  is -projected database if , otherwise, is the sequence database S
 Method :
 1. Scan  once, find each frequent item, b, such that b can be assembled to the last element of  to form a sequential
 pattern.
 2. For each frequent item b, append it to  to form a sequential pattern , and output .
 3. For each , construct -projected database , and call PrefixSpan().

مثال[ویرایش]

فرض کنید مجموعه دنباله‌ها بصورت زیر باشد:

و مقدار min_support برابر ۲ باشد. ابتدا دنباله‌های پرتکرار با طول ۱ را می‌یابیم که بوضوح با در نظر گرفتن تکرار آیتم‌ها ۴ دنباله قابل قبول هستند. حال باید پایگاه‌داده تصویرشده را پیدا کنیم که چون زیردنباله‌ای از سه دنباله هست پایگاه‌داده بصورت زیر می‌شود.

حال با در نظر گرفتن آیتم‌هایی که حداقل دوبار در تکرار شده‌اند در این مرحله دو دنباله به طول دو پیدا می‌شود. با ادامه انجام این روند همه الگوهای پرتکرار یافت می‌شوند:

frequent_patterns =

بهبود دهی[ویرایش]

اگر اندازه پایگاه داده های ساخته‌شده کوچک شود به افزایش کارایی الگوریتم کمک می‌کند. به این منظور هنگام ساخت هر پایگاه‌داده تصویری از یک هرس داده‌ها با استفاده از بررسی‌های الگوریتم آپریوری استفاده می‌کنیم. به این روش تصویر دولایه(bi level projection) می‌گویند.

آزمایش‌ها نشان داده‌است که بیشتر هزینه این الگوریتم صرف ساخت پایگاه‌داده‌ها می‌شود و اگر اندازه پایگاه داده بزرگ باشد لازم است تعداد زیادی پایگاه‌داده تصویری تولید شود که هزینه زیادی دارد. به این منظور بجای ساخت فیزیکی پایگاه‌داده‌ها برای هر دنباله یک شماره در نظر می‌گیریم و در هر پایگاه‌داده تنها شماره دنباله‌ها و اندیس مکان شروع پسوند را نگه می‌داریم که باعث افزایش کارایی الگوریتم می‌شود.به این روش شبه تصویر(pseudo projction) می‌گویند. [۵]

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  1. Pei, Jian (2000-10-04). "Mining sequential patterns by pattern-growth: the PrefixSpan approach". IEEE (به انگلیسی). 16 (11): 1424–24. doi:10.1109/TKDE.2004.77. ISSN 1558-2191.
  2. Mabroukeh, N. R.; Ezeife, C. I. (2010). "A taxonomy of sequential pattern mining algorithms". ACM Computing Surveys. 43: 1–41. CiteSeerX 10.1.1.332.4745. doi:10.1145/1824795.1824798.
  3. Han, Jiawei (2001-02-01). "PrefixSpan,: mining sequential patterns efficiently by prefix-projected pattern growth". IEEE (به انگلیسی). doi:10.1109/ICDE.2001.914830. ISSN 1063-6382.
  4. Pei, Jian (2000-10-04). "Mining sequential patterns by pattern-growth: the PrefixSpan approach". IEEE (به انگلیسی). 16 (11): 1430–32. doi:10.1109/TKDE.2004.77. ISSN 1558-2191.
  5. Han, Jiawei (2001-02-01). "PrefixSpan,: mining sequential patterns efficiently by prefix-projected pattern growth". IEEE (به انگلیسی). doi:10.1109/ICDE.2001.914830. ISSN 1063-6382.