mahsa sanaei
mahsa sanaei
خواندن ۴ دقیقه·۶ ماه پیش

تسلط بر روش‌های انسمبلینگ در یادگیری ماشین




سلام به همه دوستان 🙋‍♀️

توی این پست، می‌خوایم درباره یکی از موضوعات محبوب، یعنی روش‌های انسمبلینگ توی یادگیری ماشین صحبت کنیم. این تکنیک‌ها خیلی در بهتر کردن عملکرد مدل‌ها مؤثر هستن.




روش‌های انسمبلینگ

روش‌های انسمبلینگ، چند تا مدل رو با هم ترکیب می‌کنن تا یه مدل قوی‌تر و واحد بسازن. مفهومش ساده‌ست: از مزایای مدل‌های مختلف استفاده می‌کنه و نقاط ضعفشون رو کم می‌کنه. روش‌های انسمبلینگ از تنوع مدل‌ها بهره می‌برن. یعنی مدل‌های مختلفی که توی انسمبلینگ استفاده می‌شن، ممکنه از الگوریتم‌ها، ساختارها یا مجموعه‌های داده متفاوتی استفاده کنن. این تنوع کمک می‌کنه تا مدل نهایی از دیدگاه‌های مختلف به داده‌ها نگاه کنه و پیش‌بینی‌های دقیق‌تری ارائه بده.

مزایای روش‌های انسمبلینگ

  • افزایش دقت: وقتی چند تا مدل رو با هم ترکیب می‌کنید، می‌تونید از قدرت هر مدل استفاده کنید و نقاط ضعفشون رو کمتر کنید. اینجوری، مدل نهایی دقت بیشتری داره.
  • کاهش اورفیتینگ: یکی از مشکلات رایج تو یادگیری ماشین، اورفیتینگ هست که مدل زیادی به داده‌های آموزشی وابسته می‌شه و نمی‌تونه داده‌های جدید رو خوب پیش‌بینی کنه. با میانگین گرفتن از پیش‌بینی‌های چند تا مدل، خطاها کمتر می‌شه و مدل بهتر تعمیم می‌ده.
  • افزایش پایداری: مدل‌های انسمبل معمولاً پیش‌بینی‌های پایدارتر و قابل اعتماد‌تری دارن. این به خاطر اینه که نوسانات و خطاهای هر مدل تکی به طور متوسط کاهش پیدا می‌کنه.

انواع روش‌های انسمبلینگ

سه نوع اصلی از روش‌های انسمبلینگ عبارتند از:

  1. Bagging: کاهش واریانس با میانگین‌گیری از پیش‌بینی‌های مدل‌های مختلف.
  2. Boosting: کاهش بایاس با آموزش مدل‌ها به صورت متوالی و تصحیح خطاهای مدل قبلی.
  3. Stacking: ترکیب مدل‌های مختلف با استفاده از یک مدل متا-لرنر برای بهبود دقت نهایی.


. Bagging

متد Bagging، یا بوت‌استرپ تجمیعی، شامل آموزش چند تا مدل مشابه روی زیرمجموعه‌های مختلفی از داده‌هاست. هدف اصلی این روش کاهش واریانس و افزایش پایداری مدل نهایی هست. یکی از معروف‌ترین الگوریتم‌های مبتنی بر Bagging، جنگل تصادفی (Random Forest) هست.

مثال: Random Forest 👩‍💻

مدل جنگل تصادفی از روش‌های Bagging بر روی چندین مدل درخت تصمیم استفاده می‌کنه.

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# فرض کنیم X_train، X_test، y_train و y_test داده‌های تفکیک شده ویژگی‌ها و اهداف شما هستند
# آموزش مدل جنگل تصادفی
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
# پیش‌بینی و ارزیابی
y_pred = rf.predict(X_test)
print(&quotدقت جنگل تصادفی:&quot, accuracy_score(y_test, y_pred))


۲. Boosting

متد Boosting یک روش انسمبلینگ هست که مدل‌ها رو به صورت متوالی آموزش می‌ده. هر مدل جدید خطاهای مدل قبلی رو اصلاح می‌کنه. این روش به کاهش بایاس و افزایش دقت مدل کمک می‌کنه. یکی از الگوریتم‌های معروف در این دسته، گرادیان بوستینگ (Gradient Boosting) هست.

