من ربات ترجمیار هستم و خلاصه مقالات علمی رو به صورت خودکار ترجمه میکنم. متن کامل مقالات رو میتونین به صورت ترجمه شده از لینکی که در پایین پست قرار میگیره بخونین
با استفاده از این روشهای هوشمندانه دادهها را بهتر دستهبندی کنید!
منتشرشده در: towardsdatascience به تاریخ ۲۵ می ۲۰۲۱
لینک منبع: Sorting Algorithms Every Data Scientist Should Know
مقدمه
حفظ سازمان دهی دادهها میتواند بسیار دشوار باشد. چندین تکنیک وجود دارد که یک دانشمند داده در اختیار داشته که ممکن است به آنها کمک کند تا دادههایشان را سازمان دهی کنند و یکی از محبوبترین این تکنیکها مرتبسازی است. مرتبسازی تکنیکی است که مشاهدات را براساس برخی پارامترهای مجموعه مرتب میکند. این پارامتر میتواند ارزش پیوسته، قطعی، یا حتی ترکیبی از ویژگیها یا ویژگیهای مهندسی باشد. علاوه بر این، زمان نیز معمولا برای مرتبسازی مشاهدات استفاده میشود.
نیازی به گفتن نیست که این امر به دستهبندی بخش بسیار مهمی از تجزیه و تحلیل دادهها در جهان میپردازد. کار کردن با دادههایی که در برخی موارد مرتب نشده اند میتواند سخت باشد و الگوریتم های زیادی وجود دارند که ممکن است نیاز به اصلاح داشته باشند که در دسته مرتبسازی قرار میگیرند، مانند نوار جستجو. علاوه بر این، مرتبسازی به طور معمول هم در یادگیری ماشین و هم در تجزیه و تحلیل به کار میرود. یک مثال عالی از کاربرد الگوریتم های مرتبسازی در تحلیل آماری، آزمون Wilcox Rank Sum است. این آزمون مشاهدات را براساس رتبهبندی پیوسته آنها در مجموعه دادهها مرتب میکند. با تکرار اهمیت الگوریتم های مرتبسازی، میخواهم در مورد برخی از الگوریتم های مرتبسازی مختلف، عملکرد آنها و کاربردشان در مورد انواع مختلف دادهها صحبت کنم.
۱. مرتبسازی حبابی
یک روش نسبتا ابتدایی برای مرتبسازی، روش مرتبسازی حبابی است. این تکنیک با مقایسه دو مقدار اول انجام میشود، اگر یک مقدار از مقدار دیگر جلوتر باشد، سپس با مقدار قبلی تعویض میشود. سپس، دو مقدار بعدی را مقایسه میکنیم و همان کار را انجام میدهیم، اگر مقدار قبلی خارج از ترتیب باشد، ما به تعویض ادامه میدهیم. ین مطمئناً بالاترین مقدار را در ابتدا بدست خواهد آورد، اما پس از آنکه به پایان این تکرار اول سوئیچینگ رسیدیم، باید برگردیم و دوباره شروع کنیم، تا اینکه در نهایت هیچ سوئیچی ایجاد نشود، به این معنی که داده های ما مرتب شدهاند.
به راحتی میتوان فهمید که چرا این روش ناکارآمد است. در نهایت میتوانیم روی هر مقدار حلقه بزنیم تا فقط یک مقدار را جابجا کنیم. و این اتفاق ممکن است چندین بار رخ دهد. در بسیاری از موارد، برای هر مشاهده فردی نیاز است که یک بار از مقادیر ما عبور کند. هزار مشاهده به این معنی است که هزار عملیات هزار بار انجام شدهاست. تعداد عملیات این الگوریتم با مربع تعداد مشاهدات (n) افزایش مییابد. یک راه عالی برای سنجش عملکرد این الگوریتم استفاده از نماد Big O است. همانطور که بیان کردم، این الگوریتم افزایش نمایی دارد، بنابراین در زمان محاسبه با n² افزایش می یابد، به این معنی که نماد O بزرگ برای این الگوریتم O (n²) است. نیازی به گفتن نیست که این الگوریتمی نیست که ممکن است بخواهید وقتی تعداد مشاهدات زیاد است از آن استفاده کنید، زیرا محاسبه آن برای کامپیوتر شما به صورت نمایی سختتر خواهد شد. من قصد دارم از علامت Big O برای سنجش عملکرد این الگوریتم های مرتبسازی در سراسر این مقاله استفاده کنم، بنابراین اگر میخواهید جلوتر بروید و بیشتر در مورد آن یاد بگیرید، من مقالهای نوشتم که میتوانید در مورد آن در اینجا بخوانید:
۲. درج مرتبسازی
نوع بعدی الگوریتم مرتبسازی که من میخواهم به آن نگاه کنم درج مرتبسازی است. این الگوریتم به شیوهای بسیار مشابه با مرتبسازی حبابی آغاز میشود، با دو مشاهده اول و سپس دومی تغییر میکند. با این حال، تفاوت زمانی رخ داده که درج مرتبسازی به دو مورد اول برمی گردد و مقایسه میشود. این آیتمها در ابتدا به سمت آیتم آغازین حرکت میکنند، تا زمانی که شما در نهایت به ابتدای لیست برسید، بررسی میکنند، و متوجه میشوید که مرتب شدهاست. اگر شما یک دسته کارت داشته باشید که سفارش میدهید، این احتمالا الگوریتمی است که شما استفاده میکنید، بدون اینکه حتی آن را درک کنید.
همانطور که ممکن است تصور کنید، این روش مرتبسازی معمولا سریعتر از مرتبسازی حبابی است. این به این دلیل است که این لیست نیاز ندارد که به طور کامل با یک عملیات در هر زمان که از آن عبور میکنیم، مرتب شود. این بدان معنی است که نماد Big O برای این الگوریتم هنوز در O (n²) قرار دارد، به این معنی که این الگوریتم هنوز همان کاهش عملکرد را در یک دوره زمانی متفاوت داراست. گفته میشود، در حالی که قطعا میتواند برای کار با مجموعه کوچکتری از دادهها مفید باشد، زمانی که در مورد مرتبسازی مقادیر زیادی است، این به احتمال زیاد بهترین انتخاب نیست.
مطالعه مقاله دانشمندان دادهها در عرض ۱۰ سال آینده منقرض خواهند شد توصیه میشود
۳. مرتبسازی سریع
مرتبسازی سریع، نام خود را به دلیل بسیار مهمی حفظ میکند و در مقایسه با روشهای دیگر در این لیست نسبتا سریع است. این تکنیک شامل انتخاب یک نقطه محوری، معمولا میانه دادهها و سپس مقایسه مشاهدات در هر طرف آن محور است. هر چیز کوچکتر به یک انتها می رود و هر چیز بزرگتر به انتهای دیگر. بعد از آن شما یک محور جدید در مرکز هر دو طرف انتخاب میکنید و روش دقیق مشابهی را مرتب میکنید تا اینکه در نهایت دادهها مرتب شوند.
این الگوریتم مرتبسازی همیشه کمترین هزینه شروع را از سایر الگوریتم های مرتبسازی که پوشش دادم، خواهد داشت. در سرشماری سال ۲۰۰۰، جمعیت این شهر ۱۴۲۱ نفر اعلام شد البته، کارایی یک الگوریتم همیشه به ورودیهای آن بستگی دارد، بنابراین قطعا تغییراتی وجود خواهد داشت که الگوریتم را در این زمینه بهبود بخشیده و یا سرویس نمیدهد. با این حال، عملکرد متوسط این الگوریتم، O (n log n) است. این به این معنی است که معمولا خطی با شیب تند است، با این حال، میتواند در هنگام کار با مشاهدات بیشتر، مهار شود.
۴ . مرتبسازی سطلی
مرتبسازی Bucket الگوریتمی است که با قرار دادن بخشهایی از مشاهدات در «سطلها» کار میکند. سپس هر Bucket به صورت جداگانه معمولا با استفاده از روش مرتبسازی سریع مرتب شده و سپس Bucketها به صورت بازگشتی مرتب میشوند. این واقعا روش «تقسیم و غلبه» از نوع سریع را به یک سطح کاملا جدید میرساند، اما ایجاد لایههای متعدد تقسیم رخ میدهد که کار کردن با اجزای فردی را آسان میکند تا به راحتی همه آنها را با هم دستهبندی کند. این امر همچنین یک مزیت عملکرد عظیم را فراهم میکند، که بدترین عملکرد ممکن، O (k) است. معمولا، این الگوریتم بیشتر در O (n + k) قرار میگیرد که بسیار بهتر است، و باعث میشود که این الگوریتم قطعا در مقابل جمعیت برجسته شود.
مطالعه مقاله برنامه راهنما برای یادگیری علوم داده در ۲۰۲۱ توصیه میشود.
۵. مرتبسازی مبنایی
آخرین الگوریتم مرتبسازی که میخواستم در مورد آن صحبت کنم، مرتبسازی شعاعی است. این الگوریتم بر روی مرتبسازی سطل معمولی ساخته میشود، با این حال دارای یک تفاوت کلیدی است. مرتبسازی شعاعی یک الگوریتم مرتبسازی غیر مقایسهای است. این بدان معنی است که مشاهدات در این لیست هرگز به طور مستقیم مقایسه نمیشوند. در عوض، عناصر با استفاده از شعاعهای خود در سطلها توزیع میشوند. مرتب سازی Radix یک سیستم موقعیت عددی براساس تعداد ارقام منحصر به فرد است. همانطور که ممکن است تصور شود، این الگوریتم عملکرد مشابهی با مرتبسازی Bucket دارد، اما از عملکرد مرتبسازی سریع خلاص میشود. در نتیجه، این الگوریتم سازگارتر است و به طور معمول در O (nk) قرار میگیرد، که به طور منطقی سریع است.
نتیجهگیری
الگوریتم های مرتبسازی مختلفی وجود دارند که در علوم کامپیوتر اهداف مختلفی را دنبال میکنند. البته، مرتبسازی به ویژه در هنگام کار با مشاهدات دادهها بسیار مهم است، بنابراین دانشمندان داده قطعا میتوانند از دانستن روشهای مختلف مرتبسازی و استفاده از روشهایی که دارای نقاط قوت نسبت به کاربردشان هستند، بهره ببرند. انتخاب در الگوریتم تقریبا به طور قطع بسته به کاربرد تغییر میکند، بنابراین آگاهی از الگوریتم های مختلف و کاربردهای آنها برای دستهبندی بهتر دادههای شما بسیار مهم خواهد بود.
این متن با استفاده از ربات ترجمه مقالات علم داده ترجمه شده و به صورت محدود مورد بازبینی انسانی قرار گرفته است.در نتیجه میتواند دارای برخی اشکالات ترجمه باشد.
مقالات لینکشده در این متن میتوانند به صورت رایگان با استفاده از مقالهخوان ترجمیار به فارسی مطالعه شوند.
مطلبی دیگر از این انتشارات
اقتصاد در دوره کووید ۱۹
مطلبی دیگر از این انتشارات
بهترین سیستمعامل برای برنامهنویسی
مطلبی دیگر از این انتشارات
۲۳ ایده منحصر به فرد هدیه شرکتی برای تحت تاثیر قرار دادن مشتریان یا کارمندان