پیاده‌سازی الگوریتم‌های Eclat و Apriori

سلام.
من برای یه پروژه دانشگاهی باید الگوریتم‌های Eclat و Apriori رو که مربوط به ماشین‌لرنینگ و داده‌کاوی هستن، پیاده کنم. اینکار رو به خاطر وجود concurrency خوب توی الیکسیر/ارلنگ سعی کردم با الیکسیر انجام بدم ولی بعد از اتمام متوجه شدم که انگار الیکسیر اصلا برای اینکار خوب نیست! وقتی minimum support رو در حد 0.001 تنظیم می‌کنم، الگوریتم Apriori کار میکنه ولی مدت زمان خیلی زیادی می‌خواد (در حدود ۵ ساعت ولی این خیلی مشکل نیست) اما Eclat انقدر رم می‌خواد که اصلا خود erlang VM اون رو کیل می‌کنه!
کدهای مربوط به این پیاده‌سازی رو داخل گیت‌لب گذاشتم و دیتاستی هم که برای این پروژه به ما دادند رو هم همونجا میشه دید.
اگه میشه بررسی کنید که من چه کاری میتونم انجام بدم که کارایی این دو تا الگوریتم تا حد زیادی بهتر بشن؟
order این دو تا الگوریتم خطی نیست و کلا هم هزینه زیادی دارن ولی افراد دیگه‌ای بودن که با سی شارپ خیلی سریع‌تر ران گرفتن و مشکلی نداشتن!

1 Like

یک کم کد نگاه کردم اول اینکه اصلا partition نداری و کدت concurrent نیست الان دوم flow رو یک بار در آخر به لیست تبدیل کن

مثال های اینجا رو ببین که partition داره
https://hexdocs.pm/flow/Flow.html

3 Likes