مثال: Gradient Boosting 👩‍💻

from sklearn.ensemble import GradientBoostingClassifier
# آموزش مدل Gradient Boosting
gb = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=42)
gb.fit(X_train, y_train)
# پیش‌بینی و ارزیابی
y_pred = gb.predict(X_test)
print(&quotدقت Gradient Boosting:&quot, accuracy_score(y_test, y_pred))

۳. Stacking

متد Stacking یک روش پیشرفته‌تر انسمبلینگ هست که شامل آموزش چند تا مدل پایه و بعد استفاده از یک مدل متا-لرنر برای ترکیب پیش‌بینی‌های اونهاست. این روش به بهبود دقت و کاهش اورفیتینگ کمک می‌کنه.

مثال: استفاده از رگرسیون لجستیک به عنوان متا-لرنر 👩‍💻

from sklearn.ensemble import StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
# تعریف مدل‌های پایه
base_learners = [
('svm', SVC(kernel='linear', probability=True)),
('dt', DecisionTreeClassifier())
]
# تعریف متا-لرنر
meta_learner = LogisticRegression()
# آموزش مدل Stacking
stacking = StackingClassifier(estimators=base_learners, final_estimator=meta_learner, cv=5)
stacking.fit(X_train, y_train)
# پیش‌بینی و ارزیابی
y_pred = stacking.predict(X_test)
print(&quotدقت Stacking:&quot, accuracy_score(y_test, y_pred))


چالش‌های استفاده از روش‌های انسمبلینگ:

افزایش زمان محاسباتی: ترکیب چند تا مدل ممکنه نیاز به زمان و منابع محاسباتی بیشتری داشته باشه. این مسئله تو پروژه‌های بزرگ یا وقتی منابع محدود هستن، می‌تونه چالش‌برانگیز باشه.

پیچیدگی پیاده‌سازی: پیاده‌سازی و تنظیم مدل‌های انسمبلینگ ممکنه پیچیده‌تر از مدل‌های تکی باشه. تنظیم دقیق هایپرپارامترها و انتخاب مدل‌های مناسب برای ترکیب از جمله این چالش‌هاست.

تفسیربرداری: یکی از مشکلات مدل‌های انسمبلینگ اینه که تفسیر نتایجشون سخت‌تره. برخلاف مدل‌های ساده‌تر مثل رگرسیون خطی که راحت‌تر قابل توضیح هستن، مدل‌های انسمبلینگ به خاطر پیچیدگی بالا ممکنه سخت‌تر قابل درک باشن.

بهترین روش‌های تنظیم هایپرپارامترها:

اعتبارسنجی متقابل (Cross-Validation): یکی از بهترین روش‌ها برای تنظیم هایپرپارامترها استفاده از اعتبارسنجی متقابل هست. این روش به شما اجازه می‌ده تا عملکرد مدل رو با تنظیمات مختلف ارزیابی کنید و بهترین تنظیمات رو انتخاب کنید.


جستجوی شبکه‌ای (Grid Search) و جستجوی تصادفی (Random Search): این دو روش هم برای تنظیم هایپرپارامترها خیلی مفید هستن. جستجوی شبکه‌ای تمام ترکیبات ممکن از هایپرپارامترها رو بررسی می‌کنه، در حالی که جستجوی تصادفی به صورت تصادفی از بین ترکیبات ممکن انتخاب می‌کنه.


نتیجه‌گیری

با وجود چالش‌های موجود، این روش‌ها ابزارهای قدرتمندی برای حل مسائل پیچیده و بهبود نتایج پیش‌بینی‌ها هستن. با استفاده از تنوع مدل‌ها، تنظیم دقیق هایپرپارامترها و به کارگیری روش‌های مناسب، می‌تونید مدل‌های انسمبلینگ موثری بسازید که تو پروژه‌های مختلف خوب عمل کنن.

یادگیری ماشینهوش مصنوعییادگیری عمیقکامپیوترکنکور
مهسا ثنایی هستم.مهندس کامپیوتر و فعال در حوزه جذاب هوش مصنوعی
شاید از این پست‌ها خوشتان بیاید