دیتا اینسایتز

در مورد علم داده، داده کاوی، هوشمندی کسب و کار(BI) و سایر مطالب مرتبط

دیتا اینسایتز

در مورد علم داده، داده کاوی، هوشمندی کسب و کار(BI) و سایر مطالب مرتبط

چطور برای مصاحبه در یک موقعیت شغلی به عنوان مهندس ماشین لرنینگ یا ML engineer آماده بشوم؟

مهندس ماشین لرنینگ، جزو شغلهایی ست که اخیرا  در تمام  دنیا  و در ایران خیلی مورد نیاز است. افراد زیادی  هم دنبال این هستند که با یادگیری اصول و مسائل بنیادی آن، کار خودشان را در این زمینه شروع کنند. پس هم موقعیت های کاری خوبی برای این زمینه کاری وجود دارد و هم افراد زیادی دنبال کسب این موقعیت ها هستند. ( بنابراین هم بین کارفرماها برای جذب نیروهای خوب و هم بین کارجو ها برای به دست آوردن موقعیت های بهتر  رقابت خوبی وجود دارد!)

جالب این است که با وجود متقاضیان زیاد، متاسفانه در این رشته با کمبود نیروی متخصص و آماده به کار مواجه هستیم. اما چرا؟ نظر شخصی من با توجه به مصاحبه هایی که با کارجوهای این زمینه داشته ام  این است که خیلی از افرادی که در بازار کار دنبال پوزیشن های کاری ماشین لرنینگ هستند، تنها آموزش یا تجربه ای که در این زمینه دارند گذراندن چند دوره آنلاین است. دوره های آنلاین از جمله دوره های ماشین لرنینگ در کورسرا و یودمی برای یادگرفتن و آشنایی با این رشته و مباحث آن، خیلی خوب هستند و افراد زیادی خود را مدیون آنها می دانند  اما نکته ای که خیلی از کارجوها نادیده می گیرند این است که  این دوره ها، مثل تمام دوره های آموزشی، برای تسهیل یادگیری و علاقه مند کردن افراد، ساده سازی شده اند.  هدف این ساده سازی ها هم این است که سختی ها و پیچیدگی های اولیه موضوع و ابزارها دانشجو هایشان را دلسرد نکنند. اما متاسفانه، خیلی پیش می اید که  کسانی که تجربه شان در ماشین لرنینگ به این دوره ها محدود می شود، تصور درستی از شرایط واقعی کار با داده ها ندارند و اغلب همان اطلاعاتی که از این دوره ها کسب کرده اند را برای شروع به کار کافی می دانند. بنابراین این پست را نوشتم تا تصور دقیق تری از مهارت ها و پیش نیازهای لازم برای شروع به کار در این زمینه به  این افراد بدهم.


مهارت هایی که به نظر من برای کار در این رشته لازم دارید، اینها هستند :


 مهارت های عمومی
 
دیسپلین داشتن، شناختن اهداف تسک هایی که به شما محول میشه و انجام تسک در راستای آن هدف ( goal oriented بودن)، اهمیت دادن و شناختن ارزشهایی که هر کدوم از تسک های شما برای کسب و کار فراهم می کند و اقدام بر اساس آنها ( business value کارها را حتما در نظر بگیرید.) . همزمان آرمانگرا و عملگرا باشید. بدانید که در هر شغلی ایجاد رابطه خوب و درست با همکاران تان در دراز مدت به اندازه درست انجام دادن تسک هایتان اهمیت دارد. علاوه بر این در موقعیت های شغلی که با داده ها مربوطند، مهارت های ارتباطی اهمیت ویژه ای دارند چون شما برای شناخت داده ها و فرآیندها معمولا لازم داریدکه با همکاران تان در بخش های مختلف شرکت صحبت کنید و ..
اینها را چطوری در خودمون تقویت کنیم؟ به آدمهای موفق نگاه کنیم، عادت های خوب و بدمان را بشناسیم و مطالعه کنیم، هر از چندی خودمون را ارزیابی کنیم و ...
یکی از دوستان سایت motamem.org را در بخش نظرات معرفی کردند. درسته. من خودم از بعضی مطالب این سایت استفاده کرده ام (ولی اگر باز  اگر منبع مناسبی برای یادگیری و آشنایی با این مهارتها دارید، خوشحال می شوم که به من هم معرفی کنیدشان تا لینک آنها را اینجا با بقیه به اشتراک بگذارم.)

