آموزش یادگیری ماشین با مثال‌های کاربردی ــ بخش اول

۱۹۸۸ بازدید
آخرین به‌روزرسانی: ۱۸ تیر ۱۴۰۲
زمان مطالعه: ۱۲ دقیقه
آموزش یادگیری ماشین با مثال‌های کاربردی ــ بخش اول

مجموعه نوشته‌های «!Machine Learning Is Fun» که توسط Adam Geitgey طی هشت قسمت در وب‌سایت مدیوم منتشر شده از جمله مطالب پرطرفدار حوزه «هوش مصنوعی» (Artificial Intelligence | AI) و «یادگیری ماشین» (Machine Learning) است. از همین رو کلیه قسمت‌های این مجموعه مقاله، توسط تیم فرادرس فارسی‌سازی شده و در وبلاگ فرادرس منتشر می‌شود.

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

یادگیری ماشین چیست؟

مبنای شکل‌گیری ایده «یادگیری ماشین» (Machine Learning) الگوریتم‌هایی هستند که می‌توانند مطالب جالبی درباره یک مجموعه داده ورودی به کاربر بگویند. این کار بدون دریافت دستورالعمل گام به گام و کدهای برنامه‌نویسی که همه جزئیات را دیکته می‌کنند توسط الگوریتم انجام می‌شود. در یادگیری ماشین، به جای کد نویسی، داده‌ها به یک الگوریتم عمومی داده می‌شوند و این الگوریتم است که منطق خود را بر اساس داده‌ها می‌سازد.

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

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

 دو نوع از الگوریتم‌های یادگیری ماشین

می‌توان الگوریتم‌های یادگیری ماشین را در دو دسته نظارت شده و نظارت نشده (Supervised and Unsupervised) قرار داد. تفاوت این دو نوع الگوریتم، ساده اما بسیار مهم است.

یادگیری نظارت شده

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

بنابراین، هر بار که یک فرد خانه‌ای را در شهری می‌فروشد که مشاور املاک در آن قرار دارد، جزئیات آن را نوشته و برای سه ماه نگهداری می‌کند. از جمله جزئیاتی که می‌توان نوشت باید به تعداد اتاق خواب‌ها، متراژ خانه و محله اشاره کرد؛ البته مهم‌ترین مقداری که باید نوشته شود قیمت نهایی تمام شده خانه است.

این مجموعه داده آموزش مورد استفاده در این مثال است.

با استفاده از مجموعه داده آموزش، قرار است برنامه‌ای نوشته شود که قیمت دیگر خانه‌ها (خانه‌های جدید) را تخمین بزند.

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

به این روش «یادگیری ماشین» (Machine Learning)، «یادگیری نظارت شده» (Supervised Learning) گفته می‌شود. برای این امر باید قیمت خانه‌هایی که فروخته شده مشخص باشد، به عبارت دیگر، پاسخ مساله مشخص باشد و بر اساس پاسخ‌های موجود منطق برنامه شکل بگیرد.

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

اوه نه! دانش‌آموزان نمادهای حسابی را از پاسخنامه معلم حذف کرده‌اند. 

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

یادگیری نظارت نشده

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

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

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

این امر مانند آن است که یک لیست از اعداد به فرد داده و به او گفته شود که «مشخص نیست این اعداد چه معنایی دارند اما ممکن است الگو یا گروه‌های مشخصی در میان آن‌ها وجود داشته باشد که بتوانی کشف کنی!». بنابراین با این داده‌ها چه کار می‌توان کرد؟ می‌توان الگوریتمی داشت که به‌طور خودکار بخش‌های مختلف بازار را در میان داده‌ها شناسایی کند. مثلا ممکن است کشف شود که خریداران خانه در نزدیکی دانشگاه‌ها به خانه‌های کوچک با تعداد اتاق خواب زیاد و خریداران در حومه شهر به خانه‌هایی با سه اتاق خواب و متراژ بالا علاقمند هستند. شناختن انواع مشتریان می‌تواند به تلاش‌های بازاریابی مشاور املاک کمک کند.

دیگر مورد جالبی که می‌توان به‌طور خودکار تشخیص داد، خانه‌های «دور افتاده‌ای» (outlier) است که با دیگر خانه‌ها تفاوت دارند. منظور از دورافتادگی در اینجا الزاما فاصله جغرافیایی زیاد نیست. بلکه خانه‌هایی است که به لحاظ مشخصات با دیگر خانه‌های موجود تفاوت‌های قابل توجهی دارند. این خانه‌های دورافتاده ممکن است عمارت‌های بزرگی باشند که مشاور املاک می‌تواند فروش آن‌ها را به بهترین فروشندگان خود بسپارد زیرا کمیسیون آن‌ها بالاتر است.

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

آیا تخمین قیمت خانه واقعا «یادگیری»‌ است؟

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

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

