یادگیری نظارت شده (Supervised Learning) با پایتون – راهنمای جامع

یادگیری نظارت شده چیست؟
در یادگیری نظارت شده» کار با ایمپورت کردن مجموعه دادههای شامل ویژگیهای آموزش (خصیصههای آموزش | training attributes) و ویژگیهای هدف (خصیصههای هدف | target attributes) آغاز میشود. الگوریتم یادگیری نظارت شده رابطه بین مثالهای آموزش و متغیرهای هدف مختص آنها را به دست میآورد و آن رابطه یاد گرفته شده را برای دستهبندی ورودیهای کاملا جدید مورد استفاده قرار میدهد (بدون هدفها).
برای نمایش اینکه یادگیری نظارت شده چگونه کار میکند، یک مثال از پیشبینی نمرات دانشآموزان برپایه ساعات مطالعه آنها ارائه میشود. از منظر ریاضی:
Y = f(X)+ C
که در آن:
- F رابطه بین نمرات و تعداد ساعاتی است که دانشآموزان به منظور آماده شدن برای امتحانات به مطالعه میپردازند.
- X ورودی است (تعداد ساعاتی که دانشآموز خود را آماده میکند).
- Y خروجی است (نمراتی که دانشآموزان در آزمون کسب کردهاند).
- C یک خطای تصادفی است.
هدف نهایی یادگیری نظارت شده پیشبینی Y با حداکثر دقت برای ورودی جدید داده شده X است.
به طور کل یادگیری ماشین به سه شکل نظارت شده، بدون نظارت و نیمهنظارت شده دستهبندی میشود. هر کدام از این روشها کاربردها، مزایا و معایب خود را دارند. برای آشنا با روش اجرا و کاربردهای مختلف یادگیری نظارت شده، پیشنهاد میکنیم فیلم آموزشی رایگان زیر را مشاهده کنید.
Classification: Has the output label. Is it a Cat or Dog? Regression: How much will the house sell for?
دستهبندی
مثالی مفروض است که در آن یک پژوهشگر حوزه پزشکی میخواهد دادههای سرطان سینه را بهمنظور پیشبینی اینکه بیمار کدام یک از سه نوع درمان را باید دریافت کند، مورد تحلیل قرار دهد. این وظیفه تحلیل داده «دستهبندی» (Classification) نامیده و در آن یک مدل یا «دستهبند» (Classifier) به منظور پیشبینی برچسبهای دسته (کلاس) مانند «درمان A» (همان treatment A)، «درمان B» (همان treatment B) یا «درمان C» (همان treatment C) ساخته میشود.
دستهبندی یک مساله پیشبینی است که برچسبهای کلاس دستهای را که گسسته یا بدون ترتیب هستند پیشبینی میکند. این یک فرآیند دو مرحلهای است که شامل مرحله یادگیری و دستهبندی میشود.
روشهای دستهبندی و انتخاب بهترین آنها
برخی از الگوریتمهای متداول دادهکاوی در ادامه بیان شدهاند.
- K-نزدیکترین همسایگی
- «درخت تصمیم» (Decision Trees)
- «نایو بیز» (Naïve Bayes)
- «ماشین بردار پشتیبان» (Support Vector Machines)
در مرحله یادگیری، مدل دستهبندی، دستهبند را با تحلیل مجموعه داده آموزش میسازد. در مرحله دستهبندی، برچسبهای کلاس برای دادههای موجود پیشبینی میشوند. تاپلهای مجموعه داده و برچسبهای کلاس مربوط در حال تحلیل به دو دسته «مجموعه آموزش» (training set) و «مجموعه تست» (test set) تقسیم میشوند. «تاپلهای» (tuples) مجزایی که مجموعه داده تست را میسازند از مجموعه داده تحت تحلیل به طور تصادفی نمونهبرداری میشوند. تاپلهای باقیمانده مجموعه داده تست را شکل میدهند و از تاپلهای آموزش مستقل هستند، بدین معنا که برای ساخت دستهبند مورد استفاده قرار نمیگیرند.
پیادهسازی KNN در Scikit-Learn روی مجموعه داده Iris جهت دستهبندی نوع گلها برپایه ورودیهای داده شده
ابتدا باید از نصب بودن پایتون روی سیستم کاربر اطمینان حاصل کرد. همچنین، بستههای زیر نیز باید با استفاده از PIP نصب شوند.
pip install pandas pip install matplotlib pip install scikit-learn
در قطعه کد پایین، مدل با بهرهگیری از چند متد در کتابخانه Pandas، پیرامون ویژگیهای مجموعه داده Iris میآموزد.
خروجی
<class ‘sklearn.datasets.base.Bunch’> dict_keys([‘data’, ‘target’, ‘target_names’, ‘DESCR’, ‘feature_names’])] <class ‘numpy.ndarray’> <class ‘numpy.ndarray’> (150, 4) [‘setosa’ ‘versicolor’ ‘virginica’] sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) 0 5.1 3.5 1.4 0.2 1 4.9 3.0 1.4 0.2 2 4.7 3.2 1.3 0.2 3 4.6 3.1 1.5 0.2 4 5.0 3.6 1.4 0.2
K-نزدیکترین همسایگی در scikit-learn
به یک الگوریتم «یادگیرنده تنبل» (Lazy Learner) گفته میشود اگر تاپلهای مجموعه داده آموزش را ذخیره کرده و تا هنگامی که تاپل آزمون (test) داده می شود صبر کند. این نوع یادگیرنده، تنها هنگامی که تاپل تست را میبیند عمومیسازی را به منظور دستهبندی تاپلها برپایه مشابهت آنها با تاپلهای آموزش ذخیره شده انجام میدهد.
خروجی
[1 1]
در اینجا
- ۰ مطابق با Versicolor است.
- ۱ مطابق با Virginica است.
- ۲ مطابق با Setosa است.
برپایه ورودی داده شده، ماشین پیشبینی کرده که هر دو گل از گونه Versicolor هستند.

