System Design শেখো
শেখো / ML / AI সিস্টেম ডিজাইন

Recommendation Systems

12 মিনিট Module 10 · ML / AI System Design 🔥
এক নজরে
  • আধুনিক recommendation system দুই ধাপে কাজ করে — candidate generation (কোটি থেকে কয়েকশো বাছাই) ও ranking (সেরা কয়েকটি সাজানো)।
  • Collaborative filtering user-আচরণ দেখে, content-based item-এর বৈশিষ্ট্য দেখে; দুটোই embedding দিয়ে আধুনিক রূপ পায়।
  • নতুন user বা item-এর জন্য cold start একটা বড় চ্যালেঞ্জ, যা YouTube/Netflix নানা কৌশলে সামলায়।

সমস্যাটা কী?

YouTube-এ আছে কোটি কোটি video, Netflix-এ হাজার হাজার সিনেমা, Daraz-এ লক্ষ লক্ষ product। কিন্তু তোমার homepage-এ জায়গা মাত্র ২০-৩০টার। প্রশ্ন হলো — এই বিশাল সমুদ্র থেকে ঠিক সেই কয়েকটা জিনিস কীভাবে বাছাই করবে যা তুমি পছন্দ করবে?

সরল সমাধান হবে — প্রতিটি item-এর জন্য একটা model চালিয়ে score বের করা। কিন্তু কোটি item × কোটি user × প্রতি সেকেন্ডের request — এটা গাণিতিকভাবে অসম্ভব, কোনো GPU পারবে না। তাই recommendation system-এর আসল কারুকাজ হলো এই বিশালতাকে দক্ষতার সাথে সামলানো — সঠিকতা আর গতি দুটো একসাথে রাখা।

মূল ধারণা

Recommendation system হলো এমন একটি ML system যা প্রতিটি user-এর জন্য বিশাল item-pool থেকে সবচেয়ে প্রাসঙ্গিক কয়েকটি item বেছে এনে ব্যক্তিগতভাবে সাজিয়ে দেখায়।

মূল অন্তর্দৃষ্টি হলো — তুমি কোটি item একসাথে ভালোভাবে যাচাই করতে পারবে না, কিন্তু দুই ধাপে ভাগ করলে পারবে। প্রথম ধাপে একটা সস্তা, দ্রুত model কোটি থেকে কয়েকশোতে নামায় (recall বেশি, নিখুঁততা কম)। দ্বিতীয় ধাপে একটা দামি, নিখুঁত model সেই কয়েকশোকে সাজায় (precision বেশি)। এই "funnel" পদ্ধতিই আধুনিক বড় recommendation system-এর মেরুদণ্ড।

কীভাবে কাজ করে

Two-stage architecture

ধাপনামinputoutputmodel
Candidate Generationকোটি itemকয়েকশো itemহালকা, দ্রুত (embedding lookup)
Rankingকয়েকশো itemসাজানো top-Nভারী, নিখুঁত (deep model)

Candidate generation-এ সাধারণত user আর item-কে একই embedding space-এ রূপান্তর করা হয়, তারপর user-এর embedding-এর কাছাকাছি item-গুলো দ্রুত খুঁজে আনা হয় (approximate nearest neighbor)। এটা মিলিসেকেন্ডে কোটি item ঘেঁটে কয়েকশো বের করতে পারে।

Ranking-এ প্রতিটি candidate-এর জন্য অনেক feature (user-এর history, item-এর জনপ্রিয়তা, সময়, device) নিয়ে একটা deep model চালিয়ে নিখুঁত score দেওয়া হয়, যা দিয়ে চূড়ান্ত ক্রম ঠিক হয়।

Collaborative vs Content-based

পদ্ধতিমূল ধারণাশক্তিদুর্বলতা
Collaborative Filtering"তোমার মতো user যা পছন্দ করেছে"নতুন ধরনের জিনিস আবিষ্কার করায়cold start-এ দুর্বল
Content-based"তুমি যা পছন্দ করেছ তার মতো item"নতুন item-এও কাজ করেএকই ধাঁচে আটকে রাখে

বাস্তবে দুটোকে মিশিয়ে hybrid পদ্ধতি ব্যবহার করা হয়।

Embeddings-এর ভূমিকা

User আর item দুজনকেই একটা dense vector (embedding) হিসেবে উপস্থাপন করা হয়। দুটো vector কত কাছাকাছি (cosine বা dot product) তা দিয়ে বোঝা যায় কে কাকে কতটা পছন্দ করবে। একই বিষয়ের user ও item embedding space-এ পাশাপাশি বসে।

সহজ উদাহরণ

