آینده سیاره زمین «هوش مصنوعی» (Artificial Intelligence)/«یادگیری ماشین» (Machine Learning) است. هرکسی که این موضوع را درک نکند خیلی زود از قافله عقب خواهد ماند. بیدار شدن در دنیای سرشار از نوآوری روز به روز بیشتر شبیه به جادو می‌شود. پیاده‌سازی‌ها و روش‌های گوناگونی برای هوش مصنوعی و یادگیری ماشین به منظور حل مسائل جهان واقعی وجود دارد و «یادگیری نظارت شده» (Supervised Learning) یکی از پرکاربردترین رویکردها است. «جف هاوکینز» (Jeff Hawkins) موسس کمپانی «Palm Computing» در این رابطه می‌گوید: «کلید ورود به هوش مصنوعی همواره ارائه کردن بوده است».

یادگیری نظارت شده چیست؟

در یادگیری نظارت شده» کار با ایمپورت کردن مجموعه داده‌های شامل ویژگی‌های آموزش (خصیصه‌های آموزش | training attributes) و ویژگی‌های هدف (خصیصه‌های هدف | target attributes) آغاز می‌شود. الگوریتم یادگیری نظارت شده رابطه بین مثال‌های آموزش و متغیرهای هدف مختص آن‌ها را به دست می‌آورد و آن رابطه یاد گرفته شده را برای دسته‌بندی ورودی‌های کاملا جدید مورد استفاده قرار می‌دهد (بدون هدف‌ها). برای نمایش اینکه یادگیری نظارت شده چگونه کار می‌کند، یک مثال از پیش‌بینی نمرات دانش‌آموزان برپایه ساعات مطالعه آن‌ها ارائه می‌شود. از منظر ریاضی:

Y = f(X)+ C

که در آن:

  • F رابطه بین نمرات و تعداد ساعاتی است که دانش‌آموزان به منظور آماده شدن برای امتحانات به مطالعه می‌پردازند.
  • X ورودی است (تعداد ساعاتی که دانش‌آموز خود را آماده می‌کند).
  • Y خروجی است (نمراتی که دانش‌آموزان در آزمون کسب کرده‌اند).
  • C یک خطای تصادفی است.

هدف نهایی یادگیری نظارت شده پیش‌بینی Y با حداکثر دقت برای ورودی جدید داده شده X است. چندین راه برای پیاده‌سازی یادگیری نظارت شده وجود دارد. برخی از متداول‌ترین رویکردها در ادامه مورد بررسی قرار می‌گیرند. برپایه مجموعه داده موجود، مساله یادگیری ماشین در دو نوع «دسته‌بندی» (Classification) و «رگرسیون» (Regression) قرار می‌گیرد. اگر داده‌های موجود دارای مقادیر ورودی (آموزش) و خروجی (هدف) باشند، مساله از نوع دسته‌بندی است. اگر مجموعه داده دارای «مقادیر عددی پیوسته» (continuous numerical values) بدون هرگونه برچسب هدفی باشد، مساله از نوع رگرسیون محسوب می‌شود.

دسته‌بندی

مثالی مفروض است که در آن یک پژوهشگر حوزه پزشکی می‌خواهد داده‌های سرطان سینه را به‌منظور پیش‌بینی اینکه بیمار کدام یک از سه نوع درمان را باید دریافت کند، مورد تحلیل قرار دهد. این وظیفه تحلیل داده «دسته‌بندی» (Classification) نامیده و در آن یک مدل یا «دسته‌بند» (Classifier) به منظور پیش‌بینی برچسب‌های دسته (کلاس) مانند «درمان A» (همان treatment A)، «درمان B» (همان treatment B) یا «درمان C» (همان treatment C) ساخته می‌شود. دسته‌بندی یک مساله پیش‌بینی است که برچسب‌های کلاس دسته‌ای را که گسسته یا بدون ترتیب هستند پیش‌بینی می‌کند. این یک فرآیند دو مرحله‌ای است که شامل مرحله یادگیری و دسته‌بندی می‌شود.

روش‌های دسته‌بندی و انتخاب بهترین آن‌ها

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

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

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

پیاده‌سازی KNN در Scikit-Learn روی مجموعه داده Iris جهت دسته‌بندی نوع گل‌ها برپایه ورودی‌های داده شده

اولین گام برای اعمال الگوریتم یادگیری ماشین مورد نیاز، درک و اکتشاف مجموعه داده است. در این مثال، از مجموعه داده Iris استفاده شده که از بسته scikit-learn ایمپورت شده. اکنون کد لازم برای این کار را نوشته و مجموعه داده گل‌های زنبق (scikit-learn) مورد بررسی قرار می‌گیرد. ابتدا باید از نصب بودن پایتون روی سیستم کاربر اطمینان حاصل کرد. همچنین، بسته‌های زیر نیز باید با استفاده از PIP نصب شوند.

در قطعه کد پایین، مدل با بهره‌گیری از چند متد در کتابخانه 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) داده می شود صبر کند. این نوع یادگیرنده، تنها هنگامی که تاپل تست را می‌بیند عمومی‌سازی را به منظور دسته‌بندی تاپل‌ها برپایه مشابهت آن‌ها با تاپل‌های آموزش ذخیره شده انجام می‌دهد.

دسته‌بند K-نزدیک‌ترین همسایگی یک یادگیرنده تنبل است. این الگوریتم (KNN) برپایه یادگیری با مقایسه، که در واقع مقایسه یک تاپل تست داده شده با تاپل‌های آموزش مشابه آن محسوب می‌شود بنا نهاده شده است. تاپل‌های آموزش با n مشخصه تشریح شده‌اند. هر تاپل یک نقطه را در فضای n-بعدی نشان می‌دهد. بدین شکل، همه تاپل‌های آموزش در فضای الگوری n-بُعدی ذخیره می‌شوند. هنگامی که یک تاپل ناشناخته داده می‌شود، دسته‌بند k-نزدیک‌ترین همسایگی فضای الگو را برای k تاپل‌های آموزش که نزدیک‌ترین همسایه‌های «تاپل ناشناخته هستند» جست‌و‌جو می‌کند. «نزدیکی» (Closeness) با توجه به سنجه فاصله مانند فاصله اقلیدسی تعریف می‌شود. یک مقدار خوب برای K به طور تجربی تعیین می‌شود. در این قطعه کد، دسته‌بند KNN از sklearn ایمپورت و بر داده‌های ورودی اعمال می‌شود و سپس می‌تواند گل‌ها را دسته‌بندی کند.

خروجی

[1 1]

در اینجا

  • ۰ مطابق با Versicolor است.
  • 1 مطابق با Virginica است.
  • 2 مطابق با Setosa است.

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

KNN برای دسته‌بندی مجموعه داده Iris

رگرسیون

رگرسیون معمولا به منظور تعیین روابط بین دو یا تعداد بیشتری متغیر مورد استفاده قرار می‌گیرد. برای مثال، حالتی را می‌توان در نظر گرفت که نیاز به پیش‌بینی درآمد یک نفر بر پایه داده‌های درآمد 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) در معادله خطی پیوسته خواهد بود.

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

^^

آیا این مطلب برای شما مفید بود؟

برچسب ها :

نظر شما چیست؟

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