واقعا ورود به دنیای علم داده سخت است؟

چقدر زمان لازم است تا به حد قابل قبولی در علم داده برسیم؟

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

5 دوره آنلاین بسیار خوب در حوزه یادگیری ماشین:

پیش فرض های ساده ساز:

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

من برای برای پاسخ دادن به این سوال مفروضاتی که به نظرم دارای اهمیت هستند را در زیر لیست کرده ام که عبارتند از:

  1. تسلط بر زبان انگلیسی.
  2. داشتن درک ریاضی و آماری.
  3. شاغل بودن یا نبودن.

البته علاقه و تیپ شخصیتی نیز بسیار تاثیرگذار هستند. برای مثال اگر کسی تحمل نشستن چندین ساعته مداوم پشت سیستم و کدنویسی را نداشته باشد اصلا بنظرم نباید وارد این حوزه شود.

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

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

خب، با توجه به توضیحات بالا و برای راحتی کار با سه فرض مطرح شده کار را پیش میگیریم.

1. زبان انگلیسی مهم است؟

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

2. درک ریاضی و آماری شما چقدر است؟

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

3. شاغل هستید؟

همیشه شاغل بودن مانع یادگیری نیست بلکه شاغل بودن در برخی مواقع از جمله یادگیری مباحث علم داده می تواند مزیت بسیار خوبی باشد البته به شرط وجود بستر مناسب.

چرا شاغل بودن می تواند مزیت خوبی را ایجاد کند؟

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

باری با توضیحات داده شده و دوره های موجود ذکر شده در بالا و با در نظر گرفتن این نکته مهم که دوره هایی در این سطح قطعا با فکر و امکان سنجی درست و دقیق طرح ریزی شده اند میتوان یک برآورد نسبی با توجه به شرایط فرض شده داشت.
بطور میانگین حدود 200 ساعت آموزش با توجه به دوره های مختلف و اینکه کدام مورد را انتخاب کنید که بعضا لازم میشود ترکیبی از دوره های فوق را بگذرانید لازم است.
چیزی که به تجربه به آن رسیده ام این است که حداقل بین 4 تا 5 ساعت به ازای هر ساعت کلاس آنلاین در این سطح، زمان لازم است تا مطالب مطرح شده بررسی و جا بیافتد. چرا که برای بهتر فهمیده شدن درس معمولا می بایست سرچ های جداگانه ای داشته باشیم و همچنین باید خودمان نیز کدهای موجود در درس ها را پیاده سازی کنیم که آن نیز زمانبر خواهد بود. پس تا اینجا بین 800 تا 1000 ساعت زمان نیاز خواهیم داشت که میانگین آن یعنی 900 ساعت را ملاک محاسبات آتی قرار میدهیم.

حال با توجه به شرایط هر فرد از لحاظ سه گانه ی ارائه شده یعنی تسلط بر زبان انگلیسی، درک ریاضی و آماری و همچنین شاغل بودن یا نبودن، موارد زیر قابل تصور هستند:
1. کسی که زبان انگلیسی اش خوب نیست و نمیتواند از دوره های معرفی شده استفاده کند نیز اگر بخواهد از دوره های موجود به زبان فارسیِ به نسبت با کیفیت استفاده کند هم چیزی حدود 100 ساعت زمان میخواهد مثلا دوره جادی میرمیرانیِ دوست داشتنی، اگرچه قطعا درگیر مطالعه و رفع اشکال در منابع انگلیسی خواهد شد پس با این پیش فرض برای کسیکه زبان انگلیسی اش ضعیف است من 20 درصد در محاسباتم به کل زمان مورد نیاز یعنی همان 900 ساعت معین شده در بالا اضافه میکنم.
2. همینطور برای کسیکه از درک ریاضی و آماری نسبتا کمتری برخوردار است و یا رشته تحصیلی دانشگاهی اش نامربوط به ریاضی است 30 درصد به کل زمان مورد نیازش اضافه میکنم.

خلاصه مفروضات:

کل بازه زمانی مورد نیاز: [1350 ، 900] بعبارت دیگر 900 ساعت برای کسیکه نه تنها مشکل زبان انگلیسی ندارد بلکه به مباحث ریاضی و آماری نیز آشنایی نسبی دارد. از طرفی 1350 ساعت (1.5*900) برای کسی است که هم در مباحث ریاضی و آماری ضعف دارد و هم مشکل زبان انگلیسی دارد.

میزان زمان در دسترس برای افراد مختلف: قطعا افراد شاغل و غیر شاغل زمان متفاوتی را میتوانند برای یادگیری صرف کنند بر همین مبنا میزان زمان صرف شده برای افراد شاغل را 10 ساعت در هفته (5 جلسه 2 ساعته) و همچنین 25 ساعت در هفته برای افراد غیر شاغل (5 جلسه 5 ساعته) در نظر گرفته ایم. البته واضح است که این زمانها میتواند متفاوت باشد.

حال با این توضیحات میتوان یک درخت تصمیم بسیار ساده به صورت زیر داشته باشیم.

همانطور که در شکل بالا مشاهده میشود میتوان با مفروضات مطرح شده بازه ای بین حدود 9 ماه (36 هفته) تا دو سال و نیم (135 هفته) را برای ورود به حوزه علم داده و یادگیری ماشینی برای افراد مختلف با شرایط متفاوت پیش بینی کرد.

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