رگرسیون
رگرسیون معمولا به منظور تعیین روابط بین دو یا تعداد بیشتری متغیر مورد استفاده قرار میگیرد. برای مثال، حالتی را میتوان در نظر گرفت که نیاز به پیشبینی درآمد یک نفر بر پایه دادههای درآمد X است. در اینجا، متغیر هدف به معنای متغیر ناشناختهای است که کاربر به پیشبینی آن اهمیت میدهد و پیوسته به معنای آن است که شکافی (ناپیوستگی) در مقداری که Y میتواند داشته باشد وجود ندارد.
پیشبینی درآمد یک مساله کلاسیک رگرسیون است. داده ورودی باید همه اطلاعاتی (که با عنوان ویژگی شناخته شدهاند) را درباره یک فرد که میتواند منجر به پیشبینی درآمد شود، مانند ساعات کار، تجربه آموزش، عنوان شغلی و محلی که زندگی میکند داشته باشد.
مدل رگرسیون
برخی از مدلهای رگرسیون متداول عبارتند از:
- «رگرسیون خطی» (Linear Regression)
- «رگرسیون لجستیک» (Logistic Regression)
- «رگرسیون چند جملهای» (Polynomial Regression)
رگرسیون خطی، رابطهای بین متغیر وابسته (Y) و یک یا تعداد بیشتری متغیر مستقل (X) با استفاده از بهترین خط راستی که برازش دارد برقرار میکند (به این نوع رگرسیون، رگرسیون خطی نیز گفته میشود).
به بیان ریاضی:
h(xi) = βo + β1 * xi + e
در حالیکه βo عرض از مبدا است، β1 شیب خط و e میزان خطا محسوب میشود.

الگوریتم رگرسیون لجستیک هنگامی مورد استفاده قرار میگیرد که متغیر پاسخ دستهای باشد. ایده رگرسیون لجستیک پیدا کردن رابطه بین ویژگی و احتمال یک خروجی خاص است.
به بیان ریاضی:
p(X) = βo + β1 * X
که در آن
p(x) = p(y = 1 | x)

رگرسیون لجستیک شکلی از تحلیلهای رگرسیون است که در آن ارتباطی بین متغیرهای مستقل x و متغیر وابسته y به عنوان یک چندجملهای درجه n در x مدل میشود.
حل مساله رگرسیون خطی
مجموعه داده X و مقدار هدف Y موجود است. از «کمترین مربعات» (Least Squares) برای یادگیری مدل خطی استفاده میشود که میتوان از آن برای پیشبینی یک y جدید که به x دیده نشده پیشین داده شده با کمترین میزان خطای ممکن بهره برد. دادههای موجود به دو بخش مجموعه داده آموزش و آزمون (تست) تقسیم میشوند.
مجموعه داده آموزش دارای برچسبهایی است (ویژگیها بارگذاری شدهاند)، بنابراین الگوریتم میتواند از این مثالهای برچسبگذاری شده بیاموزد. مجموعه داده تست هیچ برچسبی ندارد، در واقع کاربر نمیداند مقداری که سعی در پیشبینی آن دارد چیست. در اینجا یک ویژگی برای آموزش در نظر گرفته شده و روش رگرسیون خطی برای برازش دادههای آموزش اعمال و سپس خروجی با استفاده از مجموعه داده تست پیشبینی میشود.
پیادهسازی رگرسیون خطی در scikit-learn
خروجی
Input Values [ [ 0.07786339] [-0.03961813] [ 0.01103904] [-0.04069594] [-0.03422907] [ 0.00564998] [ 0.08864151] [-0.03315126] [-0.05686312] [-0.03099563] [ 0.05522933] [-0.06009656] [ 0.00133873] [-0.02345095] [-0.07410811] [ 0.01966154][-0.01590626] [-0.01590626] [ 0.03906215] [-0.0730303 ] ] Predicted Output Values [ 225.9732401 115.74763374 163.27610621 114.73638965 120.80385422 158.21988574 236.08568105 121.81509832 99.56772822 123.83758651 204.73711411 96.53399594 154.17490936 130.91629517 83.3878227 171.36605897 137.99500384 137.99500384 189.56845268 84.3990668 ]
نمودار بین پیشبینیهای (diabetes_X_test, diabetes_y_pred) در معادله خطی پیوسته خواهد بود.
اگر مطلب بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- مجموعه آموزشهای هوش محاسباتی
- مجموعه آموزشهای شبکههای عصبی مصنوعی
- گنجینه آموزشهای برنامه نویسی پایتون (Python)
- آموزش برنامهنویسی R و نرمافزار R Studio
- مجموعه آموزشهای برنامه نویسی متلب (MATLAB)
- علم داده، تحلیل داده، دادهکاوی و یادگیری ماشین ــ تفاوتها و شباهتها
^^
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید













