# কিভাবে রেকমেন্ডার সিস্টেম কাজ করে?

> A method and system for anticipatory package shipping are disclosed. According to one embodiment, a method may include packaging one or more items as a package for eventual shipment to a delivery address, selecting a destination geographical area to which to ship the package, shipping the package to the destination geographical area without completely specifying the delivery address at time of shipment, and while the package is in transit, completely specifying the delivery address for the package.
>
> \--- Amazon's 'anticipatory shipping' patent August 2012

মেশিন লার্নিং নিয়ে একটা বেসিক ধারণা তৈরি হলো বলে। এই ধারনাকে সামনে রেখে আমরা একটা “রিয়েল ওয়ার্ল্ড অ্যাপ্লিকেশন” এর ধারণা নিয়ে আলাপ করবো। ২০০১ সাল থেকে আমি অ্যামাজন ব্যবহার করে আসছি। অনেকে যেমন সোশ্যাল মিডিয়া সাইটে পড়ে থাকেন, সেভাবে আমিও প্রায় পড়ে থাকতাম এই অ্যামাজন সাইট নিয়ে। এরপর এল আলীএক্সপ্রেস। এটা একটা নেশার মতো, কারণ আপনার কেনার প্যাটার্ন দেখে সাইটগুলো এমনভাবে প্রডাক্ট “রিকোমেন্ড” করতে থাকে, তখন মাঝে মাঝে মনে হয় আমার নিজের থেকে আমার “চয়েস”গুলো সম্পর্কে এই সাইটগুলো ভাল জানে। আমি মনে মনে যা চাইছি, অথবা আমি নিজেও জানিনা কোন জিনিসটা আমার পছন্দ হতে পারে, সেগুলো অনবরত: দেখাতে থাকে এই সাইটগুলো। না কিনে যাব কোথায়? এর অর্থ হচ্ছে - তারা ব্যবহারকারীদের মানে আমাদের মাথা “হ্যাক” করে ফেলেছে এর মধ্যে। আমি কি চিন্তা করবো সেটা আগে থেকে জানে সে।

পাশাপাশি বাংলাদেশে প্রচুর ই-কমার্স সাইট দাঁড়াচ্ছে। ই-কমার্স সাইটগুলো তাদের গ্রাহকদের ধরে রাখতে প্রচুর সার্ভিস নিয়ে আসছে। এদের মধ্যে একটা বড় সার্ভিস হচ্ছে এই প্রোডাক্ট “রিকমেন্ডার সিস্টেম”, যেটার কথা এতক্ষণ ধরে বললাম। এর অর্থ হচ্ছে আপনি দুটো একটা জিনিস কিনেছেন, সেই সাইট আপনাকে রিকমেন্ড করছে আরো কয়েকটা জিনিস, যেগুলো আপনি পছন্দ করতে পারেন। বেশিরভাগ সময়ই এই জিনিসগুলো আপনার মনের কথা বলতে পারে। দিন দিন এই “রিকোমেন্ডার সিস্টেম” আরো স্মার্ট হচ্ছে মেশিন লার্নিং “প্রেডিক্টিটিভ অ্যানালাইটিক্স” এর কারণে।

২০১৪ সালে অ্যামাজন একটা পেটেণ্ট পায় “অ্যান্টিসিপেটরি শিপিং” নামে। ব্যাপারটা এমন যে, প্রোডাক্ট শীপমেন্ট হয়ে যাবে আপনার ঠিকানায় আপনার অর্ডারের আগে। এর মানে, আপনি কি কি অর্ডার করতে পারেন সামনের কয়েক দিনে, সেগুলো সে ধারণা করে পাঠিয়ে দেবে আপনার কাছে আপনার অর্ডারের আগে। দেখা যাবে - যেদিন আপনি আসলে অর্ডার করছেন, সেই দিনই জিনিস হাজির। কয়েক ঘন্টার মধ্যে। অথচঃ জিনিসটা আসছে দূরের কোন এলাকা থেকে। আমার ধারণা, এমুহুর্তে প্রোডাক্টগুলো শিপমেন্ট হয়ে থাকছে ক্রেতার কাছের শিপিং হাবে। অথবা, ট্রাকের ওই প্যালেটে। মানে ২ ঘন্টার দূরত্বে।

