پیشنهاد گوگل برای رفع انحصار از بازار جستجو در پرونده ضدانحصار: کاهش شروط قراردادها
گوگل روز جمعه به دادگاه پیشنهاد کرد تا به عنوان یک اقدام اصلاحی، شروط قراردادهای…
۱ دی ۱۴۰۳
۱ دی ۱۴۰۳
زمان مطالعه : ۱۶ دقیقه
در این مطلب میخوانید
الگوریتمهای یادگیری ماشینی در انواع مختلفی وجود دارند که برخی از آنها میتوانند به کامپیوترها در بازی شطرنج، انجام جراحیها و هوشمندتر شدن و شخصیتر شدن کمک کنند. در دنیایی که تقریباً تمام کارهای دستی در حال خودکارسازی هستند، تعریف دستی در حال تغییر است. ما در عصر پیشرفت مداوم فناوری زندگی میکنیم و با نگاهی به اینکه محاسبات در طول سالها چگونه پیشرفت کرده است، میتوانیم پیشبینی کنیم که در روزهای آینده چه اتفاقی رخ خواهد داد.
در رشته در حال رشد سریع یادگیری ماشینی، درک الگوریتمهای مناسب برای هر مهندس مشتاق یا دانشمند دادهها بسیار مهم است. این مقاله 10 الگوریتم برتر از الگوریتمهای یادگیری ماشینی را معرفی میکند. هر مهندس این رشته باید با این الگوریتمها آشنا باشد تا مدلهای موثری بسازد و بینش معناداری از دادهها به دست آورد.
در ادامه فهرستی از ۱۰ الگوریتم برتر از میان الگوریتمهای یادگیری ماشینی که معمولاً مورد استفاده قرار میگیرند، آوردهایم:
الگوریتمهای یادگیری با نظارت از الگوریتمهای یادگیری ماشینی هستند که با استفاده از دادههای دارای برچسبگذاری (labeled data) آموزش میبینند، به این معنی که دادههای ورودی، با خروجی صحیح برچسبگذاری میشوند. هدف این الگوریتمها آموزش نقشهبرداری از ورودی به خروجی است که امکان پیشبینی خروجی دادههای جدید را فراهم میکند. الگوریتمهای رایج یادگیری با نظارت عبارتند از:
رگرسیون خطی (Linear Regression): برای پیشبینی نتایج پیوسته استفاده میشود. این مدل، رابطه بین یک متغیر وابسته و یک یا چند متغیر مستقل را با برازش یک معادله خطی برای دادههای مشاهده شده، مدل میکند.
رگرسیون لجستیک (Logistic Regression): برای کارهای مرتبط با طبقهبندی باینری (به عنوان مثال، پیشبینی نتایج بله/خیر) استفاده میشود. این رگرسیون با استفاده از یک تابع لجستیک احتمالات را تخمین میزند.
درختان تصمیمگیری (Decision Trees): این مدلها با یادگیری قوانین تصمیمگیری ساده استنتاج شده از ویژگیهای دادهها، ارزش و مقادیر متغیر هدف را پیشبینی میکنند.
جنگلهای تصادفی (Random Forests): مجموعهای از درختهای تصمیمگیری که معمولاً برای طبقهبندی و رگرسیون، بهبود دقت مدل و کنترل بیش برازش (overfitting) استفاده میشوند.
ماشینهای بردار پشتیبانی SVM: Support Vector Machines که در فضاهای با ابعاد بالا مؤثر است، عمدتاً برای طبقهبندی استفاده میشود، اما میتواند برای رگرسیون هم مورد استفاده قرار گیرد.
شبکههای عصبی (Neural Networks): شبکههای عصبی مدلهای قدرتمندی هستند که میتوانند روابط پیچیده غیرخطی را بر عهده بگیرند. این شبکهها به طور گسترده در اپلیکیشنهای یادگیری عمیق استفاده میشوند.
الگوریتمهای یادگیری بدون نظارت با مجموعه دادهها بدون پاسخهای برچسبدار مورد استفاده قرار میگیرند. در واقع الگوریتمها دادههای بدون برچسب را برای کشف الگوها، گروهبندی دادههای مشابه یا کاهش ابعاد، تجزیه و تحلیل میکنند. هدف در اینجا استنتاج ساختار طبیعی موجود در مجموعهای از نقاط دادهها است. تکنیکهای رایج یادگیری بدون نظارت عبارتند از:
خوشهبندی (Clustering): الگوریتمهایی مانند K-means، خوشهبندی سلسله مراتبی و DBSCAN مجموعهای از اشیاء را به گونهای گروهبندی میکنند که اشیاء در یک گروه بیشتر به یکدیگر شباهت دارند تا در گروههای دیگر.
وابستگی (Association): این الگوریتمهای یادگیری ماشینی قوانینی را پیدا میکنند که بخشهای بزرگی از دادههای شما مانند تحلیل سبد بازار (market basket analysis) را توصیف میکنند.
تحلیل مؤلفههای اصلی (PCA) یا Principal Component Analysis: یک روش آماری است که از یک تبدیل متعامد برای تبدیل مجموعهای از مشاهدات متغیرهای احتمالاً همبسته (possibly correlated variables) به مجموعهای از مقادیر متغیرهای خطی غیرهمبسته (linearly uncorrelated variables) استفاده میکند.
رمزگذارهای خودکار (Autoencoders): نوع خاصی از شبکه عصبی که برای یادگیری کدگذاری کارآمد دادههای بدون برچسب استفاده میشود.
الگوریتمهای یادگیری تقویتی یاد میگیرند که دنبالهای از تصمیمات را اتخاذ کنند. الگوریتم یاد میگیرد که در یک محیط نامشخص و بالقوه پیچیده به یک هدف دست یابد. در یادگیری تقویتی، یک عامل با پیروی از یک خطمشی بر اساس اقداماتی که باید انجام دهد، تصمیم میگیرد و از پیامدهای این اقدامات از طریق پاداش یا مجازات میآموزد. در واقع الگوریتمها از طریق آزمون و خطا و تعامل با یک محیط برای حداکثرسازی پاداش یاد میگیرند.
یادگیری Q (Q-learning): یک الگوریتم یادگیری تقویتی بدون مدل است که مقادیر یک عمل را در یک حالت خاص میآموزد.
شبکههای Q عمیق (DQN): Deep Q-Networks یادگیری Q را با شبکههای عصبی عمیق ترکیب میکند و به این رویکرد اجازه میدهد تا سیاستهای موفق را مستقیماً از ورودیها یا دروندادهای حسی با ابعاد بالا بیاموزد.
روشهای گرادیان خطمشی (Policy Gradient Methods): این روشها پارامترهای یک خطمشی را مستقیماً برخلاف تخمین مقادیر یا ارزش اقدامات، بهینه میکنند.
جستجوی درخت مونت کارلو (MCTS): Monte Carlo Tree Search در فرآیندهای تصمیمگیری برای یافتن تصمیمات بهینه با اجرای سناریوها، به ویژه در بازیهایی مانند Go استفاده میشود.
این طبقهبندیها نمای کلی گستردهای از رایجترین انواع الگوریتمهای یادگیری ماشینی را ارائه میدهند. هر کدام نقاط قوت و موارد استفاده ایدهآل خود را دارند که آنها را برای انواع خاصی از وظایف نسبت به سایرین مناسبتر میکند.
در این بخش 10 مورد از معروفترین الگوریتمهای یادگیری ماشینی را با هم بررسی میکنیم:
برای درک عملکرد رگرسیون خطی، تصور کنید که چگونه میتوانید کندههای چوب تصادفی را به ترتیب افزایش وزن آنها مرتب کنید. مشکلی که در این زمینه وجود دارد این است که شما نمیتوانید هر کنده را وزن کنید. بنابراین باید وزن آن را فقط با نگاه کردن به ارتفاع و دور چوب و با یک تحلیل بصری حدس بزنید و آنها را با استفاده از ترکیبی از این پارامترهای قابل مشاهده مرتب کنید. رگرسیون خطی در یادگیری ماشینی هم به این صورت است.
در این فرآیند بین متغیرهای مستقل و وابسته ارتباط برقرار میشود و این کار با برازش آنها در یک خط صورت میگیرد. این خط به خط رگرسیون معروف است و با یک معادله خطی Y= a *X + b نشان داده میشود.
در این معادله:
Y – متغیر وابسته
a- شیب
X – متغیر مستقل
b – عرض از مبدأ
ضرایب a & b با به حداقل رساندن مجذور اختلاف فاصله بین نقاط داده و خط رگرسیون به دست میآیند.
رگرسیون لجستیک برای تخمین مقادیر گسسته (معمولا مقادیر باینری مانند 0 و 1) از مجموعهای از متغیرهای مستقل استفاده میشود. این رگرسیون با برازش دادهها به یک تابع logit به پیشبینی احتمال یک رویداد کمک میکند. به آن رگرسیون لوجیت هم میگویند.
این روشهای ذکر شده در زیر اغلب برای کمک به بهبود مدلهای رگرسیون لجستیک استفاده میشوند:
الگوریتم درخت تصمیم یکی از محبوبترین الگوریتمهای یادگیری ماشینی است که امروزه مورد استفاده قرار میگیرد. این یک الگوریتم یادگیری با نظارت است که برای طبقهبندی مسائل استفاده میشود. در طبقهبندی متغیرهای وابسته مطلق و پیوسته به خوبی عمل میکند. این الگوریتم جمعیت آماری را بر اساس مهمترین ویژگیها/ متغیرهای مستقل به دو یا چند مجموعه همگن تقسیمبندی میکند.
الگوریتم SVM روشی از الگوریتم طبقهبندی است که در آن دادههای خام را به صورت نقاط در یک فضای n بعدی رسم میکنید (که در آن n تعداد ویژگیهایی است که دارید). سپس ارزش یا مقادیر هر ویژگی به یک مختصات خاص گره میخورد و طبقهبندی دادهها را آسان میکند. از خطوطی به نام طبقهبندیکننده میتوان برای تقسیم دادهها و رسم آنها بر روی یک نمودار استفاده کرد.
یک طبقهبندی کننده ساده بیز فرض میکند که وجود یک ویژگی خاص در یک طبقه با وجود هیچ ویژگی دیگری ارتباطی ندارد.
حتی اگر این ویژگیها به یکدیگر مرتبط باشند، طبقهبندیکننده Naive Bayes در هنگام محاسبه احتمال یک نتیجه خاص، همه این ویژگیها را به طور مستقل در نظر میگیرد.
یک مدل بیزی ساده به راحتی ساخته میشود و برای مجموعه دادههای عظیم مفید است. این مدل ساده است و به این معروف است که حتی از روشهای طبقهبندی بسیار پیچیده هم عملکرد بهتری دارد.
این الگوریتم هم برای مسائل طبقهبندی و هم رگرسیون کاربرد دارد. ظاهراً در صنعت علم دادهها، بیشتر برای حل مسائل طبقهبندی استفاده میشود. این یک الگوریتم ساده است که همه موارد موجود را ذخیره میکند و هر مورد جدید را بر اساس کسب اکثریت آرای k همسایههایش طبقهبندی میکند. سپس مورد به طبقهای که بیشترین اشتراک را با آن دارد، اختصاص مییابد. یک تابع فاصله این اندازهگیری را انجام میدهد.
KNN را میتوان با مقایسه آن با زندگی واقعی به راحتی درک کرد. به عنوان مثال، اگر اطلاعاتی در مورد فردی میخواهید، منطقی است که با دوستان و همکاران او صحبت کنید!
مواردی که باید قبل از انتخاب الگوریتم K نزدیکترین همسایگان یا KNN در نظر بگیرید:
این یک الگوریتم یادگیری بدون نظارت از الگوریتمهای یادگیری ماشینی است که مسائل خوشهبندی را حل میکند. مجموعه دادهها به تعداد خاصی از خوشهها طبقهبندی میشوند (بیایید این تعداد را K بنامیم) به گونهای که تمام نقاط داده در یک خوشه، با دادههای دیگر خوشهها همگن و ناهمگن باشند.
چگونه K-means خوشهها را شکل میدهد؟
مجموعهای از درختان تصمیم را جنگل تصادفی مینامند. برای طبقهبندی یک شی جدید بر اساس ویژگیهای آن، هر درخت طبقهبندی میشود و درخت به آن طبقه رای میدهد. در نهایت جنگل، طبقهبندیای را انتخاب میکند که (از بین همه درختان جنگل) بیشترین رای را داشته باشد.
هر درخت به شرح زیر کاشته میشود و رشد میکند:
اگر تعداد موارد در مجموعه آموزشی N باشد، نمونهای از N مورد به صورت تصادفی گرفته میشود. این نمونه، مجموعه آموزشی برای رشد درخت خواهد بود.
اگر M متغیر ورودی وجود داشته باشد، یک عدد m<<M مشخص میشود؛ به طوری که در هر گره، m متغیر به طور تصادفی از M انتخاب میشوند و بهترین تقسیم بر روی این m برای تقسیم گره استفاده میشود. مقدار m در طول این فرآیند ثابت میماند. هر درخت به بیشترین حد ممکن رشد میکند. هرس انجام نمیشود.
در دنیای امروز، حجم وسیعی از دادهها توسط شرکتها، سازمانهای دولتی و سازمانهای تحقیقاتی ذخیره و تجزیه و تحلیل میشود. به عنوان یک دانشمند دیتا، میدانید که این دادههای خام حاوی اطلاعات زیادی است. چالش این الگوریتم شناسایی الگوها و متغیرهای مهم است.
الگوریتمهای کاهش ابعاد مانند درخت تصمیم، تحلیل عاملی، نسبت مقادیر گمشده و جنگل تصادفی میتوانند به شما در یافتن جزئیات مرتبط کمک کنند.
الگوریتم تقویت گرادیان و الگوریتم AdaBoosting الگوریتمهای تقویتی هستند. این الگوریتمها زمانی کاربرد دارند که برای پیشبینی با دقت بالا باید حجم زیادی از دادهها را مدیریت کرد. الگوریتم تقویت، یک الگوریتم یادگیری مجموعهای است که قدرت پیشبینی چندین تخمینگر پایه را برای بهبود استحکام ترکیب میکند.
به طور خلاصه، چندین پیشبینی ضعیف یا متوسط را برای ایجاد یک پیشبینی قوی ترکیب میکند. این الگوریتمهای تقویتکننده همیشه در مسابقات علم دیتا مانند Kaggle، AV Hackathon، CrowdAnalytix و غیره به خوبی کار میکنند. اینها ترجیح داده شدهترین الگوریتمهای یادگیری ماشینی امروزی هستند. از آنها به همراه کدهای پایتون و R برای دستیابی به نتایج دقیق استفاده کنید.
در ادامه بررسی میکنیم که چگونه یادگیری با نظارت، بدون نظارت و تقویتی در چند حوزه کلیدی مورد استفاده قرار میگیرند:
در یادگیری با نظارت، شما دادهها را در اختیار دارید، به این معنی که پاسخها از قبل برای هر مثال مشخص است. این روند آموزش مدل را آسانتر میکند. از سوی دیگر، یادگیری بدون نظارت با برچسب همراه نیست، بنابراین الگوریتم باید الگوها را به تنهایی کشف کند. یادگیری تقویتی هم دادههای دارای برچسبگذاری را نادیده میگیرد. در عوض، با انجام اقدامات، دریافت بازخورد از طریق پاداش یا مجازات و استفاده از آن بازخورد برای ادامهی بهبود، یاد میگیرد.
یادگیری با نظارت یک هدف روشن در ذهن دارد. شما سعی میکنید با استفاده از دادههای دارای برچسبگذاری، نتایج خاصی را پیشبینی کنید. یادگیری بدون نظارت آنچنان ساختارمند نیست. بیشتر در مورد کاوش دادهها برای کشف الگوها یا خوشههای پنهان است. کل هدف یادگیری تقویتی، حداکثرسازی پاداش در طول زمان، تنظیم اقدامات بر اساس اشتباهات و موفقیتهای گذشته برای انجام بهتر فرایند در طول زمان است.
یادگیری با نظارت، شامل ارائه نمونههای متعدد با یک نتیجه شناخته شده به مدل است و مدل برای دستیابی به نتایج از طریق چنین مثالهایی آموزش میبیند. یادگیری بدون نظارت الگوریتم را در نقش متفاوتی میگیرد: کشف ساختار درون دادهها. به عنوان مثال، پیدا کردن خوشهها یا وابستگیها. یادگیری تقویتی در رویکردش نسبتاً متفاوت است، از این جهت سیالتر است که از طریق تعامل با محیط تکامل مییابد و در حالی که از طریق استراتژی خود پیشرفت میکند، یاد میگیرد.
یادگیری با نظارت برای کارهایی مانند پیشبینی نتیجه و تشخیص الگو مناسب است. این الگوریتم شامل طبقهبندی و پیشبینی است. از سوی دیگر، یادگیری بدون نظارت در شناسایی گروههای درون دادهها، تشخیص نقاط پرت یا کاهش ابعاد دادهها بسیار مفید است. یادگیری تقویتی به ویژه در مناطقی مفید است که تصمیمات بلادرنگ مورد نیاز است، مانند رباتیک، بازیها و غیره که در آنها میتوان عملکرد را از طریق تجربه بهبود داد.
یادگیری با نظارت زمانی بهترین کار را انجام میدهد که دادههای دارای برچسبگذاری به راحتی در دسترس باشند و شما به پیشبینیهای دقیق نیاز دارید. اغلب در تشخیص اسپم یا هرزنامه، پیشبینی قیمت سهام و تشخیص پزشکی استفاده میشود.
یادگیری بدون نظارت هنگام کاوش دادههای جدید برای یافتن الگوها یا خوشهها، مانند تقسیمبندی مشتریان یا تشخیص ناهنجاری، عالی است.
یادگیری تقویتی برای سناریوهایی که شامل یادگیری مستمر هستند، مانند آموزش یک ربات برای هدایت یا بهینهسازی استراتژیهای بازی مناسب است. چون بازخورد را در طول زمان ارائه میدهند.
بیایید بررسی کنیم که هنگام انتخاب الگوریتمهای یادگیری ماشینی چه مواردی را باید در نظر بگیریم:
اولین چیزی که باید به آن نگاه کنید، تعیین نوع دادهای است که دارید. برای مثال، مجموعه دادههای دارای برچسبگذاری یا آنهایی که خروجیهای تعریفشده دارند را میتوان در اختیار روشهای با نظارت قرار داد. از سوی دیگر، در مورد دادههای بدون برچسب و به خصوص برای مکانیابی ساختارهای پنهان، رویکردهای بدون نظارت مورد نیاز است. در سناریوهایی که یادگیری از طریق تعامل انجام میشود هم، به نظر میرسد یادگیری تقویتی گزینه مفیدی باشد.
پس از آن، پیچیدگی مشکلی را که میخواهید حل کنید، مورد ارزیابی قرار دهید. در کارهایی که پیچیدگی کمتری دارند، الگوریتمهای سادهتر میتوانند کار را انجام دهند. با این حال، اگر شما با یک موضوع پیچیدهتر و دارای روابط پیچیده مقابله میکنید، ممکن است بخواهید از روشهای پیشرفتهتری مانند شبکههای عصبی یا تکنیکهای جمعی (ensemble techniques) استفاده کنید. فقط برای تلاش و تنظیم بیشتر آماده باشید.
عامل مهم دیگر قدرت محاسباتی است که در اختیار شماست. برخی از الگوریتمها، مانند مدلهای یادگیری عمیق، میتوانند از نوع منابع فشرده (resource-intensive) باشند و به سختافزار قدرتمندی نیاز دارند. اگر با منابع محدودی کار میکنید، الگوریتمهای سادهتر مانند رگرسیون لجستیک یا KNN همچنان میتوانند بدون اعمال فشار بیش از حد بر سیستم شما، نتایج محکمی ارائه دهند.
در نهایت، به این فکر کنید که آیا به الگوریتمی نیاز دارید که درک آن آسان باشد یا الگوریتمی که دقت را در اولویت قرار دهد، حتی اگر کمی ویژگی جعبه سیاه داشته باشد. درختهای تصمیمگیری و رگرسیون خطی به طور کلی برای تفسیر آسانتر هستند و برای توضیح به ذینفعان عالی عمل میکنند. در مقابل، مدلهای پیچیدهتر مانند شبکههای عصبی ممکن است دقت بهتری به شما بدهند، اما توضیح آن دشوارتر است.
تسلط بر این الگوریتمهای یادگیری ماشینی یک راه عالی برای ایجاد یک شغل در یادگیری ماشینی است. این رشته در حال گسترش است و هرچه زودتر دامنه ابزارهای یادگیری ماشین را درک کنید، زودتر میتوانید راهحلهایی برای مشکلات پیچیده کاری ارائه دهید.
سوالات متداول
الگوریتمهای یادگیری ماشینی، روشها و تکنیکهایی ریاضی هستند که به کامپیوترها اجازه میدهند از دادهها یاد بگیرند، الگوها را شناسایی کنند، پیشبینی کنند یا وظایفی را بدون برنامهنویسی صریح (explicit programming) انجام دهند.
بهترین الگوریتم ML برای پیشبینی به عوامل مختلفی مانند ماهیت مشکل، نوع دادهها و الزامات خاص بستگی دارد. الگوریتمهای محبوب برای کارهای پیشبینی شامل ماشینهای بردار پشتیبانی (SVM)ها یا Support Vector Machines، جنگلهای تصادفی و روشهای تقویت گرادیان (Gradient Boosting) است. با این حال، هر الگوریتم را باید بر اساس آزمایش و ارزیابی مسئله و مجموعه دادههای خاص مورد نظر انتخاب کنید.
شبکه عصبی کانولوشنال (CNN یا convnet) convolutional neural network نوعی شبکه عصبی مصنوعی است که برای کارهای مختلف، به ویژه تصاویر و فیلمها استفاده میشود. این بخشی از یادگیری ماشینی است و با انواع مختلف دادهها کار میکند.
منبع: simplilearn