دانستن اصول و تعاریف  اولیه و  شناختن عمیق  مدلها

 
اصول و تعاریف اولیه، چیزهایی هستند که ندانستن آنها موقعیت شما را توی مصاحبه خیلی تضعیف می کنه. از چیزهای ساده ای مثل تفاوت یادگیری با و بدون ناظر  ،تفاوت test set  و validation set، تعریف و تفاوت داده نویز و داده های پرت (outlier)
شناختن مدلهای  معروف و پرکاربرد و  دانستن اینکه هر کدوم از مدلها چه ویژگی هایی دارد؟ کجا و در برخورد با چه مسائلی باید از هر مدل استفاده کرد؟ سرعت آموزش هر یک از مدلها و  سرعت پردازش هر مدل از نکاتی هستند که باید بدانید.
به احتمال زیاد دوره ماشین لرنینگ  Andrew Ng در کورسرا را دیده اید، من اینجا دوباره این دوره را توصیه می کنم. اما همانطور که گفتم نکته مهم دیدن دوره ها نیست، بلکه استفاده از آنها در پروژه های واقعی ست.


 آمار و احتمالات

ریاضیات در ماشین لرنینگ خیلی مهم است. جبر خطی و  آمار و احتمالات بلد باشید تا مدلهای ماشین لرنینگ را درک کنید. خصوصا  آمار و احتمالات بلد باشید.   وقتی با داده ها کار می کنید، ناچار باید به زبان آمار و احتمالات حرف بزنید. گذشته از این اغلب مدلهای ماشین لرنینگ آماری هستند. برای ارزیابی مدلها و همین طور پاکسازی داده ها و انتخاب فیچرها باید با مفاهیم ساده آماری مثل واریانس، میانگین، میانه و مفاهیم پیچیده تر مثل  توزیع های آماری، فاصله اطمینان (Confidence Interval) و .. آشنا باشید.

اگر می خواهید جبرخطی و آمار و احتمال را با هدف استفاده از آنها در ماشین لرنینگ یاد بگیرید  یا یادآوری کنید، دوره جبر خطی برای ML امپریال کالج لندن در کورسرا و  و این پلی لیست را در کانال آکادمی خان در یوتوب را توصیه می کنم.


 روشهای ارزیابی مدلها و مسائل مختلف/ ab test / test vs validation

حتما موقع مطالعه مدلها و روش های ماشین لرنینیگ با روشهای ارزیابی این مدلها هم آشنا شده اید و می دانید فرق validation set  و test set چیست و  accuracy، ق precision و recall چی هستند. اما خیلی از مدلها را نمی توان با روشهای معمول تست کرد. مثلا در پیاده سازی سیستم های پیشنهاد دهنده  از  A/B Testing برای مقایسه دو مدل مختلف استفاده می شود. 


روشها و ابزارهای پاکسازی

کمتر پروژه ای وجود دارد که داده هایی که در اختیار شما قرار می گیرد نیاز به آماده سازی نداشته باشد , در این موقعیت شغلی بیش از 80 درصد زمان شما  صرف پاکسازی و آماده سازی داده ها خواهد شد.  بنابر این خیلی مهم است که انواع داده ها را بشناسید. روشها و ابزارهای پاکسازی  مصور سازی آنها را بشناسید  و بدانید با  با داده های با شرایط خاص مثلا  ابعاد زیاد یا کلاسهای نامتعادل چطور باید کار کنید. سعی کنید برای آمادگی بیشتر، مساله هایی با انواع داده مختلف را در سایت هایی مثل kaggle ببینید و حل کنید. و اگر جایگاه شغلی ای که قرار است در آن مشغول شوید یا به آن علاقه مند هستید روی داده هایی از نوع متن، تصویر و یا سیگنالهای صوتی متمرکز است  شناختن روشهای پاکسازی خاص این نوع داده ها و چالشهایی که ممکن است با آن مواجه شوید حتما برای شما مزیت بزرگی خواهد بود.

یک نتیجه مستقیم پاراگراف بالا این است که انتظار نداشته باشید فقط مشغول کارهای خفن و آموزش مدلهای جدید روی داده ها باشید. در کار با داده ها باید صبور باشید چرا که اغلب مدلها بدون پاکسازی و آماده سازی داده ها نتایج مورد نظر شما را تولید نخواهند کرد!


بلد بودن یک زبان برنامه نویسی برای کار با داده ها

