نیچ کورس آموزش رایگان یادگیری ماشین با پایتون برای شما چه یک مبتدی باشید، چه یک حرفهای باتجربه، یک پایه و اساس قوی و محکم در اصول یادگیری ماشین با استفاده از پایتون برای شما فراهم می کند.
در این آموزش، ما موضوعات گستردهای را پوشش میدهیم، از جمله مبانی برنامهنویسی پایتون و یادگیری ماشین، پردازش داده، یادگیری تحت نظارت، یادگیری بدون نظارت و کلی موارد دیگر.
یادگیری ماشین چیست؟
یادگیری ماشین به توانایی کامپیوتر برای یادگیری بدون نیاز به برنامهریزی صریح اشاره دارد. به عبارت سادهتر:
یادگیری ماشین به معنای اتوماتیک کردن فرآیند یادگیری کامپیوترها بر اساس تجربیاتشان بدون نیاز به مداخله انسانی توصیف میشود.
یادگیری ماشین به فعالیتهای متعددی در زندگی روزمره ما میپردازد و شاید در جاهای زیادی به کار رود که انسان ممکن است حتی تصورش را هم نتواند بکند.
شروع کار با یادگیری ماشین
از برنامههای ترجمه تا وسایل نقلیه خودران، یادگیری ماشین در همه جا حضور دارد که روشی است برای حل مسائل و پاسخ به سوالات پیچیده. به طور اساسی، این فرآیند به آموزش یک نرمافزار به نام الگوریتم یا مدل برای انجام پیشبینیهای مفید از دادهها میپردازد.
در درس اول می خواهیم در مورد دستهبندی مسائل یادگیری ماشین و اصطلاحات مورد استفاده در این زمینه صحبت کنیم.
انواع مسائل یادگیری ماشین
برای دستهبندی مسائل یادگیری ماشین روشهای مختلفی وجود دارد. در اینجا، ما به مهمترین روشها پرداختهایم.
1- بر اساس ماهیت “سیگنال” یا “بازخورد” موجود برای یک سیستم یادگیری:
✅ یادگیری نظارت شده (Supervised Learning)
در این حالت، مدل یا الگوریتم با ورودیها و خروجیهای مورد نظر به عنوان نمونه مواجه میشود و سپس الگوها و ارتباطات بین ورودی و خروجی را پیدا میکند. فرآیند آموزش ادامه دارد تا مدل به دقت مطلوب در دادههای آموزش برسد.
مثالهای واقعی:
- طبقهبندی تصویر: پس از آموزش مدل با تصاویر و برچسبهای آنها، تصویر جدیدی را وارد میکنید و انتظار دارید کامپیوتر شیء جدید را تشخیص دهد.
- پیشبینی یا رگرسیون بازار: با آموزش کامپیوتر با دادههای تاریخی بازار و خواستن از کامپیوتر برای پیشبینی قیمت در آینده.
✅ یادگیری بدون نظارت (Unsupervised Learning)
در این حالت، برای الگوریتم یادگیری هیچ برچسبی داده نمیشود و او به تنهایی سعی در یافتن ساختار در ورودیها دارد.
مثالهای واقعی:
- خوشهبندی: شما از کامپیوتر میخواهید که دادههای مشابه را به خوشهها تفکیک کند، این امر در تحقیقات و علم بسیار مفید است.
- تجسم ابعاد بالا: استفاده از کامپیوتر برای کمک به تجسم دادههای با ابعاد بالا.
- مدلهای تولیدی: پس از اینکه یک مدل توزیع احتمال دادههای ورودی شما را فرا گیرد، قادر به تولید دادههای بیشتر خواهد بود که میتواند بسیار مفید باشد تا طبقهبندی کننده شما را قویتر کند.
یک نمودار ساده که مفهوم یادگیری نظارت شده و بدون نظارت را واضح میکند، در زیر نمایش داده شده است:
همانطور که به وضوح مشاهده میشود، دادهها در یادگیری نظارت شده دارای برچسب هستند، در حالی که دادههای یادگیری بدون نظارت بدون برچسب هستند.
✅ یادگیری نیمه نظارتی (Semi-supervised Learning)
مسائلی که دارای حجم زیادی از دادههای ورودی هستند و تنها برخی از این دادهها دارای برچسب هستند، به عنوان مسائل یادگیری نیمه نظارتی شناخته میشوند.
این مسائل در واقع در میانه بین دو نوع یادگیری نظارت شده و یادگیری بدون نظارت قرار دارند. به عنوان مثال، یک آرشیو تصاویر که تنها برخی از تصاویر دارای برچسب هستند (مثلاً سگ، گربه، انسان) و اکثریت آنها بدون برچسب هستند.
✅ یادگیری تقویتی (Reinforcement Learning)
یک برنامه کامپیوتر با یک محیط پویا تعامل میکند که در آن باید یک هدف خاص را انجام دهد (مانند رانندگی یک وسیله نقلیه یا بازی با یک حریف). این برنامه به عنوان بازخورد در طول مسیریابی در فضای مسئله خود، از طریق پاداشها و مجازاتها تغذیه میشود.
2- دو مورد از رایجترین موارد استفاده از یادگیری نظارت شده به شرح زیر هستند:
✅ طبقهبندی (Classification)
ورودیها به دو یا چند کلاس تقسیم میشوند و یادگیرنده باید یک مدل ایجاد کند که ورودیهای ناشناخته را به یک یا چندین (طبقهبندی چندبرچسبه) از این کلاسها تخصیص دهد و پیشبینی کند که آیا چیزی به یک کلاس خاص تعلق دارد یا خیر.
معمولاً این مسئله به شکل نظارتی حل میشود. مدلهای طبقهبندی به دو دسته دودویی (Binary Classification) و چندکلاسه (Multiclass Classification) تقسیم میشوند.
به عنوان مثال، فیلتر کردن اسپم یک مثال از دستهبندی دودویی است، جایی که ورودیها پیامهای ایمیل (یا دیگر پیامها) هستند و کلاسها “اسپم” و “غیر اسپم” هستند.
✅ رگرسیون (Regression)
یک مسئله یادگیری نظارت شده است که یک مقدار عددی را پیشبینی میکند و خروجیها پیوسته هستند. به عنوان مثال، پیشبینی قیمتهای سهام با استفاده از دادههای تاریخی.
یک مثال از طبقهبندی و رگرسیون با استفاده از دو مجموعه داده متفاوت، در شکل زیر نمایش داده شده است:
3- معمولترین موارد یادگیری بدون نظارت به شرح زیر هستند:
✅ خوشهبندی (Clustering)
در اینجا، یک مجموعه از ورودیها باید به گروهها تقسیم شود. برخلاف طبقهبندی، گروهها از پیش شناخته نشدهاند، که این امر معمولا وظیفه یادگیری بدون نظارت است.
✅ تخمین چگالی (Density Estimation)
کار آن در اینجا پیدا کردن توزیع ورودیها در فضا است.
✅ کاهش ابعاد (Dimensionality Reduction)
این وظیفه با تبدیل ورودیها به یک فضای با بعد کمتر، ورودیها را سادهتر میکند. یک مسئله مرتبط، مدلسازی موضوعی است که در آن یک لیست از اسناد زبان انسان به یک برنامه داده میشود و این برنامه مسئولیت دارد تا موضوعات مشابه را بیابد.
بر اساس این مسائل و وظایف یادگیری ماشین، یک سری الگوریتم وجود دارند که برای انجام این وظایف استفاده میشوند. برخی از الگوریتمهای معمول در یادگیری ماشین شامل:
- رگرسیون خطی،
- رگرسیون لجستیک،
- درخت تصمیم،
- ماشینهای بردار پشتیبانی (SVM)،
- نویس بیز،
- K-نزدیکترین همسایه (KNN)،
- K-Means،
- جنگل تصادفی
- و…
هستند.
پیشنهاد می کنیم الان بروید مقاله برترین الگوریتم های یادگیری ماشین را مطالعه کنید و مجدد به این صفحه برگردید و درس 1 را ادامه دهید.
اصطلاحات یادگیری ماشین
- مدل (Model): مدل، نمایش خاصی است که از دادهها با استفاده از برخی الگوریتمهای یادگیری ماشین ساخته میشود. مدل گاهی به عنوان فرضیه نیز نامیده میشود.
- ویژگی (Feature): ویژگی، خاصیت قابل اندازهگیری از دادهها است. مجموعهای از ویژگیهای عددی میتوانند به راحتی توسط یک بردار ویژگی توصیف شوند. بردارهای ویژگی به عنوان ورودی به مدل داده میشوند. به عنوان مثال، برای پیشبینی نوع یک میوه، ویژگیهایی مانند رنگ، بو، طعم و غیره وجود دارد. توجه: انتخاب ویژگیهای معنیدار، تمایزی و مستقل یک مرحله مهم برای الگوریتمهای موثر است. معمولا از یک استخراج کننده ویژگی برای استخراج ویژگیهای مرتبط از دادههای خام استفاده میشود.
- هدف یا برچسب (Target or Label): متغیر هدف یا برچسب، مقداری است که مدل باید پیشبینی کند. به عنوان مثال، در مورد پیشبینی نوع میوه که در بخش ویژگیها بحث شده است، برچسب با هر مجموعه ورودی نام میوه مثل سیب، پرتقال، موز و غیره خواهد بود.
- آموزش (Training): بناست تا مجموعهای از ورودیها (ویژگیها) و خروجیهای مورد انتظار (برچسبها) را به مدل دهیم. بنابراین پس از آموزش، مدلی (فرضیه) خواهیم داشت که سپس دادههای جدید را به یکی از دستههایی که در آموزش دیده است، مرتبط خواهد کرد.
- پیشبینی (Prediction): هنگامی که مدل آماده باشد، میتواند یک مجموعه ورودی را دریافت کرده و خروجی پیشبینی شده (برچسب) را ارائه دهد. اما حتماً مطمئن شوید که اگر ماشین بر روی دادههای جدید عملکرد خوبی داشته باشد، آنگاه میتوان گفت که ماشین عملکرد خوبی دارد.
شکل زیر، مفاهیم بالا را روشن میکند:
مراحل شروع کار با یادگیری ماشین
مراحل شروع کار با یادگیری ماشین به شرح زیر است:
- تعریف مسئله: مسئله مورد نظر خود را مشخص کنید و ارزیابی کنید که آیا از یادگیری ماشین می توان برای حل آن استفاده کرد یا خیر.
- جمعآوری داده: دادهها را جمعآوری کنید و آنها را برای آموزش مدل خود تمیز کنید. کیفیت مدل شما به کیفیت دادههای شما بستگی دارد.
- بررسی داده: از تجسم داده و روشهای آماری برای درک ساختار و روابط در دادههایتان استفاده کنید.
- پیشپردازش داده: دادهها را برای مدلسازی آماده کنید، از جمله نرمالسازی، تبدیل و پاکسازی دادهها به میزان نیاز.
- تقسیم داده: دادهها را به مجموعههای آموزش و آزمون تقسیم کنید تا مدل خود را اعتبارسنجی کنید.
- انتخاب مدل: یک مدل یادگیری ماشین مناسب برای مسئله و دادههای جمعآوری شده انتخاب کنید.
- آموزش مدل: از دادههای آموزش برای آموزش مدل استفاده کنید و پارامترهای آن را طوری تنظیم کنید تا به بالاترین دقت ممکن برسد.
- ارزیابی مدل: از دادههای آزمون برای ارزیابی عملکرد مدل و تعیین دقت آن استفاده کنید.
- تنظیم دقیق مدل: بر اساس نتایج ارزیابی، مدل را با تنظیم مجدد پارامترهای آن و تکرار مراحل آموزش تا دستیابی به سطح دقت مورد نظر بهبود دهید.
- راهاندازی مدل: مدل را به برنامه یا سیستم خود ادغام کنید تا برای دیگران قابل استفاده باشد.
- نظارت بر مدل: به صورت مداوم عملکرد مدل را نظارت کنید تا اطمینان حاصل کنید که با گذر زمان به نتایج دقیق ادامه میدهد.
مثال ساده
در ادامه، یک مثال ساده از یادگیری ماشین با پایتون آورده شده است که نشان میدهد چگونه یک مدل را برای پیشبینی گونه گلهای آیریس بر اساس اندازهگیریهای گلبرگ و سپال (کاسبرگ) آنها آموزش دهیم:
from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.datasets import load_iris # Load the iris dataset from scikit-learn iris = load_iris() X = iris.data y = iris.target # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y) # Create an SVM model and train it model = SVC() model.fit(X_train, y_train) # Evaluate the model on the test data accuracy = model.score(X_test, y_test) print('Test accuracy:', accuracy)
خروجی:
دقت داده ازمون:
0.9666666666666667
عالی