Recommendation Systems (সুপারিশকরণ ব্যবস্থা) ব্যবহারকারীদের জন্য উপযুক্ত আইটেম, পণ্য বা তথ্য সুপারিশ করতে ডিজাইন করা হয়। এই সিস্টেমগুলি ই-কমার্স, সোশ্যাল মিডিয়া, সিনেমা এবং গান স্ট্রিমিং পরিষেবাগুলিতে ব্যাপকভাবে ব্যবহৃত হয়। এখানে একটি Recommendation System তৈরি করার প্রক্রিয়া আলোচনা করা হলো, যা আপনাকে শুরু করতে সহায়ক হবে।
Recommendation System-এর প্রকার
Collaborative Filtering: ব্যবহারকারীর পূর্ববর্তী আচরণ এবং পছন্দের ভিত্তিতে সুপারিশ তৈরি করে। এর মধ্যে রয়েছে:
- User-based Collaborative Filtering: এক ব্যবহারকারীর পছন্দ অন্য ব্যবহারকারীদের জন্য সুপারিশ করে।
- Item-based Collaborative Filtering: আইটেমের মধ্যে সম্পর্ক বিশ্লেষণ করে।
Content-Based Filtering: আইটেমগুলির বৈশিষ্ট্য এবং ব্যবহারকারীর আগ্রহের উপর ভিত্তি করে সুপারিশ তৈরি করে।
Hybrid Approaches: Collaborative এবং Content-Based Filtering এর সংমিশ্রণ।
Recommendation System তৈরি করার ধাপ
ধাপ ১: ডেটা সংগ্রহ
আপনার Recommendation System তৈরি করতে ডেটা প্রয়োজন। এটি ব্যবহারকারীর তথ্য এবং পণ্য বা আইটেমের সম্পর্কে তথ্য অন্তর্ভুক্ত করবে।
import pandas as pd
# উদাহরণ ডেটাসেট লোড করা
ratings = pd.read_csv('ratings.csv') # ব্যবহারকারীর রেটিং
movies = pd.read_csv('movies.csv') # সিনেমার তথ্য
ধাপ ২: ডেটা প্রিপ্রসেসিং
ডেটাকে পরিষ্কার এবং প্রস্তুত করুন। মিসিং ভ্যালু, অপ্রয়োজনীয় কলাম অপসারণ করুন, এবং ডেটাকে বিশ্লেষণযোগ্য ফরম্যাটে নিয়ে আসুন।
# মিসিং ভ্যালু পরীক্ষা
print(ratings.isnull().sum())
# মিসিং ভ্যালু অপসারণ
ratings = ratings.dropna()
ধাপ ৩: Model Selection
আপনার সিস্টেমের জন্য একটি মডেল নির্বাচন করুন। এখানে Collaborative Filtering এবং Content-Based Filtering উভয়ের জন্য কিছু পদ্ধতি দেওয়া হলো।
৩.১. Collaborative Filtering (User-based)
from sklearn.neighbors import NearestNeighbors
# User-based Collaborative Filtering
user_item_matrix = ratings.pivot(index='userId', columns='movieId', values='rating').fillna(0)
model = NearestNeighbors(metric='cosine', algorithm='brute')
model.fit(user_item_matrix)
# সুপারিশ তৈরি
def get_recommendations(user_id, n_recommendations):
distances, indices = model.kneighbors(user_item_matrix.loc[user_id].values.reshape(1, -1), n_neighbors=n_recommendations+1)
recommended_indices = indices.flatten()[1:]
return user_item_matrix.index[recommended_indices]
recommendations = get_recommendations(user_id=1, n_recommendations=5)
print(recommendations)
৩.২. Content-Based Filtering
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel
# TF-IDF ভেক্টরাইজার তৈরি
tfidf = TfidfVectorizer(stop_words='english')
tfidf_matrix = tfidf.fit_transform(movies['description'])
# কোসাইন সিমিলারিটি ক্যালকুলেট করা
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)
# সুপারিশ তৈরি
def get_content_based_recommendations(movie_title, n_recommendations):
idx = movies.index[movies['title'] == movie_title].tolist()[0]
sim_scores = list(enumerate(cosine_sim[idx]))
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
recommended_indices = [i[0] for i in sim_scores[1:n_recommendations + 1]]
return movies['title'].iloc[recommended_indices]
content_recommendations = get_content_based_recommendations('The Matrix', n_recommendations=5)
print(content_recommendations)
ধাপ ৪: Evaluation
আপনার Recommendation System-এর কার্যকারিতা মূল্যায়ন করুন। Precision, Recall, এবং F1-score ব্যবহার করে সুপারিশের মান পরীক্ষা করতে পারেন।
# Precision, Recall ইত্যাদির গণনা করার জন্য নিজস্ব ফাংশন তৈরি করুন
# (বিভিন্ন স্কোরিং পদ্ধতির জন্য)
ধাপ ৫: Deployment
Recommendation System তৈরি করার পরে, এটি ব্যবহারকারীদের কাছে পৌঁছে দেওয়া প্রয়োজন। এটি একটি ওয়েব অ্যাপ্লিকেশন বা API তৈরি করে করা যেতে পারে।
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/recommend', methods=['GET'])
def recommend():
user_id = request.args.get('user_id')
recommendations = get_recommendations(int(user_id), n_recommendations=5)
return jsonify(recommendations)
if __name__ == '__main__':
app.run(debug=True)
উপসংহার
Recommendation System তৈরি একটি ক্রমাগত প্রক্রিয়া, যা ডেটা বিশ্লেষণ, মডেল তৈরির এবং কার্যকরী রূপে বাস্তবায়নের মাধ্যমে সম্পন্ন হয়। বিভিন্ন পদ্ধতি এবং প্রযুক্তি ব্যবহার করে, আপনি একটি কার্যকর এবং দক্ষ সুপারিশকরণ ব্যবস্থা তৈরি করতে পারবেন যা ব্যবহারকারীদের জন্য প্রাসঙ্গিক তথ্য সরবরাহ করতে সক্ষম।
Read more