باید یک زبان برنامه نویسی را برای کار با داده ها خیلی خوب بلد باشیدبرای مثال پایتون. توجه کنید که برای اینکه در رزومه تان ادعا کنید پایتون بلد هستید لازم است  اصول آن را خوب بشناسید و با آن کار کرده باشید. نوت بوک هایی که در دوره های درسی دیده اید و یا حتی کرنرهایی که در kaggle دیده اید برای اینکه ادعا کنید پایتون بلد هستید کافی نیست. این را برای این می گویم که گاها کارجویانی را دیده ام که  در روزمه خود می نویسند تسلط بر پایتون اما عملا خودشان با آن کد ننوشته اند! علاوه بر اصول هر زبان لازم است  تمیز کد نوشتن و  تا حد امکان بهینه کد نوشتن با آن را هم بلد باشید و دنبال یادگرفتن best practice  های آن زبان باشید. با  ابزارهای version control  مثل git،  ابزارهای deploy و نگهداری از محصول آشنا باشید. و از آنجایی که قرار است با داده ها کار کنید باید  کتابخانه های مربوط به داده و ماشین لرنینگ را خوب بشناسید. مثلا اگر به پایتون کد می زندید باید pandasو numpy، Scipy، SKlearn  و .. را بشناسید،

 اگر پایتون کد می زنید، برای استاندارد کد زدن مستندات PEP  را دنبال کنید. برای اینکه بدانید چطور از virtual env یا docker در محیط پروداکشن استفاده می شود لینکهای زیر را ببینید :

https://towardsdatascience.com/managing-project-specific-environments-with-conda-b8b50aa8be0e

https://towardsdatascience.com/managing-project-specific-environments-with-conda-406365a539ab

https://medium.com/swlh/stop-using-anaconda-for-your-data-science-projects-1fc29821c6f6


برای یادگرفتن پایتون هم سایت ها و کتابهای زیر را ببینید : 

https://realpython.com/


و برای یادگرفتن git هم https://www.atlassian.com/git/tutorials را ببنید 

فرایند انجام پروژه های ماشین لرنینگ 

پروژه های ماشین لرنینگ هم مثل هر پروژه نرم افزاری دیگر در یک فرآیند انجام می شوند. و حتما شامل مراحلی مثل شناخت مساله، شناخت و درک داده ها و آماده سازی داده ها ، ساختن مدل و ارزیابی و آماده کردن آن برای استقرار خواهد بود. مهم است که این مراحل را بشناسید و پروژه ای که انجام می دهید، هر چقدر هم که کوچک باشد، تمام مراحل را طی کنید.

Image for post



دنبال کردن سایت ها و آدمهای معروف این زمینه

 سایت ها و آدمهای معروف این زمینه را دنبال کنید. kaggle  و towardsdatascience , ... . خوشبختانه اکثر شرکتهای بزرگ و معروف وبلاگ فنی دارند و چالشهایی که با آنها مواجه می شوند و راه حلهایی که برای این چالشها استفاده می کنند را در وبلاگ شان به اشتراک می گذارند. می توانید یک لیست از وبلاگها و سایت هایی که من چک می کنم را در قسمت پیوندهای وبلاگ ببینید. 



 sql

شاید به اندازه کسانی که کارشان تحلیل دیتا ست نیاز به sql نداشته باشید. اما داده های مورد نیاز شما همیشه در یک فایل csv تمیز و آماده در اختیارتان قرار داده نمی شود و قطعا در حد خواندن داده ها و شاید حتی بررسی اولیه داده ها لازم است که بتوانید از دیتابیس های رابطه ای و حتی شاید NoSQL ها استفاده کنید. بنابراین آشنایی با زبان SQL از ملزومات کارتان خواهد بود. من حتی پا را فراتر می گذارم و معتقدم آشنایی با NoSQL ها هم برای شما لازم است. نه اینکه با تک تک دیتابیس های NoSQL کار کرده باشید. اما در مورد اینکه دیتابیس های NoSQL چه هستند، فلسفه به وجود آمدن شان چیست و چه انواعی دارند حتما برای شما مفید خواهد بود. 


بیگ دیتا 

آشنایی با فریم ورک های بیگ دیتا مثل Hadoop  و Spark به خصوص در شرکتهایی که با حجم زیاد داده کار می کنند مزیت به حساب می آید. احتمالا  از یک نیروی تازه کار انتظار تسلط بر این فریم ورک ها نمی رود. به خصوص که در ایران دسترسی به سرویس های ابری مثل Microsoft Asure ، AWS و ... ممکن نیست. اما آشنایی با کلیات می تواند مزیت به حساب بیاید.


برای مصاحبه آماده بشوید

