پوشش پیشوند

از testwiki
پرش به ناوبری پرش به جستجو

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

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

صورت مسئله

I={i1,i2,,in} مجموعه آیتم‌ها است. یک مجموعه‌آیتم زیرمجموعه‌ای از مجموعه I است. دنباله یک دنباله از مجموعه‌آیتم‌ها مانند <s1,,sj> است که هرکدام از siها یک مجموعه‌آیتم هستند. به هرکدام از siها یک عضو از دنباله می‌گوییم که به‌صورت (x1,,xm) است که هرکدام از xiها یک آیتم هستند.

به دنباله α=<a1,,an> زیردنباله‌ای از β=<b1,,bm> می‌گوییم اگر 1j1<<jnm موجود باشد که برای هر 1in مجموعه‌آیتم ai زیرمجموعه‌ای از bji باشد و آنرا با علامت αβ نشان می‌دهیم.

اگر S مجموعه‌ای از دنباله‌ها باشد تعریف می‌کنیم: الگو:چپ‌چین SupportS(α)=|{x|xSαx}| الگو:پایان چپ‌چین دنباله‌کاوی عددی به عنوان minSupport و مجموعه‌ای مانند S از دنباله‌ها دریافت می‌کند و همه دنباله‌های α را می‌یابد که: الگو:چپ‌چین SupportS(α)minSupport الگو:پایان چپ‌چین

مثال

اگر minSupport برابر ۲ باشد و اعضای S بترتیب <(a)(abc)(ac)(d)(cf)> و <(ad)(c)(bc)(ae)> و <(ef)(ab)(df)(c)(b)> باشد. دنباله <(a)(abc)(ac)(d)(cf)> شامل پنج عضو (a) و (abc) و (ac) و (d) و (cf) است که هرکدام یک مجموعه‌آیتم هستند.

در اینصورت <(ab)(c)> یک دنباله جواب است چون زیردنباله‌ای از دنباله‌های اول و سوم S است.[۲]

الگوریتم

پیشوند و تصویر و پسوند

در ابتدا فرض می‌کنیم همه آیتم‌های آیتم‌مجموعه‌ها بصورت مرتب شده هستند. به دنباله β=<e1,,em> یک پیشوند از دنباله α=<i1,,in> می‌گوییم اگر برای هر jm1 داشته باشیم ij=ej و emim و همچنین آیتم‌های imem همگی بصورت الفبایی بعد از آیتم‌های em باشند.

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

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

اگر β=<e1,,em1,e'm> پیشوندی از α=<e1,,en> باشد به دنباله γ=<e'm,em+1,,en> پسوند α نسبت به β می‌گوییم که e'm=eme'm.

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

صورت الگوریتم

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

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

شبه کد

الگو:چپ‌چین

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(α,l,S|α)
 The parameters are
 1. α is sequential pattern
 2. l is length of α
 3. S|α is α-projected database if α<>, otherwise, is the sequence database S
 Method :
 1. Scan S|α 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 S|α, and call PrefixSpan(α,l+1,S|α).

الگو:پایان چپ‌چین

مثال

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

S={<(a)(abc)(d)>,<(ad)(c)(bc),<(e)(g)(af)>}

و مقدار min_support برابر ۲ باشد. ابتدا دنباله‌های پرتکرار با طول ۱ را می‌یابیم که بوضوح با در نظر گرفتن تکرار آیتم‌ها ۴ دنباله <(a)>,<(b)>,<(c)>,<(d)> قابل قبول هستند. حال باید پایگاه‌داده تصویرشده <(a)> را پیدا کنیم که چون <(a)> زیردنباله‌ای از سه دنباله هست پایگاه‌داده بصورت زیر می‌شود.

S|α={<(abc)(d)>,<(d)(c)(bc)>,<(f)>}

حال با در نظر گرفتن آیتم‌هایی که حداقل دوبار در S|α تکرار شده‌اند در این مرحله دو دنباله به طول دو <(a)(b)>,<(a)(c)> پیدا می‌شود. با ادامه انجام این روند همه الگوهای پرتکرار یافت می‌شوند: الگو:چپ‌چین frequent_patterns = {<(a)>,<(b)>,<(c)>,<(d)>,<(a)(b)>,<(a)(c)>,<(a)(bc)>,<(bc)>}

الگو:پایان چپ‌چین

بهبود دهی

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

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

جستارهای وابسته

منابع

الگو:پانویس