یادگیری نظارت شده چیست؟ | راهنمای Supervised Learning
یادگیری نظارتشده (Supervised Learning) یکی از پایههای اصلی یادگیری ماشین مدرن به شمار میرود و اساس بسیاری از کاربردهایی است که در زندگی روزمره ما، از پیشنهادهای شخصیسازیشده در پلتفرمهای مختلف گرفته تا تشخیصهای پزشکی تأثیرگذار هستند. اما یادگیری نظارت شده چیست؟
در هسته اصلی یادگیری نظارتشده، مدلی با استفاده از یک مجموعه داده برچسبگذاریشده آموزش داده میشود. در این حالت هر نمونه ورودی، همراه با خروجی درست و مشخص خود در اختیار مدل قرار میگیرد. این «نظارت» به مدل اجازه میدهد تا الگوها و ارتباطات پنهان میان ویژگیهای دادهها و مقادیر هدف را یاد بگیرد و بتواند برای دادههای جدید و دیدهنشده، پیشبینیهای دقیقتری انجام دهد. در این مطلب از آکادمی همراه اول با مفهوم یادگیری نظارت شده، نحوه عملکرد، انواع الگوریتمها و کاربردهای آن آشنا میشویم.
یادگیری نظارتشده یکی از انواع یادگیری ماشین است که در آن مدل با استفاده از دادههای برچسبگذاریشده (Labeled Data) آموزش میبیند. واژه «نظارتشده» به این معناست که الگوریتم در طول فرایند آموزش، از یک معلم یا ناظر داده دریافت میکند و دادههایی که در اختیار آن قرار میگیرد، پاسخ صحیح یا برچسب هر نمونه را نیز شامل میشوند.
هدف اصلی یادگیری نظارتشده این است که الگوریتم با آموزش روی یک مجموعه داده برچسبگذاریشده، رابطه میان ویژگیهای ورودی (Input Features) و برچسب یا خروجی (Output Labels) را یاد بگیرد. پس از پایان آموزش، مدل میتواند هنگام مواجهه با دادههای جدید و ناشناخته، پیشبینی یا دستهبندی دقیقی انجام دهد.
در این روش، مجموعه داده آموزشی از جفتهای ورودی و خروجی تشکیل شده است. ورودی همان دادهای است که الگوریتم آن را پردازش میکند و خروجی، پاسخ صحیح یا برچسب متناظر با آن است. الگوریتم تلاش میکند رابطهای میان این ورودیها و خروجیها بیاموزد تا بتواند برای دادههایی که قبلاً ندیده است نیز نتیجه درستی ارائه دهد.
فرض کنید یک معلم قصد دارد حرف A را به دانشآموزان مهدکودک آموزش دهد. او حرف A را با سیب (Apple) مرتبط میکند و به دانشآموزان نشان میدهد که این حرف نماینده کلمه Apple است. در اینجا، معلم نقش ناظر یا راهنما را دارد و با ارائه نمونههای برچسبگذاریشده، ارتباط میان حرف A و تصویر سیب را به دانشآموزان آموزش میدهد.
پس از مدتی، معلم تصاویر مختلفی را به دانشآموزان نشان میدهد که یکی از آنها تصویر سیب است و از آنها میخواهد سیب را تشخیص دهند. این مرحله مشابه آزمون یا ارزیابی در یادگیری ماشین است. اگر دانشآموزان بتوانند سیب را بهدرستی شناسایی کنند، یعنی رابطهای را که در مرحله آموزش یاد گرفتهاند، بهخوبی درک کردهاند و میتوانند آن را برای نمونههای جدید نیز به کار ببرند.
یادگیری نظارتشده در ماشین نیز دقیقاً به همین شکل عمل میکند. در این حالت الگوریتم ابتدا با کمک دادههای برچسبگذاریشده از یک «ناظر» آموزش میبیند و سپس از دانشی که آموخته است برای پیشبینی یا طبقهبندی دقیق دادههای جدید استفاده میکند.
اگرچه در یادگیری ماشین الگوریتمهای متنوعی برای یادگیری نظارتشده وجود دارد، اما تقریباً همه آنها از یک فرایند کلی و مشابه برای ساخت مدل پیشبینی استفاده میکنند که شامل یک فرایند ساختاریافته برای انتخاب و آمادهسازی دادهها، اجرای مدل و بررسی عملکرد آن است. مراحل این نوع از یادگیری عبارتند از:
برچسبگذاری دادهها
جمعآوری و پاکسازی دادهها
انتخاب و استخراج ویژگیها
تقسیم دادهها
انتخاب الگوریتم
آموزش مدل
ارزیابی مدل
تنظیم و بهینهسازی مدل
استقرار و نظارت بر مدل
بهبود و آموزش محدد در طول زمان
در ادامه مطلب یادگیری نظارت شده چیست، مراحل اصلی این فرایند را بهطور خلاصه بررسی میکنیم:
برچسبگذاری دادهها (Labeling)
دادههای برچسبگذاریشده برای یادگیری ارتباط درست بین ورودیها و خروجیها ضروری هستند. برای مثال، اگر قصد دارید مدلی برای تحلیل احساسات نظرات کاربران درباره محصولات بسازید، ابتدا باید ارزیابهای انسانی نظرات را بررسی و آنها را به دستههای مثبت، منفی یا خنثی برچسبگذاری کنند.
جمعآوری و پاکسازی دادهها
برای عملکرد بهینه مدل باید اطمینان حاصل کنید که دادههای آموزشی کامل، دقیق و نماینده مناسبی از مسئله موردنظر هستند. در این مرحله، دادهها با حذف موارد تکراری، اصلاح خطاها و مدیریت مقادیر گمشده برای تحلیل آماده میشوند.
انتخاب و استخراج ویژگیها (Feature Selection and Extraction)
در این مرحله، مهمترین ویژگیها و عوامل تأثیرگذار در دادهها شناسایی و انتخاب میشوند تا مدل عملکرد بهتر و کارآمدتری داشته باشد. همچنین ممکن است ویژگیهای جدیدی از دادههای موجود ایجاد شود تا الگوهای پنهان بهتر شناسایی شوند. برای مثال، تاریخ تولد به سن افراد تبدیل شود.
تقسیم دادهها
مجموعه داده به دو بخش دادههای آموزشی و دادههای آزمایشی اصلی تقسیم میشود. از دادههای آموزشی برای یادگیری مدل استفاده میشود و دادههای آزمایشی نشان میدهند که مدل تا چه اندازه میتواند روی دادههای جدید و دیدهنشده عملکرد خوبی داشته باشد.
انتخاب الگوریتم
با توجه به نوع مسئله و ویژگیهای دادهها، الگوریتم مناسب یادگیری نظارتشده انتخاب میشود. همچنین میتوان چند الگوریتم مختلف را اجرا و مقایسه کرد تا بهترین مدل انتخاب شود. در بخشهای بعدی مطلب یادگیری نظارت شده چیست الگوریتمهای مهم در این مدل را توضیح میدهیم.
آموزش مدل (Model Training)
در این مرحله، مدل با استفاده از دادههای آموزشی یاد میگیرد تا دقت پیشبینیهای خود را افزایش دهد. مدل با بررسی مداوم تفاوت بین پیشبینیهای خود و پاسخهای واقعی موجود در دادههای آموزشی، رابطه میان ورودیها و خروجیها را یاد میگیرد. بسته به پیچیدگی الگوریتم و حجم دادهها، آموزش مدل ممکن است از چند ثانیه تا چند روز طول بکشد.
ارزیابی مدل (Model Evaluation)
عملکرد مدل بررسی میشود تا مشخص شود آیا میتواند روی دادههای جدید، پیشبینیهای دقیق و قابل اعتمادی ارائه دهد یا خیر. این مرحله یکی از تفاوتهای مهم یادگیری نظارتشده با یادگیری بدون نظارت است. در یادگیری نظارتشده، خروجی مورد انتظار مشخص است و میتوان میزان موفقیت مدل را اندازهگیری کرد.
تنظیم و بهینهسازی مدل (Model Tuning)
در این مرحله، پارامترهای مدل تنظیم و مدل دوباره آموزش داده میشود تا عملکرد آن بهتر شود. این فرایند که به آن تنظیم ابرپارامترها گفته میشود، به بهینهسازی مدل و جلوگیری از مشکلاتی مانند بیشبرازش (Overfitting) کمک میکند. این فرایند باید پس از هر تغییر، دوباره بررسی و تکرار شود.
استقرار و نظارت بر مدل (Deployment and Monitoring)
پس از آماده شدن مدل، آن را در یک محیط واقعی به کار میگیریم تا روی دادههای جدید پیشبینی انجام دهد. برای مثال، یک مدل تشخیص ایمیلهای اسپم میتواند برای فیلتر کردن پیامها استفاده و عملکرد آن بهطور مداوم بررسی و در صورت نیاز اصلاح شود.
بهبود و آموزش مجدد در طول زمان (Fine-tuning Over Time)
با جمعآوری دادههای واقعی بیشتر، مدل بهصورت مداوم آموزش داده میشود تا دقت آن افزایش پیدا کند و بتواند با تغییرات جدید در دادهها و شرایط واقعی سازگار باقی بماند.
انواع یادگیری نظارت شده: رگرسیون و طبقهبندی
در بخش قبلی یاد گرفتیم یادگیری نظارت شده چیست و در این بخش انواع آن را بررسی میکنیم. مسائل یادگیری نظارتشده را میتوان بهطور کلی به دو دسته اصلی طبقهبندی (Classification) و رگرسیون (Regression) تقسیم کرد. انتخاب هر یک از این دو روش به نوع مسئله و خروجی مورد انتظار بستگی دارد. اگر هدف، پیشبینی یک دسته یا برچسب مشخص باشد، از روشهای طبقهبندی استفاده میشود. اما اگر هدف، پیشبینی یک مقدار عددی و پیوسته باشد، رگرسیون گزینه مناسبتری است.
آشنایی با تفاوت این دو دسته، به انتخاب الگوریتم مناسب و طراحی مدلهای دقیقتر در پروژههای یادگیری ماشین کمک میکند. جدول زیر تفاوت این رو دسته را نشان میدهد.
ویژگی
طبقهبندی
رگرسیون
هدف
پیشبینی برچسبها یا کلاسهای گسسته و دستهبندیشده
پیشبینی مقادیر عددی و پیوسته
نوع خروجی
دستهها یا کلاسها (مانند: «هرزنامه/غیرهرزنامه»، «گربه/سگ»، «A/B/C»)
رگرسیون یکی از ارکان اصلی یادگیری نظارتشده است که برپیشبینی مقادیر عددی و پیوسته تمرکز دارد. رگرسیون به پرسشهایی مانند «چقدر؟» یا «چه تعداد؟» پاسخ میدهد. هدف یک مدل رگرسیون، تخمین یک متغیر هدف پیوسته است.
برای مثال، در پیشبینی قیمت یک خانه، پیشبینی نوسانات بازار سهام یا تعیین دوز مناسب یک دارو میتوان از این مدل استفاده کرد. مدل با تحلیل دادههای تاریخی که در آنها هم ویژگیهای ورودی و هم مقادیر واقعی متغیر هدف مشخص هستند، رابطه میان آنها را یاد میگیرد.
رگرسیون در دنیای واقعی کاربردهای گسترده و ارزشمندی دارد. برای مثال در علم اقتصاد از آن برای پیشبینی نرخ رشد تولید ناخالص داخل یا نرخ تورم استفاده میشود. در علوم محیطزیست، رگرسیون برای پیشبینی وضعیت آبوهوا یا مدلسازی میزان آلودگی به کار میرود. توانایی پیشبینی دقیق مقادیر پیوسته، رگرسیون را به ابزاری ارزشمند برای تحلیل داده و تصمیمگیری در تمام صنایع تبدیل کرده است.
برای مسائل رگرسیون الگوریتمهای مختلفی توسعه یافتهاند که هرکدام بر پایه اصول ریاضی متفاوتی عمل میکنند و برای انواع خاصی از دادهها و مسائل مناسب هستند. آشنایی با این الگوریتمها به شما کمک میکند تا با توجه به مسئله و دادههای خود، مناسبترین روش را برای مدلسازی و پیشبینی انتخاب کنید. موارد زیر از انواع رگرسیون محسوب میشوند:
رگرسیون خطی
رگرسیون چندجملهای
رگرسیون ریج و لاسو
درخت تصمیم رگرسیون
جنگل تصادفی برای رگرسیون
اگر در ادامه مطلب یادگیری نظارت شده چیست با ما همراه باشید انواع الگوریتمهای رگرسیون را توضیح میدهیم.
رگرسیون خطی (Linear Regression)
رگرسیون خطی یکی از سادهترین و بنیادیترین الگوریتمهای رگرسیون است. این روش با برازش یک معادله خطی روی دادههای مشاهدهشده، رابطه میان متغیر وابسته و یک یا چند متغیر مستقل را مدلسازی میکند. هدف آن، یافتن خط یا در دادههای چندبعدی، ابرصفحهای است که مجموع مربع اختلاف بین مقادیر واقعی و مقادیر پیشبینیشده را به حداقل برساند. رگرسیون خطی به دلیل سادگی، سرعت بالا و تفسیرپذیری مناسب، یکی از پرکاربردترین الگوریتمهای رگرسیون محسوب میشود. با این حال، این روش فرض میکند که میان ویژگیها و متغیر هدف رابطهای خطی وجود دارد. بنابراین، در مسائل پیچیده و غیرخطی عملکرد مطلوبی ندارد. از این الگوریتم برای پیشبینی فروش، پیشبینی روندها و مدلسازیهای آماری ساده استفاده میشود.
رگرسیون چندجملهای (Polynomial Regression)
رگرسیون چندجملهای نسخه توسعهیافته رگرسیون خطی است که در آن رابطه میان متغیرهای مستقل و متغیر وابسته بهصورت یک تابع چندجملهای مدلسازی میشود. این ویژگی باعث میشود الگوریتم بتواند روابط غیرخطی و منحنیشکل را که رگرسیون خطی قادر به مدلسازی آنها نیست، یاد بگیرد. البته هرچه درجه چندجملهای بزرگتر باشد، احتمال بیشبرازش نیز افزایش مییابد و تفسیر نتایج مدل دشوارتر میشود. این روش در مسائلی که رابطه میان متغیرها ماهیتی غیرخطی دارد، مانند مدلسازی نرخ رشد یا برخی پدیدههای فیزیکی، کاربرد زیادی دارد.
رگرسیون ریج و لاسو
این دو الگوریتم نسخههای توسعهیافته رگرسیون خطی هستند که از تکنیکی به نام منظمسازی (Regularization) استفاده میکنند. در این روشها، جملهای به تابع هزینه اضافه میشود تا از بزرگ شدن بیش از حد ضرایب مدل جلوگیری کرده و احتمال بیشبرازش را کاهش دهد.
رگرسیون ریج (Ridge Regression یا L2 Regularization): در این روش، جریمهای برابر با مربع مقدار ضرایب به تابع هزینه اضافه میشود. در نتیجه، ضرایب مدل به سمت صفر کوچک میشوند، اما معمولاً هیچگاه دقیقاً برابر صفر نخواهند شد.
رگرسیون لاسو (Lasso Regression یا L1 Regularization): در این روش، جریمه بر اساس قدر مطلق ضرایب محاسبه میشود. برخلاف ریج، لاسو میتواند برخی ضرایب را کاملاً صفر کند و به همین دلیل، علاوه بر جلوگیری از بیشبرازش، نوعی انتخاب ویژگی نیز انجام میدهد.
هر دو روش برای مقابله با همخطی چندگانه (Multicollinearity) میان ویژگیها و همچنین افزایش توانایی تعمیم مدل بسیار مؤثر هستند.
درخت تصمیم رگرسیون (Decision Tree Regressor)
این الگوریتم از نظر ساختار شبیه درخت تصمیم در مسائل طبقهبندی است، اما بهجای پیشبینی یک کلاس، یک مقدار عددی پیوسته را پیشبینی میکند. درخت تصمیم با تقسیم دادهها بر اساس مقادیر ویژگیها، آنها را به شاخههای مختلف هدایت و در هر گره نهایی (Leaf Node)، میانگین مقادیر متغیر هدف را بهعنوان خروجی پیشبینی میکند. این مدل بهراحتی قابل درک و نمایش است و میتواند روابط پیچیده و غیرخطی را نیز یاد بگیرد. با این حال، در صورت رشد بیش از حد ممکن است دچار بیشبرازش شود و نسبت به تغییرات جزئی دادهها حساس باشد. این روش در مسائلی مانند پیشبینی میزان هزینهکرد مشتریان یا برآورد ارزش املاک کاربرد دارد.
جنگل تصادفی برای رگرسیون (Random Forest Regressor)
جنگل تصادفی یک روش یادگیری تجمیعی است که بهجای استفاده از یک درخت تصمیم، تعداد زیادی درخت رگرسیون را آموزش میدهد و سپس با میانگینگیری از پیشبینیهای آنها، مقدار نهایی را محاسبه میکند. این رویکرد باعث میشود احتمال بیشبرازش که در درختهای تصمیم منفرد وجود دارد، به میزان قابلتوجهی کاهش یابد و دقت پیشبینی افزایش پیدا کند. رگرسیون جنگل تصادفی در برابر نویز مقاوم است، میتواند تعداد زیادی ویژگی را مدیریت و میزان اهمیت هر ویژگی را نیز مشخص میکند. به همین دلیل، یکی از قدرتمندترین الگوریتمها برای مسائل پیچیده رگرسیون به شمار میرود و در کاربردهایی مانند پیشبینی قیمت سهام، برآورد مصرف انرژی و پیشبینی پاسخهای زیستی مورد استفاده قرار میگیرد.
طبقهبندی یکی از پرکاربردترین مسائل در یادگیری نظارتشده است. هدف این روش، پیشبینی یک برچسب یا دسته مشخص برای هر داده ورودی است. برخلاف رگرسیون که خروجی آن مقادیر پیوسته و عددی است، در طبقهبندی خروجی مدل از دستهها یا کلاسهای مجزا تشکیل میشود.
برای مثال، فرض کنید مجموعهای از ایمیلها در اختیار دارید و میخواهید مشخص کنید که هر ایمیل جدید (Spam) یا (Not Spam) است. این یکی از شناختهشدهترین نمونههای مسئله طبقهبندی محسوب میشود. در این روش، مدل با استفاده از ایمیلهایی که از قبل برچسبگذاری شدهاند (هرزنامه یا غیرهرزنامه)، آموزش میبیند و پس از یادگیری الگوهای موجود، میتواند ایمیلهای جدید را نیز بهدرستی دستهبندی کند.
مسائل طبقهبندی را میتوان به سه دسته اصلی تقسیم کرد:
طبقهبندی دودویی (Binary Classification): در این نوع، مدل باید یکی از دو کلاس را پیشبینی کند. برای مثال: بله یا خیر، درست یا نادرست.
طبقهبندی چندکلاسه (Multi-class Classification): در این حالت، تعداد کلاسها بیش از دو مورد است، اما هر نمونه فقط به یک کلاس تعلق دارد. برای مثال، مدلی که تصاویر میوهها را به یکی از دستههای سیب، موز یا پرتقال طبقهبندی میکند.
طبقهبندی چندبرچسبی (Multi-label Classification): در این نوع، یک نمونه میتواند همزمان به چند کلاس تعلق داشته باشد. برای مثال، یک تصویر ممکن است هم شامل سگ و هم گربه باشد. بنابراین مدل باید هر دو برچسب را برای آن پیشبینی کند.
برای حل مسائل طبقهبند الگوریتمهای متنوعی توسعه یافتهاند که هرکدام با رویکردی متفاوت، مرزهای تصمیمگیری را یاد میگیرند و بر اساس آنها پیشبینی انجام میدهند. انتخاب بهترین الگوریتم به عواملی مانند نوع دادهها، پیچیدگی مسئله و میزان اهمیت تفسیرپذیری مدل بستگی دارد. از مهمترین انواع الگوریتمهای طبقهبندی میتوان به موارد زیر اشاره کرد:
رگرسیون لجستیک
درخت تصمیم
ماشین بردار پشتیبان
نزدیکترین همسایهها
جنگل تصادفی
در ادامه مطلب یادگیری نظارت شده چیست با رایجترین الگوریتمهای طبقهبندی آشنا میشویم.
رگرسیون لجستیک (Logistic Regression)
با وجود اینکه نام این الگوریتم «رگرسیون» است، یکی از پرکاربردترین الگوریتمهای طبقهبندی محسوب میشود. این روش با استفاده از تابع سیگموید، احتمال تعلق یک نمونه به یک کلاس خاص را محاسبه میکند.
رگرسیون لجستیک الگوریتمی ساده، سریع و قابل تفسیر است و به همین دلیل معمولاً بهعنوان یک مدل پایه مورد استفاده قرار میگیرد. علاوه بر پیشبینی کلاس، احتمال تعلق هر نمونه به هر کلاس را نیز ارائه میدهد.
البته این الگوریتم فرض میکند که میان ویژگیها و لگاریتم نسبت شانس (Log-Odds) رابطهای خطی وجود دارد. بنابراین، در مسائل پیچیده و غیرخطی ممکن است عملکرد مطلوبی نداشته باشد. از این الگوریتم برای تشخیص ایمیلهای هرزنامه، ارزیابی ریسک اعتباری و تشخیص بیماریها استفاده میشود.
درخت تصمیم
درخت تصمیم با تقسیم مداوم دادهها بر اساس مهمترین ویژگیها، ساختاری شبیه یک درخت ایجاد میکند و در نهایت به تصمیم یا پیشبینی نهایی میرسد. این الگوریتم به دلیل ساختار ساده و قابلفهم خود، یکی از تفسیرپذیرترین مدلهای یادگیری ماشین است. همچنین میتواند هم با دادههای عددی و هم دادههای دستهبندیشده کار کند و معمولاً به پیشپردازش پیچیدهای نیاز ندارد. با این حال، مانند درخت تصمیم در رگرسیون، اگر درخت بیش از حد رشد کند، ممکن است دچار بیشبرازش شود و نسبت به تغییرات جزئی در دادهها حساس باشد. از این الگوریتم برای پیشبینی ریزش مشتریان، سیستمهای پشتیبان تصمیمگیری پزشکی و تحلیل رفتار مشتریان استفاده میشود.
ماشین بردار پشتیبان (Support Vector Machine یا SVM)
هدف ماشین بردار پشتیبان یافتن بهترین ابرصفحه برای جداسازی کلاسهای مختلف است، بهگونهای که فاصله میان نزدیکترین نمونههای هر کلاس (که به آنها بردارهای پشتیبان گفته میشود) حداکثر باشد. SVM در دادههای با ابعاد بالا عملکرد بسیار خوبی دارد و با استفاده از توابع کرنل مانند کرنل شعاعی یا چندجملهای، میتواند روابط غیرخطی را نیز مدلسازی کند.
با وجود دقت بالا، آموزش این مدل روی مجموعهدادههای بزرگ ممکن است زمانبر باشد و تفسیر نتایج آن نسبت به مدلهای سادهتر دشوارتر است. از این الگوریتم در طبقهبندی تصاویر، دستهبندی متون و تحلیل دادههای زیستی استفاده میشود.
نزدیکترین همسایهها (K-Nearest Neighbors یا KNN)
الگوریتم KNN یکی از سادهترین روشهای طبقهبندی است. این الگوریتم برای پیشبینی کلاس یک نمونه جدید، k نزدیکترین نمونه موجود در دادههای آموزشی را پیدا میکند و کلاس غالب میان آنها را بهعنوان خروجی انتخاب میکند.
KNN به دلیل سادگی پیادهسازی و توانایی مدلسازی مرزهای تصمیم پیچیده، محبوبیت زیادی دارد. اما از آنجا که باید تمام دادههای آموزشی را ذخیره و هنگام پیشبینی بررسی کند، در مجموعهدادههای بزرگ سرعت کمتری دارد. همچنین عملکرد آن به انتخاب مقدار k و معیار محاسبه فاصله وابسته است. از این الگوریتم برای سیستمهای پیشنهاددهنده، تشخیص الگو و شناسایی ناهنجاریها استفاده میشود.
جنگل تصادفی
جنگل تصادفی یکی از روشهای یادگیری تجمیعی است. این الگوریتم بهجای استفاده از یک درخت تصمیم، تعداد زیادی درخت تصمیم را آموزش و سپس با ترکیب نتایج آنها، پیشبینی نهایی را انجام میدهد. در مسائل طبقهبندی، کلاس نهایی بر اساس رأی اکثریت درختها انتخاب و در مسائل رگرسیون، میانگین پیشبینی همه درختها محاسبه میشود.
استفاده از چندین درخت کمک میکند احتمال بیشبرازش نسبت به یک درخت تصمیم منفرد بهطور قابلتوجهی کاهش یابد و معمولاً دقت مدل نیز افزایش پیدا کند. این الگوریتم در برابر نویز مقاوم است و میتواند تعداد زیادی ویژگی را بهخوبی مدیریت کند. البته، به دلیل ساختار پیچیدهتر، تفسیر نتایج آن نسبت به یک درخت تصمیم ساده دشوارتر است و به منابع محاسباتی بیشتری نیاز دارد. از این الگوریتم برای تشخیص تقلب در تراکنشهای مالی، تحلیل تصاویر پزشکی، پیشبینی رفتار مشتریان و مسائل طبقهبندی با دادههای پیچیده استفاده میشود.
استفاده از یادگیری نظارت شده در یادگیری ماشین مزایا و معایبی دارد که قبل از انتخاب آن باید در نظر گرفته شود. در ادامه این مطلب توضیح میدهیم مزایا و معایب یادگیری نظارت شده چیست. برای انتخاب مدل مناسب مراحل زیر را انجام دهید:
مزایای یادگیری نظارت شده چیست ؟
یادگیری نظارتشده مزایای زیادی دارد که از میان آنها میتوان به یادگیری آسان مدل اشاره کرد. در ادامه تعدادی از این مزیتها را بررسی میکنیم.
در یادگیری نظارتشده، از همان ابتدا کلاسها یا دستههای موجود در دادههای آموزشی بهطور دقیق مشخص هستند.
درک فرایند یادگیری در این روش نسبتاً ساده است. زیرا میدانیم مدل با استفاده از دادههای برچسبگذاریشده آموزش میبیند. در مقابل، در یادگیری بدون نظارت، درک اینکه مدل دقیقاً چگونه الگوها را کشف میکند، دشوارتر است.
پیش از شروع آموزش، میتوان تعداد کلاسهای موجود در مجموعه داده را بهطور دقیق مشخص کرد.
همچنین میتوان تعریف روشنی از هر کلاس ارائه داد و مدل را بهگونهای آموزش داد که مرز تصمیمگیری دقیقی برای تفکیک کلاسهای مختلف ایجاد کند.
پس از پایان فرایند آموزش، نیازی به نگهداری کل دادههای آموزشی در حافظه نیست. زیرا مدل، دانشی را که از دادهها آموخته است بهصورت پارامترها یا روابط ریاضی ذخیره میکند.
معایب یادگیری نظارت شده چیست ؟
یادگیری نظارتشده با وجود مزایای فراوان، محدودیتهایی نیز دارد و به همین دلیل برای حل برخی از مسائل پیچیده یادگیری ماشین گزینه مناسبی نیست. از محدودیتهای یادگیری نظارت شده میتوان به موارد زیر اشاره کرد:
برخلاف یادگیری بدون نظارت، این روش نمیتواند اطلاعات یا الگوهای ناشناخته را بهطور خودکار از دادههای آموزشی کشف کند.
یادگیری نظارتشده قادر نیست بدون داشتن برچسب، دادهها را بر اساس ویژگیهایشان بهصورت خودکار خوشهبندی یا دستهبندی کند. این قابلیت در یادگیری بدون نظارت وجود دارد.
در مسائل طبقهبندی، اگر دادهای به مدل داده شود که به هیچیک از کلاسهای موجود در دادههای آموزشی تعلق نداشته باشد، مدل ممکن است آن را به اشتباه در یکی از کلاسهای شناختهشده قرار دهد. برای مثال، اگر یک مدل تنها با تصاویر گربه و سگ آموزش دیده باشد، در صورت دریافت تصویر زرافه احتمال دارد آن را به اشتباه «گربه» یا «سگ» تشخیص دهد.
به همین ترتیب، اگر مجموعه داده آموزشی شامل نمونههای کافی از یک کلاس نباشد، مدل پس از آموزش ممکن است هنگام مواجهه با نمونههای جدید آن کلاس، نتواند برچسب صحیح را پیشبینی کند.
برای آموزش یک مدل دقیق، باید نمونههای کافی و باکیفیت از هر کلاس در اختیار الگوریتم قرار گیرد. در غیر این صورت، دقت مدل کاهش مییابد. تهیه و برچسبگذاری چنین دادههایی، بهویژه در مجموعهدادههای بزرگ، فرایندی زمانبر و پرهزینه است.
آموزش مدلهای یادگیری نظارتشده معمولاً به توان پردازشی بالا و زمان قابلتوجهی نیاز دارد. علاوه بر این، در مجموعهدادههای بسیار بزرگ، حتی فرایند پیشبینی نیز میتواند از نظر محاسباتی پرهزینه باشد.
در نهایت، همیشه امکان ارائه حجم زیادی از دادههای برچسبگذاریشده وجود ندارد. در بسیاری از مسائل، مدل باید بتواند بخشی از الگوها را بهطور مستقل از دادهها یاد بگیرد.
جایگاه پایتون در یادگیری نظارت شده چیست ؟
پایتون به دلیل سادگی، خوانایی و انعطافپذیری بالا شناخته میشود و همین ویژگیها آن را به زبانی ایدهآل برای افراد مبتدی و همچنین توسعهدهندگان حرفهای تبدیل کرده است. کتابخانهها و فریمورکهای گسترده پایتون، مانند TensorFlow، PyTorch و Scikit-learn، نقش این زبان را بهعنوان یکی از پایههای اصلی توسعه یادگیری ماشین تثبیت کردهاند.
برنامههای یادگیری ماشین بهطور کلی از ۴ مرحله اصلی تشکیل میشوند. در پایتون، هر یک از این مراحل توسط کتابخانههای قدرتمند و توسعهیافتهای پشتیبانی میشوند:
مرحله اول – جمعآوری و آمادهسازی دادهها: این مرحله با استفاده از کتابخانههای NumPy و Pandas انجام میشود.
مرحله دوم – انتخاب مدل یا الگوریتم مناسب: کتابخانه Scikit-learn برای انتخاب و پیادهسازی مدلهای یادگیری ماشین استفاده میشود.
مرحله سوم – آموزش مدل با استفاده از دادههای تاریخی: در این مرحله نیز کتابخانه Scikit-learn برای آموزش مدل به کار میرود.
مرحله چهارم – پیشبینی نتایج و ارزیابی دقت مدل: در این مرحله، مدل آموزشدیده برای پیشبینی خروجیها استفاده شده و میزان دقت آن با دادههای آزمایشی بررسی میشود. کتابخانههای Matplotlib و Scikit-learn ابزارهای موردنیاز این مرحله را فراهم میکنند.
مثال طبقهبندی در پایتون با Scikit-learn
بیایید مفاهیم تئوری را در عمل به کار بگیریم و با استفاده از پایتون و کتابخانه پرکاربرد Scikit-learn، یک مدل کامل طبقهبندی بسازیم. در این مثال از دیتاست معروف Iris استفاده میکنیم که یکی از نمونههای کلاسیک برای مسائل طبقهبندی چندکلاسه به حساب میآید. هدف مدل، پیشبینی گونه گل زنبق بر اساس اندازهگیریهای مربوط به کاسبرگ و گلبرگ آن است.
در این مثال، مراحل مختلف از بارگذاری و تقسیم دادهها گرفته تا آموزش مدل با رگرسیون لجستیک، انجام پیشبینی و ارزیابی عملکرد مدل با استفاده از معیارهایی که پیشتر بررسی کردیم، قدمبهقدم طی میشود. هدف، ارائه یک نمونه واضح و قابل اجراست که بتوانید از آن بهعنوان الگویی برای پیادهسازی مسائل طبقهبندی خود استفاده کنید.
Python
# Import necessary libraries
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
import matplotlib.pyplot as plt
import seaborn as sns
# Load the Iris dataset
# The Iris dataset is a classic multi-class classification dataset.
# It contains 150 samples of iris flowers, with 4 features and 3 target classes (species).
iris = load_iris()
X = iris.data # Features (sepal length, sepal width, petal length, petal width)
y = iris.target # Target (species: 0, 1, 2 representing setosa, versicolor, virginica)
# Display basic information about the dataset
print("Features shape:", X.shape)
print("Target shape:", y.shape)
print("Target names:", iris.target_names)
# Split the dataset into training and testing sets
# We use 80% of the data for training and 20% for testing.
# stratify=y ensures that the proportion of target classes is the same in both train and test sets.
# random_state for reproducibility.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)
print(f"Training set size: {X_train.shape[0]} samples")
print(f"Testing set size: {X_test.shape[0]} samples")
# Initialize and train a Logistic Regression model
# Logistic Regression is a good baseline for classification tasks.
# max_iter is increased to ensure convergence for some datasets.
model = LogisticRegression(max_iter=200, random_state=42)
model.fit(X_train, y_train)
# Make predictions on the test set
y_pred = model.predict(X_test)
# Evaluate the model's performance
print("\n--- Model Evaluation ---")
# Accuracy Score
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.4f}")
# Classification Report
# Provides precision, recall, f1-score, and support for each class.
print("\nClassification Report:")
print(classification_report(y_test, y_pred, target_names=iris.target_names))
# Confusion Matrix
# Visualizes the performance of an algorithm, showing true vs. predicted labels.
cm = confusion_matrix(y_test, y_pred)
print("\nConfusion Matrix:")
print(cm)
# Plotting the Confusion Matrix for better visualization
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',
xticklabels=iris.target_names, yticklabels=iris.target_names)
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
plt.title('Confusion Matrix for Iris Classification')
plt.show()
# Example of predicting a single new sample (hypothetical)
# Let's create a dummy new sample with 4 features
new_sample = np.array([[5.1, 3.5, 1.4, 0.2]]) # Features similar to Iris setosa
predicted_species_idx = model.predict(new_sample)[0]
predicted_species_name = iris.target_names[predicted_species_idx]
print(f"\nPredicted species for new sample {new_sample[0]}: {predicted_species_name}")
# Get prediction probabilities for the new sample
predicted_probabilities = model.predict_proba(new_sample)[0]
print(f"Prediction probabilities for new sample: {predicted_probabilities}")
for i, prob in enumerate(predicted_probabilities):
print(f" {iris.target_names[i]}: {prob:.4f}")
مثال رگرسیون در پایتون با Scikit-learn
حال یک مثال عملی از رگرسیون را با استفاده از پایتون و کتابخانه Scikit-learn بررسی میکنیم. برای سادهتر شدن مثال، میتوان از یک مجموعهداده مصنوعی استفاده کرد تا بتوان رابطه خطی میان دادهها و میزان برازش مدل را بهوضوح دید. هدف این است که یک متغیر هدف پیوسته را بر اساس یک یا چند ویژگی ورودی پیشبینی کنیم.
در این مثال، مراحل اصلی شامل ایجاد مجموعهداده، تقسیم آن به دادههای آموزشی و آزمایشی، آموزش مدل رگرسیون خطی، انجام پیشبینی و ارزیابی عملکرد مدل با استفاده از معیارهای رگرسیون که پیشتر بررسی کردیم، خواهد بود. همچنین خط رگرسیون را بهصورت بصری نمایش میدهیم تا درک بهتری از میزان توانایی مدل در شناسایی روند موجود در دادهها داشته باشیم. این مثال عملی، پایه مناسبی برای استفاده از روشهای رگرسیون در مسائل مختلفی فراهم میکند که هدف آنها پیشبینی مقادیر پیوسته است.
ابتدا، دادههای مصنوعی ایجاد میکنیم که یک روند خطی مشخص همراه با مقداری نویز دارند. این شرایط تا حدی مشابه دادههای دنیای واقعی است. سپس مراحل استاندارد فرایند یادگیری ماشین را به این شکل دنبال میکنیم: تقسیم دادهها، آموزش مدل LinearRegression، انجام پیشبینی و در نهایت محاسبه معیارهای MAE، MSE، RMSE و R² برای سنجش دقت مدل. در پایان نیز با نمایش مقادیر واقعی در مقابل مقادیر پیشبینیشده، میتوانیم ارزیابی بصری و بهتری از میزان برازش مدل داشته باشیم.
Python
# Import necessary libraries
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
import matplotlib.pyplot as plt
import seaborn as sns
# Generate a synthetic dataset for regression
# We'll create a simple linear relationship with some random noise.
np.random.seed(42) # for reproducibility
X = 2 * np.random.rand(100, 1) # 100 samples, 1 feature
y = 4 + 3 * X + np.random.randn(100, 1) # y = 4 + 3x + noise
# Display basic information about the synthetic dataset
print("Features shape:", X.shape)
print("Target shape:", y.shape)
# Plot the synthetic data to visualize the relationship
plt.figure(figsize=(10, 6))
plt.scatter(X, y, color='blue', label='Actual Data Points')
plt.xlabel('Feature (X)')
plt.ylabel('Target (y)')
plt.title('Synthetic Regression Dataset')
plt.legend()
plt.grid(True)
plt.show()
# Split the dataset into training and testing sets
# We use 80% of the data for training and 20% for testing.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print(f"Training set size: {X_train.shape[0]} samples")
print(f"Testing set size: {X_test.shape[0]} samples")
# Initialize and train a Linear Regression model
model = LinearRegression()
model.fit(X_train, y_train)
# Make predictions on the test set
y_pred = model.predict(X_test)
# Evaluate the model's performance
print("\n--- Model Evaluation ---")
# Mean Absolute Error (MAE)
mae = mean_absolute_error(y_test, y_pred)
print(f"Mean Absolute Error (MAE): {mae:.4f}")
# Mean Squared Error (MSE)
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error (MSE): {mse:.4f}")
# Root Mean Squared Error (RMSE)
rmse = np.sqrt(mse)
print(f"Root Mean Squared Error (RMSE): {rmse:.4f}")
# R-squared (R2 Score)
r2 = r2_score(y_test, y_pred)
print(f"R-squared (R2 Score): {r2:.4f}")
# Print model coefficients
print(f"\nModel Intercept: {model.intercept_[0]:.4f}")
print(f"Model Coefficient (slope): {model.coef_[0][0]:.4f}")
# Visualize the regression line fit
plt.figure(figsize=(10, 6))
plt.scatter(X_test, y_test, color='blue', label='Actual Test Data')
plt.plot(X_test, y_pred, color='red', linewidth=2, label='Regression Line (Predictions)')
plt.xlabel('Feature (X)')
plt.ylabel('Target (y)')
plt.title('Linear Regression: Actual vs. Predicted Values')
plt.legend()
plt.grid(True)
plt.show()
# Example of predicting a single new sample (hypothetical)
new_sample_X = np.array([[1.5]]) # A new feature value
predicted_y = model.predict(new_sample_X)[0][0]
print(f"\nPredicted target for new sample X={new_sample_X[0][0]}: {predicted_y:.4f}")
مسیر یادگیری هوش مصنوعی با آکادمی همراه اول
برای ورود به دنیای یادگیری نظارتشده، در آکادمی همراه اول یک مسیر یادگیری ساختاریافته و مرحلهای طراحی شده است تا شما را از مفاهیم پایه تا اجرای پروژههای واقعی همراهی کند. این مسیر بهگونهای تدوین شده است که با تکیه بر آموزشهای کاربردی و پروژهمحور آکادمی همراه اول، بتوانید مهارتهای لازم را بهصورت اصولی کسب و در نهایت مدلهای یادگیری ماشین را طراحی و پیادهسازی کنید.
در مرحله اول، قبل از دوره تخصصی یادگیری نظارتشده بهتر است در چارچوب آموزشی آکادمی همراه اول با پیشنیازهای ضروری مانند ریاضیات کاربردی در هوش مصنوعی و علوم داده و برنامهنویسی پایتون، کار با دادهها و کتابخانههای پرکاربردی مانند NumPy و Pandas آشنا شوید. این مهارتها در دورههای پایه آکادمی، بهعنوان ستون اصلی ورود به دنیای داده و هوش مصنوعی آموزش داده میشوند.
در مرحله بعد، در دوره تخصصی مفاهیم کلیدی یادگیری ماشین مانند آمادهسازی دادهها، تقسیم دادههای آموزشی و آزمایشی، انتخاب مدل مناسب و ارزیابی عملکرد مدلها را یاد میگیرید. سپس با الگوریتمهای مهم یادگیری نظارتشده در دو حوزه اصلی رگرسیون و طبقهبندی آشنا میشوید و در قالب تمرینها و مثالهای آموزشی آکادمی، کاربرد آنها را در حل مسائل واقعی تجربه میکنید.
این مسیر آموزشی در آکادمی همراه اول، شما را گامبهگام از آشنایی با مفاهیم پایه یادگیری نظارتشده تا توانایی اجرای پروژههای واقعی هوش مصنوعی همراهی میکند و بستری برای ورود حرفهای به دنیای داده و هوش مصنوعی فراهم میسازد.
در این مطلب به این پرسش پاسخ دادیم که یادگیری نظارت شده چیست و انوع آن کدام است. یادگیری نظارتشده یکی از مهمترین روشهای یادگیری ماشین است که به کمک دادههای برچسبگذاریشده، به مدلها امکان میدهد الگوهای موجود در اطلاعات را یاد بگیرند و برای دادههای جدید پیشبینی انجام دهند. این روش پایه بسیاری از فناوریهای هوشمند امروزی، از سیستمهای پیشنهاددهنده و تشخیص تصویر گرفته تا کاربردهای پزشکی و تجاری است. با شناخت مفاهیم اصلی، الگوریتمها و کاربردهای یادگیری نظارتشده، میتوان درک بهتری از نحوه عملکرد بسیاری از سیستمهای هوش مصنوعی به دست آورد و از این تکنیک برای حل مسائل مختلف در دنیای واقعی استفاده کرد.
پرسشهای متداول (FAQ)
در این بخش از مطلب یادگیری نظارت شده چیست به تعدادی از پرسشهای متداول در این مورد پاسخ میدهیم.
تفاوت اصلی یادگیری نظارت شده و بدون نظارت چیست؟
تفاوت اصلی یادگیری نظارتشده و بدون نظارت در وجود دادههای برچسبگذاریشده است. در یادگیری نظارتشده، مدل با دادههایی با پاسخ درست مشخص، مانند تشخیص ایمیلهای اسپم یا پیشبینی قیمت خانه، آموزش میبیند تا بتواند پیشبینی انجام دهد. اما در یادگیری بدون نظارت، دادهها بدون برچسب هستند و مدل خودش برای پیدا کردن الگوها، شباهتها و دستهبندیهای موجود در دادهها مانند گروهبندی مشتریان بر اساس رفتار خرید، تلاش میکند.
آیا برای شروع یادگیری نظارت شده حتماً باید ریاضیات عالی بلد باشیم؟
خیر، برای شروع یادگیری نظارتشده لازم نیست ریاضیات خیلی پیشرفته بلد باشید. برای درک مفاهیم اولیه و استفاده از الگوریتمهای آماده، آشنایی با مباحثی مانند آمار پایه، احتمال، جبر خطی ساده و مفاهیم نمودارها کافی است.