با جستجوی عبارتی مثل  "ml engineer interview questions" در گوگل می توانید با نوع سوالاتی که ممکن است در یک جلسه مصاحبه مواجه بشوید آشنا بشود. برای سوالات ساده مثل تعریف مفاهیم و یا توضیح نحوه عملکرد مدلهای مختلف تا سوالهای پیچیده آماده باشید. سخت ترین سوالات شاید آنهایی باشند که یک مساله از دنیای واقعی را مطرح می کنند و از شما می خواهند برای آن یک راه حل پیشنهاد دهید و بعد از شما می خواهند که توضیح دهید چرا این روش را برای پاکسازی داده انتخاب کردید یا چرا فلان مدل را استفاده کردید و نه بهمان مدل را و ... 


 در آخر چند تا نکته هست که لازمه به آنها اشاره کنم:

 1 -  از تعداد مهارتها و حجم چیزهایی که باید یاد بگیرید نترسید. لازم نیست برای شروع به کار در همه آنها عالی باشید.

 2 -  خیلی از مهارتهایی را که بالا لیست کردم را لازم است که حین کار و تجربه به دست بیاورید. اما آگاه بودن از آنها حتما به شما درحین مصاحبه و  شروع کار کمک خواهد کرد.

 3- هر روز خودتان را در حال آماده شدن برای مصاحبه بدانید و سعی کنید کارتان را با کیفیت انجام بدید. اگر مشغول به کار هستید یا در حین تجربه و انجام پروژه های درسی یا تمرینی، بدانید که در هر مصاحبه کاری، زمان زیادی در حال توضیح و تشریح کارهای فعلی تان هستید و کار فعلی شما ملاک ارزیابی شما خواهد بود.



مصاحبه تکنیکال ساختگی

این سایت یک سری ویدیوی ساختگی از مصاحبه تکنیکال و لایو کدینگ مصاحبه‌های شرکت های عموما مشهور، مثل گوگل و آمازون داره.
دیدن فرآیند مصاحبه و نتایج ارزیابی، سوالهایی که پرسیده می‌شه و نحوه پرسیدن سوالها هم برای کسانی که قراره مصاحبه بشوند و هم برای کسانی که مصاحبه می کنند جالبه.
https://interviewing.io/recordings/

سنجه های ارزیابی کسب و کار


داده ها هیچ وقت دروغ نمی گویند، البته اگر بتوانیم حرف آنها را درست بفهمیم. اگر داده ها را درست جمع آوری و تفسیر کنیم، راه گشا و یار ما در تصمیم گیری ها خواهند بود. داده هایی که از کسب و کار خود جمع آوری می کنید آینه بی واسطه تاثیر تصمیمات و اقدامات شما در محصول تان و در بازار هستند و می توانند پاسخ بسیاری از سوالهای شما را بدهند :  آیا محصول تان در جذب و نگهداری کاربران موفق بوده؟ آیا فیچر جدیدی که ارائه داده اید مطلوب کاربران بوده؟ چطور با کمترین هزینه کاربرانی را که شما را فراموش کرده اند دوباره جذب کنید؟ آیا رقیب تان توانسته با ارائه فلان فیچر جدید بخشی از کاربران شما را جذب کند؟ کدام یک از کانال های تبلیغاتی یا کمپین ها توانسته مشتریان سودآورتری برای کسب و کارتان جذب کند؟ آیا کسب و کارتان در مسیر رشد قرار دارد؟

در این پست بعضی از سنجه هایی که می توانید با محاسبه آنها وضعیت کسب و کار خود را ارزیابی کنید با هم مرور می کنیم. (البته سنجه های دیگری هم وجود دارند مثل سهم شما از بازار و رشد مالی که ما اینجا آنها را بررسی نکردیم و شاید در آینده آن را به همین پست اضافه کنم.)


1-  سنجه های ارزیابی جذب کاربر


تلاشهای مختلفی که در راستای جذب کاربر انجام داده اید چقدر موفق بوده و کدام روش جذب کاربر کم هزینه تر بوده؟

1-1- تعداد دانلودها - new Downloads

اگر یک اپلیکیشن موبایل داشته باشد، طبعا اولین معیار ارزیابی موفقیت شما در جذب کاربران، تعداد دفعاتی ست که اپلیکیشن شما دانلود شده است.

1-2- کانال یا مرجع دانلودها - download attribution

چه تعداد از دانلودهایی که انجام شده، در اثر تبلیغ در فلان سایت بوده؟ چه تعداد در اثر فلان کمپین بازاریابی بوده که اجرا کرده اید؟ و هزینه هر دانلود یا نصب برای هر از این کانالها چقدر بوده؟

2- سنجه های فعال سازی کاربر

2-1- نرخ فعال سازی - Activation Rate

تعداد دانلود به تنهایی نماینده خوبی برای میزان موفقیت شما نیست، چه بسا کاربرانی که اپلیکیشن شما را دانلود می کنند اما نصب و استفاده نمی کنند. نرخ فعال سازی درصدی از کاربران است که پس از دانلود برنامه برنامه را باز کرده و از آن استفاده کرده اند. به عبارت دیگر :

Activation rate = 100  × Number of Activations / Number of Downloads



در بسیاری از اپلیکیشن های موبایل، قبل از ثبت نام می توان از برخی از فیچرها استفاده کرده. بنابراین در کنار نرخ فعال سازی، نرخ ثبت نام به دانلود را هم می توان محاسبه کرد.

Registration rate = 100  × Number of Registered Users/ Number of Downloads