ব্যাপারটা সম্ভব। আমাদের শপিং হিস্ট্রি, লোকাল এরিয়া স্পেসিফিক ইনভেন্টরি, আমাদের এরিয়ার পপুলার লিস্ট, ঈদ/পূজা পার্বনের আগের অর্ডার, কবে শেষ হতে পারে, আমার শপিং কার্টে পড়ে আছে কতোদিন, আমার উইশ-লিস্ট ইত্যাদি ঘাঁটলে করা সম্ভব এই জিনিস। আমাজনের পেটেন্টে এটাও বলেছে তারা, যে ধরা যাক আমি আসলে শেষ পর্যন্ত অর্ডার করিনি, তাহলে ব্যবহারকারীকে জিনিসটা ‘গিফট’ মানে ফ্রীতে দিয়ে দেবে। এটুকু চেষ্টা করতে ক্ষতি কী? এয়ারলাইন্সগুলো তো বহুবছর ধরে ওভারবুকিং দিয়ে আসছে এই চান্সে।

ফিরে আসি, আমাদের অ্যাপ্লিকেশনে। আমি বলব, এই জিনিসটা ব্যবহার হচ্ছে আরো অনেক জায়গায়। যারা নেটফ্লিক্স দেখছেন, তারা নিজের চোখে দেখছেন কিভাবে নতুন নতুন মুভি আপনাকে রিকমেন্ড করছে। যতো বেশি মুভি দেখছেন ততই অ্যাক্যুরেসি পাচ্ছে এই মডেল। ২০০৯ সালে নেটফ্লিক্স তাদের মডেলের অ্যাক্যুরেসি ১০ শতাংশ বাড়ানোর জন্য মিলিয়ন ডলার প্রাইজ মানি অফার করেছিল।

আমাদের চোখের সামনে ইউটিউব “অটো-প্লে”তে রিকোমেন্ডার সিস্টেম এমন কিছু জিনিস নিয়ে আসছে যেটা আমি হয়তোবা সার্চ দিয়ে পেতাম না। এর অর্থ হচ্ছে আমার মন মানসিকতা ইউটিউব আমার নিজের থেকেও বেশ ভালোভাবে বুঝতে পারছে। এটাই হচ্ছে “হ্যাকিং দ্য ব্রেইন”। ফেইসবুক আমাদের লাইকিংস এর ওপর ভিত্তি করে যে ধরনের “পেইজ” আমাদের সামনে নিয়ে আসছে সেটা অনেকটাই বিস্ময়কর। পাশাপাশি “ইউ মে নো হিম” মানে “আপনি উনাকে চিনতে পারেন” বলে এমন সব বন্ধু-বান্ধবকে সামনে নিয়ে আসছে যাদেরকে হয়তোবা আমি নিজে দেখিনি গত ৩০ বছর। “ইউ মে নো হিম” বলছে কারণ - গুগল, ইউটিউব, ফেইসবুক বা আমাজন ভয় পাওয়াতে চায় না আমাদের, এর থেকে অনেক অনেক বেশি জানে সে। সবই এই রিকমেন্ডার সিস্টেমের খেলা।

আচ্ছা, এই “রিকমেন্ডার সিস্টেম” জিনিসটা কি?

ঠিক ধরেছেন। আমাদের এই রিকমেন্ডার সিস্টেম একটা স্ট্যাটিস্টিকাল অ্যালগরিদম ব্যবহার করে, যেটা বিভিন্ন ব্যবহারকারীর কোন একটা বিশেষ জিনিসের রেটিংগুলোকে তার জন্য নতুন জিনিস হিসেবে প্রেডিক্ট করে দেয়। এখানে ওই জিনিসের সাথে অন্য জিনিসের একটা সম্পর্ক বা জিনিসগুলোর মধ্যে যে সম্পর্ক আছে যা অন্য ব্যবহারকারীরা সেই জিনিসগুলোকে কিভাবে “রেটিং” করেছিল সেটার হিসেব থেকেই সে ওই প্রেডিকশনটা করতে চায়। এর ভেতরের “ইনটিউশন” হচ্ছে একই ধরনের ব্যবহারকারীরা কাছাকাছি মার্কা জিনিসের জন্য ওই একই ধরনের বা কাছাকাছি “রেটিং” করবে। এই জিনিসগুলো বা তাদের ব্যবহারকারীর “রেটিং”গুলোর মধ্যে ‘কো-রিলেশন’ মানে সম্পর্ক বের করতে পারলে তাদের প্যাটার্নটা প্রেডিক্ট করা সহজ হয়ে পড়বে।

ইন্ডাস্ট্রি-গ্রেড কম্প্লেক্সিটি এড়ানোর জন্য আমরা এখানে দুই ধরনের রিকোমেন্ডার সিস্টেমের কথা বলতে পারি।

