پیدا کردن مشتری‌های خوب

تغییرات پروژه از تاریخ 1394/04/10 تا حالا

مشتری خوب و یا وفادار کیست؟  شاید با خود بگویید چنین مشتری ای اصلا پیدا نمی شود.
اگر می خواهید بدانید مشتری وفادار کیست باید دو شاخص را در او بررسی نمایید:
1. برای شرکت و مجموعه شما نزد دیگران تبلیغ و تعریف نماید.
2. اگر شرکت دیگری با قیمتی کمتر و کیفیتی بهتر وارد عرصه شد باز هم با شما کار کند و به راحتی شما را ترک نکند.
ﻫﺪف از اﻳﻦ ﻣﻘﺎﻟﻪ، پیش‌بینی و پیدا کردن مشتری‌های یک فروشگاه،جهت باز گشت و خرید مجدد است.


# مقدمه
اکثر کمپانی های  تجاری برای جذب مشتریان  خود، برای آن ها تخفیف خرید محصول در نظر میگیرند. مشتریان با ارزش کسانی هستند که پس از خرید اول خود، دوباره برای خرید بر می گردند. با توجه به سابقه خرید، میتوان پیش بینی کرد که کدام مشتری وفادار است و کدام یک به دنبال خرید یک محصول جدید هستند. با این حال، شناسایی خریدارانی که قبل از خرید اولیه به عنوان خریدار وفادار در نظر گرفته شوند یک کار چالش بر انگیز است.!
![توضیح تصویر](https://boute.s3.amazonaws.com/155-shoppers_lores.png)
 بنابراین باید پیش بینی کرد که کدام خریدار به احتمال زیاد خرید خود را تکرار خواهد کرد. برای کمک به توسعه الگوریتم، سطح سبد، سابقه پیشنهاد خرید برای تعداد زیادی از خریدارانی که به عنوان هدف می باشند، در نظر گرفته شده است.


# کارهای مرتبط
**- راهکار های پیش بینی  خریداران وفادار:**

+ به منظور شناسایی و پیش بینی اینکه کدام مشتریان تبدیل به خریداران وفادار خواهند شد، مسابقه ای ترتیب  داده شده است که در زیر به شرح آن می پردازیم:
علامت های تجاری مصرف کنندگان، اغلب به منظور معرفی محصولاتشان پیشنهادات تخفیفی برای جذب مشتری های جدید ارائه می دهند.
با ارزش ترین مصرف کنندگان کسانی هستند که بعد از این خرید ابتدایی که همراه با تخفیف بوده است، بازگشتی دوباره داشته باشند.
با داشتن تاریخچه ی کافی از خرید و فروش محصولات، این امکان پیش بینی وجود دارد که خریداران، زمانی که پیشنهادی ارائه می شود، آیتم جدید را خریداری کنند. به هرحال، شناسایی خریداران، قبل از خرید اولیه، یک کار چالش برانگیز است. 
چالش کسب ارزش شرکت کنندگان خریدار، بدین منظور است که خریداران به اصطلاح وفادار را پیش بینی کند.
برای کمک به توسعه ی این چالش، الگوریتمی در آینده ارائه خواهد شد که برای یک مجموعه ی بزرگ از خریداران، در بازه ی زمانی مشخصی، سطح سبد خرید افراد با توجه به انگیزه و رفتار آن خریدار در نظر گرفته شده است. [1](https://www.kaggle.com/c/acquire-valued-shoppers-challenge)
در ادامه ی بحث مثالی خواهیم داشت برای آشنایی بیشتر با روش Kaggle:
 +   یکی از مسابقات Kaggle را مورد بررسی قرار دادیم که  به معنی استفاده از فرصت دیگری  به نام Vowpal Wabbit است. 
در این مسابقه سعی شده است پیرامون خصوصیات مهندسی آخرین مسابقه ی Kaggle  و همچنین چگونگی به دست آوردن امتیازهای 3 نفر برتر از رهبران عمومی که معادل است با (~ 0.59347 AUC) بحث شود.
   + شرح کوتاه رقابت
  همانطور که می دانیم  این مسابقه جهت پیش بینی تکرار خرید توسط مشتریان  است. که در این مقوله  حدود 150.000 خریدار مورد مطالعه قرار گرفتند.
   + اکتشاف داده
    امکان دانلود تمام داده ها در این قسمت  وجود دارد. [2](http://www.kaggle.com/c/acquire-valued-shoppers-challenge/data) 
    + تقلیل داده ها
    +  ویژگی مهندسی 
    + توضیح کامل و زبان اصلی این مثال را می توانید در لینک مقابل دنبال کنید.  [3](http://mlwave.com/predicting-repeat-buyers-vowpal-wabbit/)
 
     
# آزمایش ها
سوال اصلی در این مسئله شناسایی مشتریانی است که به احتمال زیاد دوباره در آینده به خرید خواهند آمد. این اطلاعات به ما کمک خواهد کرد که هر کمپانی مشتریان هدف خود را شناسایی کند. احتمال اینکه یک مشتری دوباره خرید کند به دو چیز بستگی دارد:
1-	آیا مشتری خرید اولش است؟
2-	دفعات تکرار مشتری چقدر بوده است؟
در این گزارش فنی، یک روش برای این پاسخ به این سوال با استفاده از تجزیه و تحلیل بیزی ارائه شده است.  درواقع این روش رگرسیون برای تخمین زدن وفاداری مشتری است. با پاسخ دادن به این سوالات میتوان در یک بازه زمانی مشخص مثلا 6ماه، پیش بینی کرد که این مشتری در آینده وفادار خواهد بود یا خیر؟
2-1- مدل سلسله مراتبی بیزی
در این مرحله، یکی مدل سلسله مراتبی بیزی برای پارامترهای زیر ساخته میشود. توزیع دوره ای زمانی است که سلسله مراتب داده ها مشخص شود، بنابراین داریم:

تعداد معاملات(خرید، تراکنش) انجام شد برابر است با
$ Jth $
که به دنبال یک فرآیند پواسون با نرخ زیر است:
$ jʎ $
و احتمال از دست رفتن پس از هر خرید به شکل زیر است:
$ Pj $

![توضیح تصویر](https://boute.s3.amazonaws.com/155-B.jpg)
اطلاعات مورد نیاز استفاده شده برای نمونه برداری از توزیع شرطی در زنجیره MCMC برای یک مشتری در معامله اول برابر است با T0، آخرین معامله برابر  Tx است و تعداد معاملات انجام شده برابر x است. همه متغیرها به آسانی از تاریخ های معامله مشتریان بدست می آید. این مدل بدون در نظر گرفتن متغیرهای جمعیت شناختی/ شخصی مانند ایمیل، تلفن همراه و غیره شکل گرفته است و از این رو به کیفیت داده ها و دیتاست بسیار وابسته باشد.  برای بدست آوردن مقادیر jʎ و Pj از الگوریتم MCMC توزیع میانه استفاده میشود. سپس احتمال اینکه  مشتری j در دوره بعدی k، خرید داشته باشد برابر است با:
$ (1- Pj)(1-exp{-k jʎ}) $
در حالی که مدل بیز در تشخیص صحیح مشتریانی که به احتمال زیاد دوباره خرید خواهند کرد موثر خواهد بود، اما این مدل برای امتیاز دهی به میلیون ها مشتری موثرنخواهد بود. برای مثال کمپانی ای مانند HP که برای مقابله با میلیون ها مشتری، نیاز به یک مدلی بزرگتر خواهند داشت، این مدل ارائه شده کارآمد نخواهد بود.
2-2- تقریب بر اساس رگرسیون
پیچیدگی محاسباتی مدل بیز بدین معناست که حتی اگر نتایج مدل سازی امیدوارکننده باشد، پیاده سازی آن سخت و دشوار است. باید توجه داشت که مدل ارائه شده تنها برای هر مشتری 3 متغییر در نظر میگیرد، x،Tx و T1.علاوه بر این، اگر در مدل MCMC دو الگوریتمی بوجود بیاید که به دو مشتری نمره یکسانی بدهند، در مدل رگرسیون این اتفاق نخواهد افتاد و پارامترها با استفاده از تعاملات غیرخطی به جواب قاطعی خواهد رسید.
در این گزارش فنی، دو مدل رگرسیون چندجمله ای برای بدست آوردن مقادیر jʎ و Pj ساخته شده است. برای انجام این کار ما در ابتدا با استفاده از مدل بیز، مقادیر jʎ و Pj را برای 3میلیون مشتری بدست می آوریم. سپس با استفاده از لگاریتم برای برآورد پیش بینی دو مدل رگرسیون و برخی متغییرهای دیگر استفاده میکنیم. هنگامی که مقادیر jʎ و Pjبرای هر فرد از مدل رگرسیون بدست آمد، برای بدست آوردن احتمال خرید هر مشتری از مدت زمان K بعدی استفاده میشود.

** تشریح مدل:**
1-	در ابتدا پایگاه داده مشتریان را در برنامه بارگذاری میکنیم
2-	اسکریپتی نوشته میشود که متناسب با درخواست خروجی را به ما بدهد. مانند فروشندگانی که بالای 65 سال سن دارند و بیش از 1000دلار خرید کرده اند.
3-	گروه انتخاب شده از مشتریان با استفاده از مدل پیش بینی نمره دریافت میکند.
4-	زمانی که نمره دهی به پایان رسید، مشتریان بر اساس نمره دریافت شده مرتب می شوند. حال 25درصد مشتریانی که نمره بالایی دارند انتخاب میشوند.
5-	حال که 25درصد مشتریان انتخاب شده اند، اطلاعات مورد نیاز آن ها از پایگاه داده استخراج میشود.
6-	در نهایت خروجی به نمایش در می آید.
![توضیح تصویر](https://boute.s3.amazonaws.com/155-Model.jpg)

** لینک کد پیاده سازی به همراه دیتا :**
[پیوند](https://gist.github.com/AtiehG/a52bb848e6f8bced111b) ( کد به زبان پایتون)
[پیوند](http://uplod.ir/0lowmbivdwdg/AI.rar.htm) ( به دلیل مقدار زیادی دیتا و به مشکل خوردن در گیتهاب، دیتا ها در این لینک نیز قرار گرفتند.)
رمز فایل: moshtarikhoob







# مراجع
+[1] Peter.S.Fader , Bruce Hardie , Ka Lok Lee. “Counting your customers” the Easy Way: An alternative to thePareto/NBD model. Marketing Science. Vol. 24:No. 2, Spring 2007, pp. 275-284.
+[2] Dong Xiang. Fitting Generalized Additive Models with GAM procedure. SAS Institute Inc.
+[3] Jayanta Kumar Pal, Abhisek Saha, Subhasish Misra. Customer repeat purchase modeling- A Bayesian HierarchicalFramework. HP Labs technical report. No 85, July 2010.