3-  سنجه های تعامل کاربران - user engagement

تعامل کاربر با سرویس یا سیستم شما، وقتی اتفاق می افتد که کاربر از سرویس شما ارزشی کسب کند یا سرویس شما نیاز او را مرتفع کند. انگیجمنت کاربران از طریق اکشن ها و تعامل های اصلی کاربر با سرویس شما اندازه گیری می شود و کاملا به سرویس شما وابسته است. مثلا اگر سرویس شما یک فروشگاه اینترنتی است، بازدید کاربران از کالاهای مختلف، جستجوی کالا و در نهایت خرید، اکشن های تعاملی کاربر با سرویس شماست. و قطعا مطلوب شما افزایش تعداد تعاملات کاربر با سرویس تان خواهد یود. چند شاخص متفاوت برای اندازه گیری انگیجمنت کاربران وجود دارد از جمله


3-1- تعداد کاربران فعال روزانه یا DAU

تعداد کاربران فعال در هر روز. تعریف کاربر فعال بر اساس سرویس ارائه شده توسط شما ممکن است تغییر کند.


3-2-تعداد کاربران فعال ماهانه یا MAU

تعداد کاربران فعال در هر ماه. و همانطور که گفته شد تعریف کاربر فعال بر اساس سرویس ارائه شده توسط شما ممکن است تغییر کند.


3-3- چسبندگی یا stickiness

DAU و MAU  معیارهای کاملی برای ارزیابی تعامل کاربران شما با سیستم نیستند. اما نسبت این دو یعنی DAU/MAU شاخص دیگری می سازد به نام چسبندگی که می تواند میزان تعامل کاربر با سرویس شما را بهتر ارزیابی کند. این شاخص در واقع نشان می دهد چند درصد از کاربران شما مکررا از سرویس استفاده کرده اند. مثلا فرضا اگر این مقدار 1 باشد، به این معناست که تمام کاربران شما  هر روز از سرویس شما استفاده کرده اند. یا اگر stickiness سرویس شما 0.5 باشد به این معناست که به طور متوسط کاربران شما 15 روز از 30 روز آن ماه به اپلیکیشن شما سر زده اند.


3-4-  ریتنشن روزانه، هفتگی و ماهانه یا  D1, D7, D30 User Retention

در هر لحظه از زمان، درصدی از کاربران که از زمان عضویت شان یا نصب سرویس شما به ترتیب 1، 7 و یا 30 روز می گذرد.
این اطلاعات را می توان حتی در یک نمودار نمایش داد. با این نمودار retention curve  گفته می شود که نشان می دهد چند درصد از کاربران 1 روز پیش عضو سیستم شده اند، چند درصد 2 روز و …

برای اطلاعات بیشتر در مورد تعامل کاربر و سنجه های آن این پست را ببینید.


https://blog.popcornmetrics.com/5-user-engagement-metrics-for-growth/



4- سنجه های تبدیل کاربر - User conversion metrics

درصدی از کاربران که اکشن مورد نظر شما را انجام می دهند.


Conversion rate = Number of Users who performed an Action / Number of users who could have taken the Action


مثلا درصدی از کاربران که با انجام خرید، عملا مشتری سرویس شما می شوند:

نرخ تبدیل کاربر به مشتری :


Conversion rate = Number of Users who performed a purchase  / Number of users


با محاسبه نرخ تبدیل برای کانال های مختلف جذب کاربر و یا کمپین های مختلف، می توان موفقیت آن کمپین را محاسبه کرد. 


5- سنجه های حفظ مشتری

بر اساس این مقاله هاروارد بیزنس ریویو، هزینه جذب مشتری جدید 5 تا 25 برابر هزینه حفظ مشتری فعلی است. و اگر بتوانید نرخ حفظ کاربران را فقط 5 درصد افزایش بدهید سوددهی شما بین 25 تا 95 درصد افزایش خواهد داشت. پس ارزیابی این سنجه و کوشش در بهبود آن می تواند نقش مهمی در سوددهی کسب و کار شما داشته باشد.
بر اساس این مقاله از اندرو چن، هر اپلیکیشن موبایل به طور متوسط 77 درصد از کاربران فعال روزانه ش را در یک بازه 3 روزه از دست می دهد. ( کاربر در این مقاله کسی است که از سرویس یا اپلیکیشن شما استفاده می کند. مشتری کاربری است که از شما خرید هم می کند. هدف هر اپلیکیشن، اول جذب کاربر و بعد تبدیل کاربر به مشتری است.  )



5-1- نرخ نگهداری و نرخ ریزش - Churn Rate & Retention Rate