البته، ۵۰ سال دیگر، الگوریتم‌های بسیار قدرتمندی برای هوش مصنوعی ایجاد خواهند شد و هر آنچه در این مطلب گفته شده عجیب و غریب به نظر خواهد آمد. تا حدی که ممکن است فرد حین خواندن مطلب از ربات خود بخواهد که برای او ساندویچ و نوشیدنی بیاورد.

نوشتن برنامه پیش‌بینی قیمت ملک

اکنون می‌توان برنامه‌ای نوشت که قیمت یک خانه جدید را بر اساس خانه‌های پیشین محاسبه کند. برای تخمین قیمت خانه می‌توان قوانینی مانند آنچه در ادامه می‌آید تدوین کرد.

1def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
2  price = 0
3  # In my area, the average house costs $200 per sqft
4  price_per_sqft = 200
5  if neighborhood == "hipsterton":
6    # but some areas cost a bit more
7    price_per_sqft = 400
8  elif neighborhood == "skid row":
9    # and some areas cost less
10    price_per_sqft = 100
11  # start with a base price estimate based on how big the place is
12  price = price_per_sqft * sqft
13  # now adjust our estimate based on the number of bedrooms
14  if num_of_bedrooms == 0:
15    # Studio apartments are cheap
16    price = price — 20000
17  else:
18    # places with more bedrooms are usually
19    # more valuable
20    price = price + (num_of_bedrooms * 1000)
21 return price

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

1def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
2  price = <computer, plz do some math for me>
3  return price

یک راهکار برای این مساله آن است که تعداد اتاق‌خواب‌ها، متراژ خانه و محله آن‌ها مشخص باشد. اگر بتوان تشخیص داد که هر مشخصه چه میزان روی قیمت نهایی موثر است، احتمال دارد یک نرخ مشخص برای عناصر جهت پیش‌بینی قیمت نهایی وجود داشته باشد. این راهکار، می‌تواند تابع اصلی را با همه if‌ها و else‌های آن به چیز ساده‌ای شبیه آنچه در ادامه آمده تقلیل دهد.

1def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
2 price = 0
3 # a little pinch of this
4 price += num_of_bedrooms * .841231951398213
5 # and a big pinch of that
6 price += sqft * 1231.1231231
7 # maybe a handful of this
8 price += neighborhood * 2.3242341421
9 # and finally, just a little extra salt for good measure
10 price += 201.23432095
11 return price

اعداد جادویی 841231951398213، 1231.1231231، 2.3242341421 و 201.23432095 در کد بالا قابل مشاهده هستند. این اعداد وزن‌های موجود هستند. اگر بتوان وزن‌های مناسب را برای هر خانه کشف کرد، تابع می‌تواند قیمت‌ها را به خوبی پیش‌بینی کند. یک روش ساده‌لوحانه برای به‌دست آوردن این وزن‌ها به صورت زیر است.

گام اول: با دادن وزن ۱.۰ به همه موارد، آغاز شود.

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

می‌توان از تابع برای پیش‌بینی قیمت هر خانه استفاده کرد.

برای مثال، اگر اولین خانه واقعا به قیمت ۲۵۰،۰۰۰ دلار فروخته شده اما تابع این مقدار را ۱۷۸،۰۰۰ دلار حدس می‌زند، قیمت ۷۲،۰۰۰ دلار کمتر در نظر گرفته شده است. اکنون مجموع مربع مقادیر کمتر محاسبه شده برای کلیه خانه‌های موجود در جدول باید محاسبه شوند. اگر ۵۰۰ خانه فروخته شده در مجموعه داده وجود داشته باشد و مجموع مربعات آن‌ها برابر با ۸۶،۱۲۳،۳۷۳ شود، این میزان خطای تابع است.

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

گام سوم: گام دو برای کلیه ترکیب‌های ممکن وزن‌ها تکرار شود. ترکیب همه وزن‌ها هزینه را به سمت صفر میل می‌دهد. هنگامی که هزینه صفر شد، در واقع مساله حل شده است!

لحظه خارق‌العاده

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

۱. پژوهش در بسیاری از زمینه‌ها (مانند زبان‌شناسی و ترجمه) طی ۴۰ سال گذشته نشان داده که این الگوریتم‌های یادگیری عمومی نسبت به حالتی که کلیه قوانین تک به تک توسط انسان نوشته شود بسیار کارآمدتر هستند. این نتایج موجب شده که رویکرد ساده‌لوحانه یادگیری ماشین، از راهکارهای انسانی پیشی بگیرد.

۲. تابعی که در نهایت آماده می‌شود بسیار ساده است. این تابع حتی نمی‌داند که فوت مربع (فوت مربع یکایی غیر اس‌آی و برابر با ۰٫۰۹۲۹۰۳۰۴ متر مربع است) یا تعداد اتاق خواب چیست. تنها چیزی که می‌داند این است که نیاز به برخی از این مقادیر برای حدس زدن پاسخ صحیح دارد.

