Menu
CoddyTech
flag Ar iconالعربيةdown icon

التعزيز التدرجي

جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 43 من 58.

تنمو أشجار الغابة جنبًا إلى جنب. أما التعزيز بالتدرج فينميها واحدة تلو الأخرى: إذ تتعلم كل شجرة جديدة ما تزال الأشجار التي سبقتها تخطئ فيه.

هنا يلائم مبيعات محلّ العصائر باستخدام الأشجار، شجرةً تلو الأخرى:

نقاط رمادية لمبيعات العصائر على مدار 40 يومًا مقارنةً بدرجة الحرارة، ترتفع من نحو 20 إلى 135. الخط المنقّط بعد شجرة واحدة هو خطوة مسطّحة تقريبية، والخط المتقطّع بعد 3 أشجار يتبع البيانات بشكل أفضل، والخط المتصل بعد 15 شجرة يمرّ عبر النقاط

بالنسبة إلى الفئات، النموذج هو GradientBoostingClassifier:

from sklearn.ensemble import GradientBoostingClassifier

boost = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=0)
boost.fit(X_train, y_train)

يحدد learning_rate مقدار كل تعديل الذي ينبغي الاحتفاظ به. الخطوات الصغيرة أكثر حذرًا، لذا تحتاج إلى أشجار أكثر.

challenge icon

التحدي

متوسط

يريد أحد مزارعي الأوركيد معرفة النباتات التي ستزهر. يقسم البرنامج الابتدائي البيانات في orchids.csv، ويقيّم غابة، ويقرأ عددًا من الأشجار.

  1. لكل معدل في rates، درّب نموذج التعزيز باستخدام ذلك العدد من الأشجار (random_state=0) واطبع دقته على بيانات الاختبار.
  2. اطبع أفضل معدل. عند التعادل، احتفظ بالمعدل الأسبق.

لمزارع آخر ومع إدخال 20:

Forest: 0.860
Boosting at rate 0.01: 0.600
Boosting at rate 0.1: 0.860
Boosting at rate 1.0: 0.900
Best rate for 20 trees: 1.0

ثم جرّب بعض أعداد الأشجار: متى يتفوق التعزيز على الغابة؟

جرّب بنفسك

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier

# زهور الأوركيد على رفوف أحد المزارعين: أزهرت هذا العام (1) أم لم تزهر (0)
orchids = pd.read_csv("orchids.csv")
X = orchids.drop(columns="bloomed")
y = orchids["bloomed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
trees = int(input())
rates = [0.01, 0.1, 1.0]

# لا تغيّر الأسطر أدناه: الغابة التي ستقارن بها
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
print(f"Forest: {forest.score(X_test, y_test):.3f}")

# اكتب الكود الخاص بك أدناه
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس التعلّم الخاضع للإشراف

تدرّب بنفسك: مترجم Python عبر الإنترنت