4.4تعلم الآلة والذكاء الاصطناعي : scikit-learn و TensorFlow
الأساسي في 30 ثانية
- تعلم الآلة = التعلم من الأمثلة :
fit(X, y)يتعلم، وpredictيتنبأ، ونقيّم على بيانات لم تُرَ أبدا (train_test_split). - المسار في 5 أسطر : الفصل ←
LogisticRegressionأوRandomForest←fit←score← مصفوفة الالتباس ؛ وخط أساس بسيط أولا. - منعكس نبيل : 100 % على التدريب و60 % في الإنتاج = قيّم على التدريب — فالفصل ليس اختياريا، والنموذج يتعلم التحيزات أيضا.
حالة مصغرة متسلسلة — نبيل يتنبأ بالديون غير المسددة
تطلب الإدارة من نبيل، في الجزائر : «هل يمكن رصد العملاء المعرضين لخطر عدم الدفع ؟» فبدلا من قواعد حرفية، درّب نبيل RandomForest مع scikit-learn على السجل : فصل 80/20 مع random_state لقابلية إعادة الإنتاج، وfit على التدريب، وscore على الاختبار الذي لم يُرَ أبدا. أول تقييم على التدريب : 100 % — وهمي ؛ وعلى الاختبار : 82 % — صادق. وسلّم خط أساس مفيدا وموثقا، مع تنقيح للتحيزات قبل أي قرار. رابع محطة في الخيط الرابط : من المحلل الذي يصف إلى النموذج الذي يتنبأ — بحذر.
تتمة حالات 4.1-4.3 — نبيل يتنبأ انطلاقا من بياناته التاريخية.
1. التعلم من الأمثلة + الفصل المقدس
يستبدل تعلم الآلة (machine learning) القواعد المرمزة يدويا بقاعدة متعلمة من أمثلة موسومة : fit(X, y) يدرّب، وpredict يتنبأ على الجديد. والقاعدة الذهبية : التقييم على بيانات لم تُرَ أبدا مع train_test_split — وإلا قسنا الذاكرة لا التعلم. وتعلمها نبيل على حسابه : 100 % على التدريب، و82 % على الاختبار — فالرقم الثاني وحده يهم. وrandom_state المثبت = نتيجة قابلة لإعادة الإنتاج.
2. scikit-learn أولا، والتعلم العميق بعد ذلك
تغطي scikit-learn ثمانين % من الحاجات المهنية الجدولية دون GPU : LogisticRegression وRandomForestClassifier، وواجهة واحدة fit/predict/score، ومصفوفة التباس لقراءة الأخطاء. وخط أساس بسيط أولا، ولا نعقد إلا إن فشل البسيط. ويدخل التعلم العميق (deep learning) (TensorFlow و PyTorch وشبكات الخلايا العصبية و GPU) للصور والنص والصوت — مع القاعدة الذهبية : الانطلاق من نماذج مدربة مسبقا (Hugging Face) وتعديلها، أبدا من الصفر. والأخلاق : فالنموذج يتعلم أحكام البيانات المسبقة — وينقح نبيل التحيزات قبل أي قرار مؤتمت.
🔎 مثال ملموس — 🔎 مثال ملموس — خط أساس نبيل
المسار الكامل، مع الواجهات الحقيقية لـ scikit-learn :
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.2, random_state=0)
modele = RandomForestClassifier().fit(Xtr, ytr) # يتعلم
print(modele.score(Xte, yte)) # ~0.96 : مقيَّم على بيانات لم تُرَ
القاعدة ← 100 % على التدريب + 60 % في الإنتاج = تسرب الفصل
القراءة : الفصل والتدريب والدرجة — ثلاثة أسطر، وصفر سحر.
الدرس : random_state = نتيجة قابلة لإعادة الإنتاج والنقاش.
مفردات القسم
- تعلم الآلة (machine learning)
- تعلم قاعدة من أمثلة موسومة (fit) ثم التنبؤ على الجديد (predict)، بدلا من ترميز القواعد يدويا.
مثال بسيط: يتنبأ نبيل بالديون غير المسددة من السجل بدلا من عتبات حرفية.
ما ليس كذلك: قواعد إذا/إذن مرمزة واحدة واحدة.
رد فعل: بيانات موسومة بكمية ؟ فكر في تعلم الآلة.
- الفصل تدريب/اختبار (train/test split)
- فصل البيانات : التعلم على التدريب، والتقييم على الاختبار الذي لم يُرَ أبدا — وإلا قسنا الذاكرة لا التعلم.
مثال بسيط: نبيل : 100 % على التدريب (ذاكرة)، و82 % على الاختبار (الواقع).
ما ليس كذلك: تقييم النموذج على أمثلة تدريبه نفسها.
رد فعل: فصل منهجي، وrandom_state مثبت.
- scikit-learn (fit/predict)
- مكتبة تعلم الآلة الجدولية المثالية للبدء : واجهة وحيدة fit/predict/score، ودون GPU، وخط أساس في 5 أسطر.
مثال بسيط: RandomForest نبيل في ثلاثة أسطر : الفصل والتدريب والدرجة.
ما ليس كذلك: شبكة خلايا عصبية بـ GPU لجدول عملاء.
رد فعل: خط أساس بسيط أولا، وعقّد عند الحاجة.
- التعلم العميق / المدربة مسبقا
- شبكات الخلايا العصبية (TensorFlow و PyTorch و GPU) للصور/النص/الصوت ؛ وننطلق من نماذج مدربة مسبقا نعدلها، أبدا من الصفر.
مثال بسيط: سيضيف نبيل نموذجا مدربا مسبقا لقراءة آراء العملاء، لا شبكة منزلية.
ما ليس كذلك: تدريب عملاق من الصفر على حاسوبه المحمول.
رد فعل: صورة/نص/صوت ؟ مدرب مسبقا + تعديل.
في التطبيق — عمليا — تدريب خط أساس
- حمّل مجموعة جدولية موسومة (مثلا load_iris أو بياناتك التاريخية المنظفة).
- افصل مع train_test_split (test_size=0.2 و random_state مثبت) : ويبقى الاختبار سليما حتى التقييم.
- درّب خط أساس (LogisticRegression أو RandomForestClassifier) : fit على التدريب وحده.
- قيّم على الاختبار (الدرجة + مصفوفة الالتباس)، وقارن مع درجة التدريب، ودوّن التحيزات والحدود قبل أي قرار.
نص جاهز للقول — عرض نموذجه (30 ثانية)
«معكم نبيل : خط أساس RandomForest، بـ 82 % على بيانات لم تُرَ أبدا — لا 100 % على التدريب، فتلك ذاكرة. مصفوفة الالتباس مقروءة، والتحيزات منقحة : فالنموذج يساعد القرار، ولا يعوضه.»
يُقال في اللجنة ؛ واعرض المصفوفة لا الدرجة فقط.
نموذج نسخ-لصق — خط أساس scikit-learn (كود مختبر)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix
X, y = load_iris(return_X_y=True)
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.2, random_state=0)
modele = RandomForestClassifier(random_state=0)
modele.fit(Xtr, ytr) # يتعلم على التدريب وحده
print("train :", modele.score(Xtr, ytr)) # حفظ (مرجع)
print("test :", modele.score(Xte, yte)) # تعلم (الرقم الحقيقي)
print(confusion_matrix(yte, modele.predict(Xte)))
نموذج أول
مجموعة بسيطة (iris) وخط أساس وفصل : افهم fit/predict قبل لمس بياناتك.
بيانات جدولية
مثل نبيل : تكفي scikit-learn في 80 % من الحالات المهنية — دون GPU ولا تعلم عميق.
صورة أو نص
انتقل إلى TensorFlow/PyTorch عبر نماذج مدربة مسبقا تُعدَّل، أبدا مدربة من الصفر.
قرار حساس
الائتمان والتوظيف والصحة : نقّح التحيزات، وأبق الإنسان مقررا، ووثّق الحدود.
✓ ممارسات جيدة
- الفصل دائما : قيّم على بيانات لم تُرَ.
- خط أساس بسيط أولا، وعقّد عند الحاجة.
- نقّح التحيزات والحدود قبل القرار.
✗ أخطاء شائعة
- التقييم على التدريب (100 % وهمية).
- إخراج التعلم العميق لجدول.
- تجاهل التحيزات المتعلمة من البيانات.
النقاط الأساسية
- تعلم الآلة = أنماط متعلمة من الأمثلة (fit ← predict)، لا قواعد مرمزة.
- واجهة SKLEARN : fit()/predict()/score() ؛ والفصل تدريب/اختبار إجباري.
- خط الأساس البسيط أولا (Logit و RandomForest) : ثمانون % من المهني دون GPU.
- العميق = شبكات الخلايا العصبية (صور/نص) عبر المدربة مسبقا ؛ والتحيزات تُنقَّح.
تحدي 48 ساعة — طبق غدا
درّب خط أساس واحدا على مجموعة جدولية : فصل 80/20 وfit ودرجة الاختبار + مصفوفة التباس مقروءة ومعلقة.
- أستطيع ذكر fit/predict والفصل تدريب/اختبار.
- أعرف شرح فخ 100 % على التدريب.
- عندي خط أساس مقيَّم على بيانات لم تُرَ.
أسئلة شائعة
هل تلزم الرياضيات قبل تعلم الآلة ؟
لا لخط أساس scikit-learn أول : فالمسار (الفصل والتدريب والدرجة) يُتعلم بالممارسة. ونعم بعد ذلك : فالإحصاء والجبر لاختيار نموذج وضبط معاملاته وفهم أخطائه. يتقدم نبيل مرحلة مرحلة : خط أساس مفيد أولا، والنظرية مع الحدود المصادفة.
scikit-learn أم TensorFlow للبدء ؟
scikit-learn دون تردد : جدولي وCPU وواجهة وحيدة ونتائج في 5 أسطر — ثمانون % من الحاجات المهنية. وTensorFlow أو PyTorch بعد ذلك، للصور والنص والصوت عبر نماذج مدربة مسبقا تُعدَّل. فالتعلم العميق لجدول عملاء شاحنة لتوصيل رسالة.
أي مكتبة للبدء في تعلم الآلة ؟