دانشمند داده شدن؛ آری یا خیر؟ — راهنمای کاربردی
اغلب افراد طی سالهای اخیر درباره «علم داده» (Data Science)، «دادهکاوی» (Data Mining)، «یادگیری ماشین» (Machine Learning) و «هوش مصنوعی» (Artificial Intelligence | AI) شنیدهاند. نقشهای (جایگاههای شغلی) زیادی وجود دارند که زیر چتر علم داده ایجاد شدهاند و از آن جمله میتوان به دانشمند داده (Data Scientist)، تحلیلگر داده، مهندس یادگیری ماشین و دانشمند پژوهش اشاره کرد.
این در حالیست که تعریف این جایگاههای شغلی در میان شرکتهای گوناگون متفاوت است و به نظر میرسد تقاضای بالایی برای کارشناسان این زمینهها وجود دارد. این امر موجب شده تا بسیاری از افراد تمایل به اختصاص زمان و یادگیری بیشتر پیرامون علم داده داشته باشند. اما آیا تغییر شغلی برای یک فرد از زمینه کاری فعلی به این سمت و سو درست است؟ اگر فردی خواست در این مسیر گام بردارد چه اقدامی باید انجام دهد؟ این مسیر فرد را به چه مقصدی خواهد رساند؟
در این مطلب قرار نیست به چگونگی مبدل شده به یک دانشمند داده به شیوهای آسان و جذاب پرداخته شود، زیرا علم داده برای همه کس مناسب نیست. بسیاری از مهندسان پس از مدتی کار در این حوزه متوجه میشوند که مهندسی سنتی را ترجیح میدهند. هدف این مطلب پرداختن به جنبهای از علم داده است که کمتر درباره آن صحبت شده، اما دانستن آن برای افراد پیش از آنکه گام در مسیر پر فراز و نشیب علم داده و دادهکاوی بگذارند الزامی است.
آیا من باید یک دانشمند داده شوم؟
این پرسشی است که هر فردی باید پیش از عمیق شدن بیش از حد در زمینه علم داده مطرح کند. بسیاری از مطالب منتشر شده در حوزه علم داده و دادهکاوی به این امر گرایش دارند که بگویند جادویی فوقالعاده در علم داده و مشخصا یادگیری ماشین وجود دارد.
برای مهندسها اما نیاز به بازنگری در چنین رویکردی است. بسیاری از افراد هنوز هم احساسی که اولین بار هنگام استفاده از یک برنامه کاربردی موبایل، فیسبوک، و حتی برای افراد قدیمیتر اولین تجربه کار با اینترنت یا کامپیوتر به آنها دست داده را به خاطر دارند. ساخت اولین برنامههای کاربردی احساس شگفتی، به هدف زدن و اشتیاق برای ساخت برنامههای بیشتر را ایجاد میکرد.
اکنون و پس از اینکه این کارها برای سالهای متمادی انجام شدهاند، دیگر زرق و برق و هیجان خود را از دست دادهاند. چه کسی هست که طالب آن شور و هیجان نباشد؟ به ویژه در یک حوزه جدید که به نظر میرسد آینده را پیشبینی و هر صنعتی را متحول میکند. این کار برای افرادی که اولین مدل خود را میسازند بسیار هیجانانگیز خواهد بود. دیدن اینکه کار فرد قابلیتهایی را به همراه دارد که پیش از این امکانپذیر نبوده هیجانانگیز است. اگرچه عناصری برای نقش دانشمند داده وجود دارد که در این هیجانات نادیده گرفته میشوند.
اولین موضوع آن است که نقش دانشمند داده در میان سازمانهای گوناگون متفاوت است و بیشتر وقت دانشمندان داده در پروژههای این حوزه به پاکسازی و آمادهسازی دادهها اختصاص پیدا میکند. تخصیص ۸۰ الی ۹۰ درصد روز کاری به مدیریت و دستکاری دادهها نیازمند صبر قابل توجهی است و البته انجام این کار به اندازه مدلسازی و تحلیل خروجیهای مدل جذاب نیست.
دوم آنکه جریان کاری یک دانشمند داده از یک مهندس نرمافزار کاملا متفاوت است. نقشه راه برای چرخه حیات یک پروژه مهندسی واضح است. مهندس پیرامون یک محصول احساس مالکیت دارد و به طور مستمر آن را توسعه داده و تکرار میکند تا به خوبی مقیاسپذیر، انعطافپذیر و قابل نگهداری شود. در علم داده، به ویژه در اغلب جایگاههایی که بیشتر جستوجو محور هستند، نتایج خیلی کم قابل پیشبینی هستند.
تجربیات شکست خورده زیادی وجود دارد و دانستن اینکه انجام یک کار چقدر زمان میبرد دشوار است. این غیر قابل پیشبینی بودن منجر به دیدگاههای مختلفی پیرامون جایگاه شغلی دانشمند داده و دادهکاو میشود. هنگامی که مهندسها برای عمق کار تلاش میکنند (کیفیت ساخت و سرعت تکمیل)، دانشمندان داده در تلاش برای بهینهسازی وسعت هستند (سرعت شکست). تغییر جهت ذهنی برای بسیاری از مهندسان دشوار است و کسانی که نمیتوانند با شرایط یک دانشمند داده خود را تطبیق دهند معمولا در صورت ورود به این حوزه شکست میخورند.
آیا مهارتهای من منسوخ شده محسوب میشود؟
نه! تقاضا برای مهندسانی که در «معماری کامپیوتر» (Computer Architecture)، زیرساخت، «فرانت اند» (front-end) و «بک اند» (back-end) عملکرد خوبی دارند زیاد است و این تقاضا در آینده پیشبینی شده نیز همچنان زیاد خواهد بود.
مهندسان میتوانند بدون دانشمندان داده نیز نرمافزار بسازند، این در حالیست که دانشمندان داده گاه نمیتوانند بدون وجود یک مهندس در تیم پروژه، این کار را انجام دهند.
دامنههای مهندسی سنتی از دیرباز بنا شده و پیشرفتهتر است، بنابراین این احتمال وجود دارد که مهارتهای مهندسی که امروز ایجاد میشوند طی ۵ سال آتی کاربردهای بسیار زیادی داشته باشند. این در حالیست که یادگیری ماشین یکی از اجزای مهم و جدایی ناپذیر چشمانداز فناوری است. بنابراین این احتمال وجود دارد که فرد به عنوان یک مهندس حتی اگر دانشمند داده نیز نباشد در کنار یک کارشناس یادگیری ماشین یا دانشمند داده کار کند و بنابراین همچنان حائز اهمیت است که مهندسها نیز مفاهیم سطح بالاتری (در زمینه علم داده) را بیاموزند.
همچنان علاقمند پای نهادن در مسیر علم داده هستید؟
توصیه میشود افرادی که با وجود مطالعه هر آنچه پیشتر بیان شد همچنان علاقمند به یادگیری علم داده هستند ادامه این مطلب را بخوانند. خبر خوب این است که منابع زیادی برای یادگیری دادهکاوی و علم داده وجود دارند و خبر بد آن است که منابع زیادی برای یادگیری این زمینهها وجود دارند. در میان این حجم از منابع تشخیص گزینههای مناسب جهت یادگیری علمی و کاربردی امری دشوار است.
بسیاری از منابع بیش از اندازه بر یک مبحث عمیق شدهاند و به تئوریهای نهفته در پس یک روش پرداختهاند. از سوی دیگر برخی از آموزشها بسیار سطحی به موضوع پرداختهاند و در مجموع تناسبی میان آنچه ارزش تخصیص زمان را دارد و آنچه ندارد در بسیاری از آموزشهای وجود ندارد. در وبلاگ فرادرس پیش از این در دو مطلب به مباحثی که باید برای مبدل شدن به یک دانشمند داده یا کارشناس یادگیری ماشین آموخت پرداخته و منابع مفید برای آنها ارائه شد، بر همین اساس مطالعه این دو نوشتار جهت یافتن منابع مناسب یادگیری علم داده و دادهکاوی توصیه میشود:
- چگونه یک دانشمند داده شوید؟ — راهنمای گامبهگام به همراه معرفی منابع
- معرفی منابع آموزش ویدئویی هوش مصنوعی به زبان فارسی و انگلیسی
آیا واقعا نیاز به آموختن این حجم از جبر خطی هست؟
به علم داده باید به چشم یادگیری دامنه جدیدی از ریاضیات نگریست که با فراگیری چشمانداز نویی از علوم کامپیوتر همراه است. در مجموع باید گفت یادگیری جبرخطی برای درک مبانی این حوزه الزامی است. قطعا با یادگیری این مباحث فرد چیزی پیرامون «چارچوبهای مدرن» (modern frameworks)، جریان کاری یک پروژه علم داده یا دیگر مواردی که برای موفقیت در یک پروژه علم داده نیاز است نمیآموزد، اما یک نقطه شروع خوب خواهد داشت.
افرادی که تمایل دارند یک گام جلوتر باشند باید همواره به این نکته توجه کنند که مبدل شدن به یک دانشمند داده نیازمند یادگیری مداوم است و از این رو مطالعه وبسایتهای تخصصی، کتب و مقالات جدید این حوزه توصیه میشود. یکی از منابع فارسی که به طور مداوم به بحث دادهکاوی میپردازد وبلاگ فرادرس است که مطالعه مطالب دادهکاوی و هوش مصنوعی آن به علاقمندان توصیه میشود.
چگونه میتوان در زمینه علم داده و دادهکاوی تجربه کسب کرد؟
رویکردهای متعددی برای کسب تجربه در حوزه علم داده وجود دارد و افراد گوناگون روشهای مختلف و بعضا متفاوتی را توصیه میکنند. بسیاری از افراد شرکت در رقابتهای Kaggle را برای کسب تجربه در این حوزه توصیه میکنند. اما پیشنهاد میشود اگر در ابتدای راه هستید از این کار اجتناب کنید، زیرا رقابتهای Kaggle راهکار بسیار خوبی برای ساخت و تنظیم مدل هستند، اما چنانچه پیشتر هم بیان شد این کار بخش کوچکی از وظایف موجود در یک پروژه تحلیل داده و دادهکاوی را تشکیل میدهد.
بسیاری از شرکتهایی که قصد استخدام دانشمند داده دارند، با حجم زیادی از رزومههایی مواجه هستند که در آنها شرکت در رقابتهای Kaggle به عنوان تجربه کاری قید شده، در حالیکه این مساله نمیتواند گویای مهارت اجرایی متقاضی یک فرصت شغلی در زمینه علم داده باشد و به عبارت بهتر اطلاعاتی پیرامون تسلط فرد بر پاکسازی دادهها، یکپارچهسازی با دیگر سیستمها و دیگر موارد ارائه نمیکند. یک گزینه بهتر، پیدا کردن یک پروژه تحلیل داده در محل کار کنونی فرد و مربی است که روی موفقیت شما سرمایهگذاری کند. این راهکار با اختلاف بهترین گزینه ممکن محسوب میشود. گزینه مذکور امکان کسب تجربه را در مواجهه با پروژههای علم داده جهان واقعی ارائه میکند و کمک میکند تا فرد در کنار یک کارشناس با تجربه قرار گرفته و از مسیر اصلی خود منحرف نشود.
اگر چنین فرصتی در محل کار کنونی فرد وجود ندارد، میتواند پروژه خود را در منزل ایجاد و دنبال کند. حجم زیادی از مجموعه دادههای متنوع به صورت عمومی و در وب در دسترس هستند و برخلاف رقابتهای Kaggle، فرد با کار روی مجموعه دادههای جهان واقعی آنچه در چرخه حیات یک پروژه حقیقی تحلیل داده وجود دارد را تجربه میکند. حصول اطمینان از این امر که نتایج قابل سنجش و ارائهای وجود دارد مساله مهمی است که نباید نادیده گرفته شود. یک پروژه شخصی دارای دمو بسیار اثرگذارتر از یک پروژه فاقد آن است.
من ایدهای برای یک پروژه دادهکاوی دارم. چگونه مدیرم را متقاعد کنم که اجازه انجام آن را در محل کار بدهد؟
این امر امکانپذیر نیست، دستکم هنگامی که فرد در ابتدای مسیر قرار دارد. برخی از شرکتها هکاتونهایی را برگزار میکنند که افراد علاقمند میتوانند از مزایای آن بهرهمند شوند. در غیر این صورت، فرد باید زمانی را به این کار تخصیص دهد تا یک خروجی دارای توانایی «اثبات مفهوم» (proof of concept) حاصل شود که بتوان آن را به شرکت به منظور سرمایهگذاری در پروژه مذکور ارائه داد.
به نظر میرسد راه مبدل شدن به دانشمند داده بسیار طولانی است، آیا راه دیگری وجود ندارد؟
البته که نه! هر سفری به دنیای علم داده بیمانند است. الزامی وجود ندارد که این مراحل به صورت ترتیبی و زنجیروار انجام شوند (و معمولا هم این اتفاق نمیافتد). یک رویکرد متداول شروع کار با یادگیری ماشین به شیوه «جعبه سیاه» (black boxing) است، بدین معنا که فرد یک مدل را همچون جعبه سیاه آموزش داده و یکپارچه میکند و سپس به طور مداوم با کسب دانش بیشتر و عمیقتر پیرامون چگونگی عملکرد آن، مدل را بهبود میبخشد.
تغییر دادن زمینه فعالیت از مهندسی به دانشمند داده مانند تغییر زمینه عملکرد از برنامهنویس فول استک به به مهندس بکاند نیست. این یک تغییر حرفه است و فرد ناگزیر وارد رقابت با افرادی خواهد شد که در دانشگاه در زمینه علم داده تحصیل کردهاند.
شخص برای مبدل شدن به یک دانشمند داده باید سرمایهگذاری قابل توجهی روی خود داشته باشد و زمان، انرژی و هزینه لازم را به آن اختصاص دهد. دانشمندان داده با پیشزمینه مهندسی معمولا دارای مهارتهای قابل توجهتری هستند که آنها را به افرادی زبردستتری برای انجام یک پروژه از ابتدا تا انتها مبدل میکند.
اگر مطلب بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشود:
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- مجموعه آموزشهای هوش محاسباتی
- مجموعه آموزشهای شبکههای عصبی مصنوعی
- گنجینه آموزشهای برنامه نویسی پایتون (Python)
- آموزش برنامهنویسی R و نرمافزار R Studio
- مجموعه آموزشهای برنامه نویسی متلب (MATLAB)
^^