ভাবো নিউমার্কেটে কাপড় কিনতে গেছ। পুরো মার্কেটে হাজারো দোকান (কোটি item) — সব দেখা অসম্ভব। তাই প্রথমে এক চালাক গাইড (candidate generation) তোমার রুচি বুঝে দ্রুত ১০টা দোকানে নিয়ে যায়। তারপর তুমি ধীরে-সুস্থে সেই ১০ দোকানের জিনিস হাতে নিয়ে, দাম-মান যাচাই করে (ranking) সেরা ৩টা বাছো। গাইড কাজ করে "তোমার মতো লোকজন এই দোকানে যায়" বলে (collaborative), আবার "তুমি যে রঙ পছন্দ করো" দেখেও (content-based)। দুই ধাপে ভাগ করায় বিশাল মার্কেটও সহজ হয়ে যায়।

কৌশল

বাস্তব recommendation system-এ আরও কিছু গুরুত্বপূর্ণ কৌশল:

  1. Diversity ও freshness: সব একই ধরনের সুপারিশ দিলে user বিরক্ত হয়; তাই ইচ্ছাকৃতভাবে বৈচিত্র্য আর নতুন content মেশানো হয়।
  2. Exploration vs exploitation: শুধু পরিচিত পছন্দ দেখালে নতুন কিছু আবিষ্কার হয় না; তাই মাঝে মাঝে অজানা item দেখিয়ে user-এর প্রতিক্রিয়া শেখা হয়।
  3. Cold start সামলানো: নতুন user-কে জনপ্রিয় বা ট্রেন্ডিং item দেখানো হয়; নতুন item-এর জন্য content feature (title, category) ব্যবহার করা হয় যতক্ষণ না interaction জমে।

কখন ব্যবহার করবে / করবে না

Recommendation system দরকার যখন:

  • item-এর সংখ্যা বিশাল, user নিজে সব ঘেঁটে দেখতে পারে না।
  • personalization থেকে engagement বা বিক্রি বাড়ে।
  • পর্যাপ্ত interaction data আছে।

দরকার নেই যখন:

  • item মাত্র কয়েকটা (সহজ তালিকাই যথেষ্ট)।
  • user base নতুন, কোনো data নেই (আগে data জমাও)।
সাবধান

শুধু engagement-এর জন্য optimize করা একটা বিপজ্জনক ফাঁদ। model যদি শুধু "watch time" বাড়াতে শেখে, তাহলে এটি sensational বা একপেশে content-এর দিকে user-কে ঠেলে দিতে পারে (filter bubble)। তাই diversity, freshness আর দীর্ঘমেয়াদি satisfaction-কেও objective-এ রাখা জরুরি — না হলে স্বল্পমেয়াদে metric বাড়লেও দীর্ঘমেয়াদে user হারাবে।

বাস্তব উদাহরণ

YouTube-এর recommendation এই two-stage pattern-এর ক্লাসিক উদাহরণ — একটা deep candidate generation network কোটি video থেকে কয়েকশো এনে দেয়, তারপর একটা ranking network সেগুলোকে watch-time আর satisfaction অনুযায়ী সাজায়।

Netflix আরও এক ধাপ এগিয়ে — শুধু কোন সিনেমা দেখাবে তা নয়, প্রতিটি সিনেমার কোন thumbnail তোমাকে দেখাবে সেটাও personalize করে। তারা collaborative signal (তোমার মতো দর্শক যা দেখেছে) আর content signal (genre, actor) মিশিয়ে কাজ করে। নতুন user-এর cold start সামলাতে Netflix প্রথমে কিছু পছন্দ জিজ্ঞেস করে নেয় বা জনপ্রিয় content দেখায়। Spotify-র "Discover Weekly"-ও একই দর্শনে চলে — collaborative filtering দিয়ে "তোমার মতো শ্রোতা যা শোনে" বের করে নতুন গান সাজায়।

টিপস

Interview-এ recommendation design করতে বললে প্রথমেই two-stage funnel (candidate generation → ranking) আঁকো — এটা দেখালে interviewer বুঝবে তুমি scale-এর সমস্যা বোঝো। তারপর embedding দিয়ে candidate retrieval, ranking-এর feature, আর cold start কীভাবে সামলাবে — এই তিনটা ছুঁয়ে গেলে তোমার উত্তর সম্পূর্ণ ও পরিণত মনে হবে।

মিনি কুইজ

1. Two-stage recommendation-এ candidate generation ধাপের কাজ কী?

2. Collaborative filtering আর content-based filtering-এর পার্থক্য কী?

3. Cold start সমস্যা কখন হয়?