تعداد بالای دانلود برای افزاش کاربران لازم است ولی کافی نیست. شما باید بتوانید این کاربران را نگه دارید. churn rate ( و معکوس آن retention rate ) برای ارزیابی عملکرد یک برنامه در نگه داشتن کاربران محاسبه می شود.
churn rate عبارت است از درصدی از کاربران که در پابان یک دوره دست از استفاده از برنامه می کشند ( نرخ ریزش) . مثلا  اگر شما در ابتدای فروردین ماه 600 کاربر داشته باشید و از ین تعداد کاربر تنها 400 نفر از آنها تا پایان فروردین ماه فعال باقی بمانند. churn rate برابر  33.33%  خواهد بود


(600-400) / 600 = 33.33

به طریق مشابه می توانید customer retention  را هم محاسبه کنید.


در نوشتن این بخش از این لینک ها استفاده کدم


 https://clevertap.com/blog/churn-rate/

 https://hbr.org/2014/10/the-value-of-keeping-the-right-customers



5-2- Cohort Analysis

جذب کاربر جدید، معیار کافی ای برای ارزیابی یک برنامه یا کسب و کار نیست. مراجعه مکرر کاربران و استفاده مجدد آنها  از خدمات شما می تواند معیار بهتری برای این ارزیابی باشد. برای این کار می توانید از تحلیل cohort استفاده کنید.
تحلیل cohort از جمله تحلیلهای رفتاری به شمار می آید.در این تحلیل کاربران به چند گروه تقسیم می شوند. این گروه ها معمولا در یک بازه زمانی تجربه مشترکی در اپلیکیشن یا سایت شما دارند. مثلا  همگی در یک ماه عضو شده اند. یا همگی در یک ماه اولین خرید خود را انجام داده اند.

این پست در مورد cohort که بنظرم ساده و جالب  گفته و توضیح داده که  چطور از cohort استفاده کنیم و داده آن را تحلیل کنیم حزف زده :

https://clevertap.com/blog/cohort-analysis/


5-3- میانگین درآمد از هر کاربر یا ARPU

ARPU از تقسیم کل درآمد در یک بازه ( مثلا ماهانه) بر تعداد کاربران (فعال) سیستم محاسبه می شود. در محاسبه این شاخص مهم نیست که همه کاربران در حصول این درآمد مشارکت کرده باشند و از شما خرید کرده باشند. بنابراین مثلا اگر درآمد شما در ماه گذشته مثلا 500 هزار تومان باشد و 1000 کاربر فعال داشته باشد، ARPU سرویس شما 500 تومان خواهد بود. بازه زمانی ای که این محاسبه را انجام می دهید به نوع کسب و کار شما و فاصله زمانی خرید کاربران وابسته است. در اپلیکیشن های موبایل این رقم معمولا ماهانه محاسبه می شود. مثلا در سرویس های استریمینگ این مقدار ماهانه محاسبه می شود اما در اپلیکیشن هایی که فعالیت کاربر در انها پراکنده تر است مثل اپلیکیشن های روزو سفر این مقدار سالانه محاسبه می شود.

دانستن درآمد حاصل از هر مشتری می تواند در محاسبه درآمد آینده و ارزیابی روشهای بارزیابی شما و حتی ارزیابی مدل درآمدی شما مفید باشد.

بر اساس این پست، مقدار بنچمارک برای میانگین ماهانه درآمد از کاربران ماهانه 0.04 دلار ( با دلار 18 هزار تومنی معادل 720 تومن) است. البته این مقدار بسته به نوع اپلیکیشن و جغرافیا و نوع قیمت گذاری بالا و پایین می شود.


با محاسبه این شاخص برای کانالهای مختلف جذب  کاربر، می توانید کانالی که مستعد حصول درآمد بیشتری برای شماست را شناسایی کرده و تمرکز بیشتری روی آن داشته باشید.و همانطور که گفته شد در محاسبه درآمد آینده خود از آن استفاده کنید.


5-4- میانگین درامد از هر مشتری ARPPU یا ARPC

ARPPU یا ARPC از تقسیم کل درآمد در یک بازه ( مثلا ماهانه) بر تعداد مشتری( کاربر که خرید انجام داده است) سیستم محاسبه می شود.


5-5- ارزش طول عمر مشتری یا CLTV - Customer lifetime value.

ARPC یا ARPPU  درآمد حال از مشتری را در یک بازه زمانی اندازه گیری می کند. یک شاخص دیگر برای محاسبه ارزشمندی مشتری برای کسب و کار به نام ارزش طول عمر مشتری وجود دارد. این شاخص معادل سودی است که کسب و کار شما از یک مشتری در طول زمانی که مشتری سرویس شماست کسب خواهد کرد.
در محاسبه ARPC فقط درآمد و تعداد مشتریان دریک بازه موثر بودند اما در محاسبه CLTV هزینه های متغیر مثل هزینه جذب کاربر، هزینه های عملیاتی و پشتیبانی در نظر گرفته میشود. بنابراین ممکن است ARPC  برای مشتریان جذب شده از طریق کانال A ( مثلا تبلیغ در شبکه های اجتماعی) کمتر از ARPC  برای مشتریان جذب شده از طریق کنال B  ( مثلا تبلیغات محیطی) باشد اما CLTV  ان بیش از کانال B باشد.

