بسیار خوب، حالا که با مبانی و مراحل کلی یادگیری ماشین آشنا شدید، بیایید به بررسی دقیقتر الگوریتمهای یادگیری نظارتشده بپردازیم. یکی از مهمترین الگوریتمهای یادگیری نظارتشده رگرسیون خطی است که به دلیل سادگی و کاربردی بودن، نقطه شروع خوبی برای ورود به دنیای یادگیری ماشین محسوب میشود.
الگوریتمهای یادگیری نظارتشده: رگرسیون خطی
1. تعریف رگرسیون خطی (Linear Regression)
- رگرسیون خطی یکی از روشهای پایهای و ساده در یادگیری ماشین است که برای پیشبینی یک مقدار عددی (متغیر وابسته) بر اساس یک یا چند ویژگی (متغیر مستقل) به کار میرود. هدف این الگوریتم، پیدا کردن یک خط یا سطح است که بهترین تطابق را با دادههای موجود داشته باشد و به کمک آن بتواند پیشبینیهایی نزدیک به واقعیت ارائه دهد.
- برای مثال، اگر بخواهیم قیمت یک خانه را بر اساس متراژ آن پیشبینی کنیم، رگرسیون خطی میتواند به ما کمک کند که با استفاده از دادههای قبلی (قیمت و متراژ خانههای دیگر) یک رابطه خطی بین متراژ و قیمت پیدا کنیم.
2. فرمول رگرسیون خطی تکمتغیره
- در رگرسیون خطی ساده (تکمتغیره)، فرمول خطی به صورت زیر است:y=mx+by = mx + by=mx+bکه در آن:
- yyy: مقدار پیشبینیشده (خروجی).
- mmm: شیب خط (تأثیر تغییرات x بر y).
- xxx: متغیر مستقل (ورودی).
- bbb: عرض از مبدأ یا مقدار ثابت.
- هدف اصلی رگرسیون خطی پیدا کردن مقادیر mmm و bbb است که بهترین تطابق را با دادهها داشته باشد و خط پیشبینی بهتری ارائه دهد.
3. تابع هزینه (Cost Function)
- برای پیدا کردن بهترین خط، باید خطاهای بین پیشبینیهای مدل و مقادیر واقعی را کمینه کنیم. به همین منظور، از تابع هزینه استفاده میشود. یکی از رایجترین توابع هزینه برای رگرسیون خطی میانگین مربعات خطا (Mean Squared Error – MSE) است:MSE=1n∑i=1n(yi−y^i)2MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i – \hat{y}_i)^2MSE=n1i=1∑n(yi−y^i)2که در آن:
- yiy_iyi: مقدار واقعی.
- y^i\hat{y}_iy^i: مقدار پیشبینیشده توسط مدل.
- nnn: تعداد نمونهها.
- این تابع هزینه مقدار خطا را بر حسب مربع اختلافات محاسبه میکند تا مقدار بهینه برای mmm و bbb به دست آید.
4. بهینهسازی: روش گرادیان نزولی (Gradient Descent)
- برای بهینهسازی و کمینه کردن تابع هزینه، از روش گرادیان نزولی استفاده میکنیم. این روش با محاسبه مشتق تابع هزینه نسبت به پارامترها و حرکت به سمت شیب منفی تابع هزینه، به تدریج به نقطه بهینه میرسد.
- پارامترهای مدل (mmm و bbb) با استفاده از فرمولهای بهروزرسانی زیر تنظیم میشوند: m=m−α⋅∂∂mMSEm = m – \alpha \cdot \frac{\partial}{\partial m} MSEm=m−α⋅∂m∂MSE b=b−α⋅∂∂bMSEb = b – \alpha \cdot \frac{\partial}{\partial b} MSEb=b−α⋅∂b∂MSE که در آن α\alphaα نرخ یادگیری (Learning Rate) است و سرعت حرکت در طول شیب را کنترل میکند.
5. پیادهسازی رگرسیون خطی در پروژههای ساده
- برای پیادهسازی رگرسیون خطی، میتوانید از کتابخانههایی مانند Scikit-Learn در پایتون استفاده کنید که الگوریتمهای یادگیری ماشین مختلف را به راحتی در اختیار شما قرار میدهد.
- کد نمونهای برای استفاده از رگرسیون خطی با Scikit-Learn:pythonCopy code
from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error # فرض کنید دادههای ما به صورت زیر باشد X = [[100], [200], [300], [400]] # متراژ y = [200, 400, 600, 800] # قیمت # تقسیم داده به آموزش و تست X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # تعریف و آموزش مدل model = LinearRegression() model.fit(X_train, y_train) # پیشبینی و ارزیابی مدل y_pred = model.predict(X_test) mse = mean_squared_error(y_test, y_pred) print("Mean Squared Error:", mse)
فعالیت پیشنهادی:
- دادههای بیشتری جمعآوری کنید و یک مدل رگرسیون خطی برای پیشبینی یک ویژگی مشخص ایجاد کنید. این تمرین به شما کمک میکند که مراحل جمعآوری داده، آموزش مدل، و ارزیابی را درک کنید.
اگر مایل باشید، میتوانیم سراغ الگوریتمهای دیگری مثل درخت تصمیم یا ماشین بردار پشتیبان (SVM) برویم.
آخرین دیدگاهها