১. কনটেন্ট বেজড ফিল্টারিং: এখানে বিভিন্ন প্রোডাক্টগুলোর মধ্যে জানা প্রোডাক্টগুলোর বিভিন্ন “অ্যাট্রিবিউট”গুলোর মধ্যে ‘সম্পর্ক’গুলো ‘ক্যালকুলেট’ করে এই প্রেডিকশনগুলো করা হয়। প্রতিটা প্রোডাক্টের নিজস্ব ‘অ্যাট্রিবিউট’ মানে তাদের বিভিন্ন বৈশিষ্ট্যগুলোর মধ্যে একটা ‘কোরিলেশন’ করে তার ‘প্রেডিকশন’ বের করা হয়। একটা কনটেন্ট বেজড মুভি রিকোমেন্ডার সিস্টেম বিভিন্ন মুভির মধ্যে ‘সিমিলারিটি’ বের করতে মুভিটা কোন ‘জনরা’য় পড়ছে, কারা কারা সেই মুভিতে আছেন, মুভির সেন্টিমেন্ট কোন দিকে, এই মুভির পরিচালক অন্য কোন কোন মুভি করেছেন, এই মুভির সর্বোচ্চ রেটিং দেওয়া ব্যবহারকারী অন্য কোন কোন মুভি দেখছেন, কতটুকু করে দেখছেন, কি রেটিং দিয়েছেন, এই মুভিটা কোন বইয়ের এডাপটেশন কিনা ইত্যাদি ইত্যাদি অ্যাট্রিবিউট”গুলো নিয়ে কাজ করে।

২. ‘কোলাবোরেটিভ ফিল্টারিং’: এখন পুরো পৃথিবী চলছে ক্রাউডসোর্সিংয়ে। ‘কোলাবোরেটিভ’ ফিল্টারিংয়ের পেছনের ‘ইনটিউশন’ হচ্ছে ব্যবহারকারী ‘শাকিল’ যদি মুভি “হোয়েন হ্যারি মেট স্যালি” এবং “স্লিপলেস ইন সিয়াটল” পছন্দ করেন, তাহলে নতুন ব্যবহারকারী “অন্তরা” যিনি ওই দুটি মুভির একটি পছন্দ করলে অন্যটাও পছন্দ করার একটা ভালো ‘প্রবাবিলিটি’ থাকে।

ব্যাপারটা এরকম যে, একটা মুভি রিকোমেন্ডার সিস্টেম চলছে আপনার কাছে। আপনার ব্যবহারকারীদের মধ্যে অনেকেই এই দুটো মুভির জন্য একই ধরনের ‘রেটিং’ দিয়েছেন। এখন - নতুন একজন ব্যবহারকারী ‘শামীম’ “হোয়েন হ্যারি মেট স্যালি”তে একই ধরনের রেটিং দিয়েছেন, তবে উনি “স্লিপলেস ইন সিয়াটল” দেখেননি। তাহলে এখন ভাবুন, আপনার সেই মুভি রিকোমেন্ডার সিস্টেম সেই শামীমকে কোন মুভি ‘রিকমেন্ড’ করতে পারে? অবশ্যই ‘স্লিপলেস ইন সিয়াটল।’

#### পাইথনে মেশিন লার্নিং দিয়ে মুভি রিকোমেন্ডার সিস্টেম

আমার কাজ হচ্ছে আপনাকে রাস্তায় তুলে দেওয়া। আমি আপনাদেরকে দুটো লিংক দিয়ে দিচ্ছি যেগুলো দিয়ে ঘরে বসে একটা খুব সাধারন মুভি রিকোমেন্ডার সিস্টেম তৈরি করা সম্ভব। এই মডেলগুলো কোনভাবেই কম্প্লেক্সিটি, মানগত ভাবে এবং অ্যাক্যুরেসিতে ইন্ডাস্ট্রি স্ট্যান্ডার্ড এর কাছে ঘেঁষবে না, তবে বেশ ভালো একটা ধারণা দেবে - কিভাবে একটা রিয়েল ওয়ার্ল্ড অ্যাপ্লিকেশন চলে ‘মেশিন লার্নিং’ দিয়ে। এক্ষেত্রে আমার প্রিয় ডেটাসেট হচ্ছে “মুভিলেন্স”। এটা আসল মুভি ডেটাসেটের একটা ছোট সাবসেট, যেখানে ৭০০ ব্যবহারকারীর ৯০০০ মুভির ২ লাখ রেটিং আছে।

টিউটোরিয়ালগুলোর অনলাইন লিংক:

১. [https://github.com/topics/movielens?l=python](https://github.com/topics/movielens?l=python)

২. [http://bit.ly/recom-1](http://bit.ly/recom-1)

৩. [http://bit.ly/recom-2](http://bit.ly/recom-2)