به بیان دیگر CLTV حاشیه سودی است که یک شرکت انتظار دارد به طور میانگین از کل روابط خود با یک مشتری کسب کند.


 CLTV را می توان با استفاده از فرمول زیر محاسبه کرد :


Lifetime Value = Average Value of Sale × Number of Transactions × Retention Time Period

Customer Lifetime Value = Lifetime Value × Profit Margin


فرمول اول درآمد حاصل از هر مشتری را در طول عمر او محاسبه می کند و فرمول دوم با ضرب این مقدار در حاشیه سود، CLTV را محاسبه می کند.

به عنوان مثال اگر فرض کنیم متوسط قیمت لباسهای یک بوتیک 50 دلار است و هر مشتری به طور متوسط 3 بار در سال از این بوتیک خرید می کند و هر مشتری به طور متوسط 2 سال مشتری باقی می ماند و پس از آن دیگر خرید نمی کند در این صورت بر اساس فرمول اول :



 Lifetime Value =  $50 × 3 × 2

                                = $300



یعنی هر مشتری در طول دو سالی که از این بوتیک خرید می کند 300 دلار از بوتیک خرید می کند. اگر فرض کنیم با محاسبه قیمت اجناس، هزنیه تبلیغ و هزینه های ثابت بوتیک سود حاصل از هر قلم جنس 20% باشد در این صورت :


Customer Lifetime Value =  $300 × 20%

                                                  = $60


که نشان میدهد با اینکه هر مشتری در طول عمر خود 300 دلار از بوتیک خرید می کند اما سودی که به بوتیک می رساند تنها 60 دلار است.


منبع این بخش این پست بود که خیلی هم عالی بود

https://clevertap.com/blog/customer-lifetime-value/


ترکیب سنجه ها و ایجاد مدل


و در آخر یک نکته و آن اینکه، هر یک از این سنجه ها کسب و کار شما را از یک زاویه ارزیابی می کند. و برای بهتر نتیجه گرفتن باید ترکیب مناسبی از انها را بررسی کنید تا راهنمای شما در شناسایی نقاط ضعف و قوت کسب و کارتان باشد. مهدی ناصری در این پست سه مدل مختلف از ترکیب سنجه های بالا پیشنهاد داده است که به ترتیب عملکرد مالی،عملکرد رشد مشریان و کارایی سرویس شما را ارزیابی می کنند. این مدلها چیزی جز ترکیب سنجه های بالا نیستند با این حال می توانند وضعیت فعلی کسب و کار شما را خیلی خوب نمایش دهند و پیشنهادهای خوبی برای شما داشته باشند.


چگونه از این سنجه ها و مدل‌ها استفاده کنیم؟


اگر کسب و کاری داریدکه نیاز به محاسبه این سنجه ها و مدل ها دارید، اولین قدم برای شما جمع آوری داده های لازم برای محاسبه سنجه ها و بعد محاسبه آنهاست.  محاسبه این سنجه ها خیلی پیچیده نیست و اگر حجم داده هایتان خیلی زیاد نباشد حتما خودتان قادر به محاسبه آنها خواهید بود. و اگر نیاز داشتید که در این راه کمک بگیرید کافی‌ست از طریق همین وبلاگ به من پیام بدهید. در اسرع وقت جزئیات بیشتری را با شما در میان خواهم گذاشت.



داشبورد رصد وضعیت انتشار کرونا در ایران و دنیا

پ.ن : متاسفانه به خاطر اینکه سرور مورد استفاده دیگه در اختیارم نیست، داشبورد آنلاین نیست. اما لینک کد روی گیتهاب هنوز فعاله!

* اگر می خواهید بدون کمترین توضیحی داشبورد را ببینید به آدرس http://167.114.167.219/ مراجعه کنید.


 در این مدت که متاسفانه ویروس کوووید19 در حال تسخیر دنیاست و آمار افرادی که درگیر بیماری شده اند و یا در اثر بیماری جان خود را از دست داده اند هر روز در حال افزایش است تحلیل های آماری زیادی از نحوه پیشرفت بیماری دیده ایم. این مجموعه داده در سایت کگل باعث شدمن هم از روی کنجکاوی یک نوت بوک بسازم و من هم آمارها را تبدیل به نمودار کنم.

