ساختار داده و پرسش‌های الگوریتم در علم داده: یک بحث

منتشر‌شده در: towardsdatascience به تاریخ ۲۸ سپتامبر ۲۰۲۱
لینک منبع Data Structure and Algorithm Questions in Data Science: A Discussion

در کنار دستکاری داده، بینش تحلیلی، و ارتباطات تجاری، توانایی تبدیل ریاضیات و آمار به کد برای مدلسازی یا کشف یک مشکل یکی از نشانه‌های یک دانشمند داده بزرگ است.

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

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

مثل همیشه، به چیزی که به دنبالش هستید بستگی دارد.

شکل ۱
شکل ۱

مزایا

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

  • دانش ساختارها و عملیات داده موجود در یک زبان انتخابی
  • توانایی حل مساله برای درک و شکست دادن یک مشکل
  • ارتباط فرآیندهای درک و تفکر
  • توانایی تبدیل یک راه‌حل به یک کد کارآمد
  • تمام موارد بالا در لحظه تحت فشار انجام می‌شوند.

معایب

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

  • مدیریت ذینفعان و اولویت‌بندی پروژه (شامل سوالات ویژه)
  • تنظیم، خطوط لوله و بهینه‌سازی جستجو (مهارت‌های مهندسی داده)
  • واقعیت، بعد و جداول عادی (مهارت‌های مهندسی تجزیه و تحلیل)
  • تصویرسازی داده، ارتباط، و دیدگاه‌های استراتژیک (مهارت‌های تجزیه و تحلیل داده)
  • مدل نمونه‌سازی، توسعه و ارزیابی (مهارت‌های علم داده)

نتیجه

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

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

یک نکته: نماد بزرگ O

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

برای در نظر گرفتن پیچیدگی زمان-فضا، بدترین حالت پیچیدگی زمان-فضا برای الگوریتمی است که توسط نماد O بزرگ توصیف شده‌است، که در آن پیچیدگی فضا شامل فضای مورد استفاده توسط ورودی است (فضای کمکی تنها فضای اضافی است که تنها توسط الگوریتم استفاده می‌شود). نماد Big O به شکلO (پیچیدگی) است که در آن پیچیدگی بر حسب اندازه ورودی n نوشته می‌شود.

برای مثال، اگر فهرستی از نام‌ها دارای مدخل n باشد، جستجو برای یک نام از شروع لیست تا پایان دارای پیچیدگی زمانی O(n) است زیرا بدترین حالت این است که این نام، آخرین مقدار در لیست باشد. پیچیدگی فضا O(n) است زیرا ورودی به طولn است اما فضای کمکی مورد استفاده O(1) است که فقط فضای مورد نیاز برای ذخیره نام مورد نظر برای مقایسه با ورودی‌های لیست است.

الگوریتم‌هایی که بدون در نظر گرفتن اندازه ورودی زمان ثابتO(1) را می‌گیرند، عموماً عملیات ساختار داده مانند دسترسی به یک شاخص آرایه یا قرار دادن یک گره در یک لیست پیوندی هستند.

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