# User Engagement এবং Churn Prediction

ডাটাসেটটি ডাউনলোড করে নিতে পারেন এখান থেকে :&#x20;

[`https://www.kaggle.com/msahmed/datasets`](https://www.kaggle.com/msahmed/datasets)

আপনি কি কোনো ফেসবুক গ্রূপের সদস্য ? অথবা আপনি কি কোনো ফেসবুক গ্রূপের অ্যাডমিন ? না হলেও সমস্যা নেই। সমস্যাটি বুঝতে পারলেই হলো।\
আমরা প্রায়ই দেখি ফেসবুক তার গ্রূপের ইউজারদের বিভিন্ন ভাবে মার্ক করে। আপনি যেই গ্রূপটিতে সবচেয়ে বেশি সময় দেন বা মেসেজ পোস্ট করেন, সেই গরূপে আপনি Top Contributor হয়ে যান। ঠিক এই একই রকমভাবে যেই ব্যাঙ্কের সাথে আপনার লেনদেন বেশি বা যেই সুপারশপে আপনি বেশি কেনাকাটা করেন বা যেই এয়ারলাইন্স আপনি বেশি ইউজ করেন - তারা সবাই কিন্তু আপনাকে একটু এক্সট্রা খাতির করে। এতো লক্ষ লক্ষ ইউজারদের ভিতর থেকে তারা আপনাকে কিভাবে চিনে রাখে ? কিভাবে আপনার প্রিয়জন আপনার জন্মদিন ভুলে গেলেও, এই সব প্রতিষ্ঠান ভুলে না, ঠিক ১২:০১ মিনিটে পেয়ে যান একটি কল বা ইমেল ? এই সব কিছুর জন্য দায়ী একটি মেশিন লার্নিং এলগোরিদম যার মাদ্ধমে আপনার ডাটা কে এনালাইসিস করে,আপনাকে Ranking করা হয়। Ranking বলে দেয় আপনি সেই কোম্পানিটির কত কাছের একজন।

গত ১ বছর আপনি যেই সুপারশপ থেকে বাজার করেছেন, আপনি জানেন কিনা জানি না , কিন্তু সেই সুপারশপের ডাটা এনালিস্ট ঠিক জানে - আগামী ১ বছর তাদের থেকে আপনি কেনাকাটা করবেন কি না ? জেনে কি হবে ? যেই পরোটার প্যাকেট, না পেয়ে, আজকে আপনি রাগ করে অন্য সুপারশপ থেকে কিনে নিলেন, ভাবতে পারেন যদি এরকম বাজে ইনভেন্টরি ম্যানেজমেন্ট কন্টিনিউ হতে থাকে, সেই সুপারশপের কত লোকসান হবে ? সুতরাং আপনার মতো আরো ১০০০ জনের Purchase Behavior যদি ঠিক মতো প্রেডিক্ট করার মতো একটি মেশিন লার্নিং এলগোরিদম তৈরী করা যায় লাভ দুটো - ১. আপনাকে আর খালি হাতে xyz ব্র্যান্ড এর পরোটার প্যাকেট না পেয়ে খালি হাতে ফিরে যেতে হবে না ২. কোম্পানিও বুঝতে পারবে কোন সময় কোন ব্র্যান্ড এর ৫০০ প্যাকেট পরোটার স্টক রাখতে হবে যাতে করে সবাইকে সার্ভিস দেওয়া যায়। কি মজা পাচ্ছেন ?

আজকে দেখাবো কিভাবে সেই মেশিন লার্নিং মডেল কাজ করে, তাও শুধুমাত্র প্রম্পটিং করে। হা জুলিয়াস এর সাহায্যেই।

সেটি দেখানোর জন্য আমি নিয়েছি [জুলিয়াস](https://julius.ai/?via=theorex) এর অনলাইন ফোরামের টপ ৪২ জনের ইউজার দের রিয়েল লাইফ ডাটা। চলুন একটি দেখে নেই ডাটাসেটটি

<figure><img src="https://2758751175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUXZ1zr75r8oAgphHVdux%2Fuploads%2FB9tD3g8wqBuM1o7rg3qH%2Fe92a6f75ff8e31208b4137da19a124fecd1737ee.png?alt=media&#x26;token=ec091f6a-b12e-4f79-8315-ab6b28ca5f4b" alt=""><figcaption></figcaption></figure>

**এই মেশিন লার্নিং মডেলটি যেই প্রব্লেমটি সমাধান করবে সেটি হচ্ছে :**

১. কারা এই ফোরামের রিটার্নিং ইউজার (টানা ৫ দিন ধরে যারা ইউজ করেছেন তাদেরকে রিটার্নিং ইউজার হিসেবে ধরা হয়েছে )

২. কোন কোন ইউজার এর activity এখানে কিরকম। যেখানে xyz ইউজার এর টোটাল activity  বলতে বুঝানো হয়েছে = ইউজার কতগুলো পোস্ট পড়েছে , কতগুলোর রিপ্লাই দিয়েছে , কতগুলো নতুন টপিক পোস্ট করেছে, কতগুলো টপিক সে দেখেছে (Total activity = No\_of\_Posts\_Read + Replies\_Posted + Topics\_Created (assuming higher values indicate higher activity) + topics\_viewed ) এই ফ্যাক্টরগুলোর উপর ভিত্তি করে ইউজারদের কে মার্কিং করা হয়েছে (high -medium -low ) ঠিক যেমনটা ফেসবুক করে

৩. সব শেষে একজন ইউজার এই ফোরামের সাথে থাকবেন কি না ,সেটিও বলে দিয়েছে মডেল

এবার দেখি আসি ডাটা হেডগুলো :

**Username:** Unique identifier for the user.

**Love\_react\_received:** Number of “love” reactions the user has received on their posts or comments.

**Love\_react\_given:** Number of “love” reactions the user has given to other users’ posts or comments.

**Topics\_Created:** Number of topics (discussions, threads) the user has created.

**Replies\_Posted:** Number of replies the user has posted to existing topics.

**Topics\_Viewed:** Number of topics the user has viewed (regardless of participation).

**No\_of\_Posts\_Read:** Number of posts the user has read (might include topics viewed and replies read).

**No\_of\_Days\_Visited:** Number of days the user has visited the website.

এইবার শুরু আমাদের এনালাইসিস&#x20;

**স্টেপ ১:**

প্রথমেই একটি লজিস্টিক রিগ্রেশন মডেল তৈরী করে নিয়েছি জুলিয়াস এর সাহায্যে। একুরেসি লেভেল প্রায় ৮৯%, খারাপ না। কাজ চলে যাবে

<figure><img src="https://2758751175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUXZ1zr75r8oAgphHVdux%2Fuploads%2FPt7ehEjApkkmCrLwMjdy%2F601764a1817c65e5d4c879de1ae9375a1d197b1e_2_555x500.png?alt=media&#x26;token=333cf873-b3ba-4cbb-8605-a7e91ff74f89" alt=""><figcaption></figcaption></figure>

মডেল যেহেতু তৈরী তাই মডেল এর সাহায্যে তৈরী করে নিলাম দুটো নতুন কলাম।

১. 1 = ইউজার থাকবে ২. ০ = ইউজার থাকবে না

সেটা উপরে ভিত্তি করে মডেল বলেও দিলো YES এবং no এর মাদ্ধমে, একটু দেখে নেই (হাইলাইট করা অংশ)

<figure><img src="https://2758751175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUXZ1zr75r8oAgphHVdux%2Fuploads%2FPymqxztmUQXQS914W1Gt%2Fe5a738ce355cfb5e053a3aaee850ebedd2190285.png?alt=media&#x26;token=134f895d-e092-48fd-b40d-6c295adb2522" alt=""><figcaption></figcaption></figure>

**স্টেপ ২ :**

এই স্টেপে আমি জুলিয়াস কে বললাম একটি এক্টিভিটি Table তৈরী করতে যা কি না আমাকে একজন ইউজার এই Activity Scoring তৈরী করে দেখাবে, পাশাপাশি সেই স্কোরিং এর উপর ভিত্তি করে তার ইউজার স্ট্যাটাস high, medium নাকি low সেটিও বলে দিবে। যেই ফিচারগুলোর উপরে এই টেবিলটি তৈরী করে হয়েছে সেটি হচ্ছে : Total activity: No\_of\_Posts\_Read and Replies\_Posted and Topics\_Created (assuming higher values indicate higher activity) and topics\_viewed

বোঝাই যাচ্ছে জুলিয়াস আমাকে একটি weighted score তৈরী করে দিয়েছি এবং সেটির উপরে ভিত্তি করে ইউজার স্ট্যাটাস প্রোফাইলিং ও তৈরী করে ফেলেছে।

সামারিটা একটু দেখে নেই :

#### Distribution of the ‘Activity\_Level’:

* Low: 14 users
* Medium: 13 users
* High: 14 users\
  This categorization helps in understanding the activity patterns of users based on their interactions on the platform.

<figure><img src="https://2758751175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUXZ1zr75r8oAgphHVdux%2Fuploads%2FJ4GHNTrrCjg8nUeycMHz%2F104a495e7007ec3c06d0cd64cd833e9d416048a7.png?alt=media&#x26;token=9e926428-9970-41f5-b720-ce3723c5a1ac" alt=""><figcaption></figcaption></figure>

**স্টেপ ৩ :**

খুব সঙ্গত ভাবেই এখন আমি ইউজারদের high to low অর্ডার এ সাজিয়ে নিবো। যাতে করে আমি দেখলেই বুঝতে পারি ফোরামের অবস্থা কোথায় দাঁড়িয়ে আছে ?

<figure><img src="https://2758751175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUXZ1zr75r8oAgphHVdux%2Fuploads%2FrpKMJDL8DyDhrKTTHRSD%2F0f81852bd6fa7ddaddd5df70598d362e81fcb1c0_2_690x376.png?alt=media&#x26;token=2189d289-a2fa-482c-9f5c-cbbfdf93e0e0" alt=""><figcaption></figcaption></figure>

**স্টেপ ৪ :**&#x20;

এবার ফাইনালি করে ফেলবো churn prediction (একজন ইউজার এর ফোরামে থাকা বা না থাকার একটি সম্ভাব্যতা )

এখানে Yes” indicates that the model predicts this user is likely to churn, meaning they are at a higher risk of stopping their use of the forum based on the features analyzed (such as ‘Activity\_Score’ and ‘No\_of\_Days\_Visited’)

“No” suggests that the model predicts this user is unlikely to churn, meaning they are expected to continue using the forum.

\*\*\* Red points represent users predicted to churn.\*\*&#x20;

\*\*\* Green points represent users predicted not to churn.\*\*

<figure><img src="https://2758751175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUXZ1zr75r8oAgphHVdux%2Fuploads%2FmQGRUETJIWewldiaHTug%2F5fdb762a7fee23599310f216bc4aab09d5445378_2_690x476.png?alt=media&#x26;token=a78f01c2-5c4c-4955-9b7f-6097e6736b3b" alt=""><figcaption></figcaption></figure>

দেখা যাচ্ছে একটিভিটি স্কোর যাদের বেশি এবং যারা বেশি সময় ফোরামে দিয়েছে তাদের মধ্যে ১৭৫ এর স্কোরিং এর আসে পাশে যারা আছেন তাদের এই ফোরাম দীর্ঘমেয়াদে ইউজ করার সম্ভাবনা বেশি।

**আবার একজন ইউজার এখানে ৫০-৬০ এর মাঝে স্ক্রিন করেও higher number of days visited এ এগিয়ে থাকার কারণে মডেল তাকে একজন ভালো ইউজার হিসেবে identify করেছে। এর প্রমান হচ্ছে নিচের গ্রাফটি।**&#x20;

<figure><img src="https://2758751175-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUXZ1zr75r8oAgphHVdux%2Fuploads%2FGN7Ifh8No964r1VIcytP%2Fe0deb309823f5c4663e34412cbac686fbd33d05c_2_690x476.png?alt=media&#x26;token=490b1226-c1ec-4120-94a2-be3caa708d7b" alt=""><figcaption></figcaption></figure>

পোস্ট টি পুরাটা পাবেন :&#x20;

{% embed url="<https://community.julius.ai/t/user-engagement-and-predicting-churn-of-julius-forum/931>" %}

যারা আমার লেখা পড়ে একটু হলেও আগ্রহ পেয়েছেন তারা ক্যাগল থেকে থেকে churn prediction এর ডাটাসেট নামিয়ে প্রাকটিস শুরু করে দিতে পারেন। মজা পাবেন !