اما اینکه هر روز آمارها تغییر می کرد و نیاز بود نوت بوک را دوباره اجرا کنم من را به این فکر انداخت که چطور این نوت بودک را تبدیل به یک داشبورد کنم.

خوشبختانه پایتون یک فریمورک بسیار جامع و کاربردی برای این کار دارد به نام dash.  این فریم ورک روی flask، react و plotly نوشته شده و امکان ارائه داشبورد و بصری سازی داده ها را فراهم می کند. بنابراین در ادامه با استفاده از dash نوت بوکی که نوشته بودم را تبدیل به یک داشبورد ( البته خیلی ساده) کردم .

اگر مایل به یادگیری و استفاده از dash هستید سایت رسمی اش خیلی جامع و کامل هست. در کنارش این پست هم خیلی خوب هست. بعد از تبدیل نوت بوک به اپلیکیشن dash لازم هست که آن را پابلیش کنید. سروری که من در اختیار داشتم ویندوزی بود. بنابراین لازم بود که dash را روی iis پابلیش کنم. برای این کار این پست خیلی کمکم کرد.

و در پایان نتیجه را می توانید  برای مدتی روی آدرس http://167.114.167.219/ ببینید. کد داشبورد و همین طور اسکریپتی که داده را از روی گیتهاب داشگاه جان هاپکینز بر میداره و آماده استفاده در داشبورد می کنه و همین طور نمومه داده آماده شده را هم می توانید از این آدرس بردارید.


شناسایی توهین، فحش و عبارات رکیک فارسی

برای یک پروژه نیاز به شناسایی پیامهای حاوی کلمات رکیک و فحش داشتم. این شد که نگاهی به روشها و ماژولهای پایتون موجود برای این کار انداختم. از این میان profanity-check نظرم را جلب کرد. جزییات پیاده سازی این روش در وبلاگ Victor Zhou   کامل توضیح داده شده و کاری که من اینجا انجام دادم، صرفا این بود که کار این نویسنده را برای زبان فارسی تکرار کردم  و بنابراین فقط  نتیجه را اینجا به اشتراک می گذارم تا اگر کسی بهش نیاز داشت ازش استفاده کنه. در ضمن مراجعه و مطالعه به پست وبلاگی که لینکش را گذاشتم را توصیه می کنم چرا که علاوه بر توضیح روش مورد استفاده، ماژولهای دیگری که برای این هدف وجود دارند هم بررسی و مقایسه کرده است.

همان طور که در وبلاگ Victor Zhou   اشاره شده است، برای شناسایی کلمات و عبارات توهین آمیز از مدل SVM استفاده شده است و  برای اموزش مدل SVM  ترکیبی از چند مجموعه آموزشی به کار رفته است که باز هم برای توضیحات بیشتر به  پست مربوطه ارجاع می دهم . با توجه به اینکه من مجموعه ای آموزشی از پیامهای حاوی عبارات توهین آمز فارسی  در اختیار نداشتم سعی کردم یک مجموعه اموزشی از توییتر جمع آوری کنم. برای اینکار با استفاده از کتابخانه tweepy یک مجموعه از کلمات و عبارات رکیک را سرچ کردم و توییت های حاوی این کلمات را جمع آوری کردم. ,ولی همانطور که می دانید تنها داشتن مجموعه ای از پیامهای حاوی عبارات توهین آمیز برای ساختن مجموعه آموزشی کافی نیست و باید نمونه منفی ( پیامهایی که حاوی عبارات توهین آمیز نباشند) هم داشته باشیم. برای جمع اوری نمونه های منفی و برای اینکه مطمئن باشم این توییت ها حاوی کلمات رکیک نیستند، توییت های چند اکانت که اطمینان داشتم از این ادبیات استفاده نمی کنند را استفاده کردم.

ابتدا تصمیم داشتم مجموعه داده ای که با این روش جمع آوری کرده ام را هم همراه با کد منتشر کنم. اما با این توضیحات و با توجه به اینکه نمی خواستم حریم خصوصی کاربرانی که از توییت های آنها استفاده کرده ام را پایمال کنم، تصمیم گرفتم کدی که برای جمع اوری مجموعه داده استفاده کرده ام را منتشر کنم. به این ترتیب هر کسی می تواند مجموعه اموزشی خودش را جمع آوری کند .

به جز مرحله جمع آوری داده، سایر مراحل نیاز به توضیح اضافی ندارد و با خواندن وبلاگ Victor Zhou مساله ای باقی نخواهد ماند. برای آموزش مدل از 80 درصد مجموعه آموزشی جمع آوری شده و برای تست از 20 درصد باقیمانده استفاده کردم . که پس از ارزیابی هم دقت و هم فراخوانی مدل به دست آمده بیش از 0.95 بود.


برای دریافت و مشاهده کد به اینجا مراجعه کنید.