۳. احتمال آن وجود دارد که انسان متوجه نشود چرا یک مجموعه از وزن‌ها خروجی مناسب دارند. بنابراین، کافیست تابعی نوشته شود که حتی اگر انسان از جزئیات چگونگی عملکرد آن آگاه نبود، خروجی صحیح داشته باشد.

۴. به جای استفاده از پارامترهایی مانند «sqft» و «num_of_bedrooms»، تابع هدف می‌تواند آرایه‌ای از اعداد باشد. مثالی را می‌توان تصور کرد که در آن هر عدد، روشنایی یک پیکسل را در تصویر ثبت شده به وسیله دوربین نصب شده در بالای یک خودرو پیش‌بینی می‌کند. در این مثال خروجی به جای «قیمت»، در واقع خروجی تابع «degrees_to_turn_steering_wheel» است. این تابع می‌تواند یک ماشین را به خودی خود هدایت کند. جالب است، نه؟!

نکاتی درباره «مورد آزمون قرار دادن کلیه اعداد» در گام سوم

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

راه اول، معادله ساده‌ای است که در زیر نمایش داده شده:

این تابع هزینه است.

اکنون، معادله بالا با استفاده از برخی مفاهیم مربوط به یادگیری ماشین بازنویسی شده (در حال حاضر می‌توان از موارد تخصصی مربوط به یادگیری ماشین چشم‌پوشی کرد):

θ وزن کنونی و (J(θ هزینه وزن‌های کنونی است.

این معادله در واقع نشان می‌دهد که خروجی تابع تخمین قیمت‌ها با توجه به مقادیر وزن‌هایی که در حال حاضر تنظیم شده‌اند چه میزان خطا دارد. اگر نمودار معادله هزینه برای همه مقادیر ممکن برای هزینه‌ها بر اساس دو ویژگی number_of_bedrooms و  sqft ترسیم شود، چیزی شبیه نمودار زیر خواهد بود:

نمودار تابع هزینه‌ها شبیه به یک کاسه و محور عمودی در آن نشانگر هزینه است.

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

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

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

بنابراین با محاسبه مشتق جزئی تابع هزینه با در نظر گرفتن کلیه نقاط موجود، می‌توان آن مقدار را از هر وزن کم کرد. این اقدام رسیدن به دره نمودار را یک گام نزدیک‌تر می‌کند. با استمرار این کار می‌توان به بهترین مقادیر موجود رسید. (شاید این کار بی معنی به‌نظر برسد. تا پایان این مطلب را به‌طور کامل مطالعه کنید).

این خلاصه‌ای است برای یکی از راه‌های یافتن بهترین وزن جهت تابع که به آن «گرادیان دسته‌ای نزولی» (batch gradient descent) گفته می‌شود. هنگام استفاده از یک کتابخانه «یادگیری ماشین» (Machine learning) برای حل مساله، همه این کارها از پیش انجام شده است. اما داشتن یک تصویر شفاف از اینکه چه اتفاقی می‌افتاد خالی از لطف نبوده و توصیه می‌شود.

از چه گام‌های دیگری می‌توان به سادگی عبور کرد؟

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

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

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

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

آیا یادگیری ماشین جادو است؟

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

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

مدل تنها می‌تواند روابطی که وجود دارند را شناسایی کند

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

چگونه می‌توان بیشتر درباره یادگیری ماشین آموخت؟

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

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

در عین حال، می‌توان با دانلود و نصب کتابخانه SciKit-Learn و کد زدن در زبان پایتون، با الگوریتم‌های گوناگون آشنا شد و آن‌ها را مورد آزمون قرار داد. SciKit-Learn یک کتابخانه برای زبان پایتون و در واقع جعبه سیاه الگوریتم‌های یادگیری ماشین و داده‌کاوی محسوب می‌شود.

قسمت بعدی این مطلب را از اینجا مطالعه کنید.

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شود:

^^

بر اساس رای ۲۲ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
Medium
۲ دیدگاه برای «آموزش یادگیری ماشین با مثال‌های کاربردی ــ بخش اول»

سلام، روز بخیر
ممنونم بابت توضیحات عالیتون
یک سوال داشتم، اگر یکسری داده رو بدیم به رگرسیون و نتایج رو برامون پیشبینی کنه، چطور باید تابعی که کد ماشین لرنینگ بر اساس اون داره پیشبینی رو انجام میده از کد بگیریم؟

واقعا بدون دونستن ریاضی(آمار و احتمالات و ریاضیات گسسته) وارد این حوزه شدن کار اشتباهیه
پیش نیاز اساسی یادگیری ماشین حداقل آمار و احتمال دبیرستانه و اگرم آمار و احتمال مهندسی بلد باشی دیگه عالی میشه
من خودم آمار رو با کتاب نیکوکار و گسسته رو با کتاب قلی زاده واسه یادآوری دارم میخونم

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *