Apriori এবং FP-Growth হল দুটি জনপ্রিয় অ্যালগরিদম যা Association Rule Mining এর জন্য ব্যবহৃত হয়। এই অ্যালগরিদমগুলো ডেটাসেটে আইটেমসেটের মধ্যে সম্পর্ক খুঁজে বের করতে সাহায্য করে এবং সেগুলির মধ্যে অ্যাসোসিয়েশন রুল তৈরি করে। এগুলোর মাধ্যমে Frequent Itemsets বের করা হয়, যা পরবর্তীতে Association Rules তৈরি করতে ব্যবহৃত হয়।
এখানে আমি Apriori এবং FP-Growth অ্যালগরিদম ব্যবহার করার ধাপগুলো ব্যাখ্যা করবো।
1. Apriori Algorithm
Apriori অ্যালগরিদমটি একটি Bottom-up অ্যাপ্রোচ ব্যবহার করে। এটি প্রথমে ছোট আইটেমসেট (একটি আইটেম) খুঁজে বের করে, তারপর এই আইটেমসেটগুলোর সমন্বয়ে বড় আইটেমসেট তৈরি করে। এই অ্যালগরিদমটি খুবই জনপ্রিয় এবং ব্যপকভাবে ব্যবহৃত হয় Market Basket Analysis এবং Frequent Itemset Mining এর জন্য।
Apriori Algorithm-এর কার্যপ্রণালী:
- প্রথমে, সব একক আইটেমের Support (সমর্থন) হিসাব করা হয়।
- এরপর candidate itemsets তৈরি করা হয় যা পর্যায়ক্রমে বড় হতে থাকে, এবং প্রত্যেকটি আইটেমসেটের Support হিসাব করা হয়।
- শেষ পর্যন্ত, যেগুলি min_support এর উপরে থাকে, সেগুলো frequent itemsets হিসেবে চিহ্নিত করা হয়।
Python-এ Apriori Algorithm উদাহরণ:
# লাইব্রেরি ইনস্টল করুন
!pip install mlxtend
from mlxtend.frequent_patterns import apriori, association_rules
import pandas as pd
# ডেটা সেট তৈরি করুন (ট্রানজেকশন তালিকা)
dataset = [['milk', 'bread', 'butter'],
['milk', 'bread'],
['milk', 'butter'],
['bread', 'butter'],
['milk', 'bread', 'butter']]
# ডেটা ফ্রেম তৈরি করুন
from mlxtend.preprocessing import TransactionEncoder
te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)
# Apriori অ্যালগরিদম প্রয়োগ করুন
frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)
# অ্যাসোসিয়েশন রুল তৈরি করুন
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)
# রুল দেখান
print(rules)
এখানে, milk, bread, এবং butter আইটেমগুলো ব্যবহার করা হয়েছে এবং min_support 0.6 নির্ধারণ করা হয়েছে, অর্থাৎ শুধুমাত্র সেই আইটেমসেটগুলো খুঁজে বের করা হবে যেগুলির উপস্থিতি 60% বা তার বেশি।
2. FP-Growth Algorithm
FP-Growth একটি উন্নত অ্যালগরিদম যা Frequent Pattern Growth নামক একটি পদ্ধতি অনুসরণ করে। এটি Apriori অ্যালগরিদমের তুলনায় আরও দ্রুত এবং কম মেমরি খরচে কাজ করে। FP-Growth অ্যালগরিদমটি একটি Prefix Tree (FP-tree) ব্যবহার করে। এটি প্রথমে একটি কম্প্যাক্ট FP-tree তৈরি করে, এবং তারপর সেই গাছের উপর ভিত্তি করে Frequent Itemsets খুঁজে বের করে।
FP-Growth Algorithm-এর কার্যপ্রণালী:
- প্রথমে FP-tree তৈরি করা হয়, যা Frequent Itemsets কে সন্নিবেশিত করে।
- এরপর, FP-tree থেকে Frequent Itemsets খুঁজে বের করা হয় এবং এই আইটেমগুলির সমন্বয়ে Association Rules তৈরি করা হয়।
Python-এ FP-Growth Algorithm উদাহরণ:
# লাইব্রেরি ইনস্টল করুন
!pip install mlxtend
from mlxtend.frequent_patterns import fpgrowth, association_rules
import pandas as pd
# ডেটা সেট তৈরি করুন (ট্রানজেকশন তালিকা)
dataset = [['milk', 'bread', 'butter'],
['milk', 'bread'],
['milk', 'butter'],
['bread', 'butter'],
['milk', 'bread', 'butter']]
# ডেটা ফ্রেম তৈরি করুন
from mlxtend.preprocessing import TransactionEncoder
te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)
# FP-Growth অ্যালগরিদম প্রয়োগ করুন
frequent_itemsets_fp = fpgrowth(df, min_support=0.6, use_colnames=True)
# অ্যাসোসিয়েশন রুল তৈরি করুন
rules_fp = association_rules(frequent_itemsets_fp, metric="lift", min_threshold=1)
# রুল দেখান
print(rules_fp)
এখানে, FP-Growth অ্যালগরিদম ব্যবহার করে min_support 0.6 নির্ধারণ করা হয়েছে এবং অ্যাসোসিয়েশন রুলগুলি তৈরি করা হয়েছে।
Apriori এবং FP-Growth এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Apriori Algorithm | FP-Growth Algorithm |
|---|---|---|
| অ্যালগরিদম | Level-wise (level by level) | Frequent Pattern Growth |
| গতি | তুলনামূলকভাবে ধীর | দ্রুত এবং কম মেমরি খরচ |
| ডেটা কাঠামো | Candidate itemsets তৈরি করে | Prefix tree (FP-tree) তৈরি করে |
| মেমরি খরচ | বেশি মেমরি খরচ | কম মেমরি খরচ |
| উপযুক্ত ডেটা | ছোট ডেটাসেট | বড় ডেটাসেট |
| কম্পিউটেশনাল ক্ষমতা | বেশি সময় নেয় | দ্রুত এবং কার্যকর |
সারাংশ
Apriori এবং FP-Growth দুটি অ্যালগরিদমই Frequent Itemset Mining এবং Association Rule Mining এর জন্য ব্যবহৃত হয়, কিন্তু FP-Growth সাধারণত দ্রুত এবং কম মেমরি খরচে কাজ করে। Apriori ধীরে ধীরে আইটেমসেটের সম্ভাবনা পরীক্ষা করে এবং candidate itemsets তৈরি করে, যেখানে FP-Growth একটি Prefix Tree (FP-tree) ব্যবহার করে। আপনি আপনার ডেটাসেটের আকার এবং স্কেল অনুযায়ী একটি অ্যালগরিদম নির্বাচন করতে পারেন।
Read more