{"id":"l-ml-1-1","courseId":"ml-crash-course","lang":"ar","kind":"intro","summary":"اشرح ما الذي يفعله تعلّم الآلة بشكل مختلف عن القواعد المكتوبة يدويًا، وميّز بين المسائل الموجَّهة وغير الموجَّهة، وصِف سؤال انقطاع العملاء الذي تجيب عنه هذه الدورة.","html":"<p>لدى Cartwheel، المتجر الإلكتروني الذي ستعمل معه في هذه الدورة، مشكلة يعرفها كل متجر لا يعتمد على الاشتراكات: العملاء يبتعدون دون أن يودّعوا. لا أحد يُلغي شيئًا؛ هم فقط يتوقفون عن الطلب. يريد فريق التسويق إرسال عرض استرجاع إلى العملاء الذين أوشكوا على الانقطاع، قبل أن يرحلوا فعلًا. لكن أيّ العملاء؟</p>\n<p>يمكنك كتابة قاعدة: “إذا لم يطلب العميل شيئًا منذ 90 يومًا، أرسل له العرض”. هذه بداية جيدة، وستقيسها بشكل صحيح في درس لاحق. لكن انقطاع العملاء (churn) يعتمد على أكثر من رقم واحد. العميل الذي لديه خمسة عشر طلبًا وغاب شهرًا يختلف عن مشترٍ لمرة واحدة غاب شهرًا. وكتابة قواعد لكل تركيبة من مدة العضوية وعدد الطلبات والإنفاق والقسائم وتذاكر الدعم تخرج عن السيطرة بسرعة.</p>\n<h2 id=\"sec-1\" tabindex=\"-1\">قواعد مستخلصة من الأمثلة</h2>\n<p>يقلب تعلّم الآلة (machine learning) المهمة رأسًا على عقب. فبدل أن تكتب القواعد بنفسك، تجمع أمثلة تعرف إجابتها مسبقًا، وتجد خوارزمية ما قاعدةً تناسبها. بالنسبة إلى Cartwheel، هذا يعني العملاء السابقين، وكيف كانت بياناتهم في تاريخ معيّن، وهل طلبوا مرة أخرى خلال الـ 90 يومًا التالية.</p>\n<figure class=\"diagram\"><svg class=\"diagram-svg\" focusable=\"false\" viewBox=\"0 0 680 230\" role=\"img\" aria-labelledby=\"l-ml-1-1-t1\"><defs><marker id=\"arrow-l-ml-1-1-1\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 z\" class=\"d-arrowhead\"/></marker></defs>\n  <title id=\"l-ml-1-1-t1\">في البرمجة التقليدية تدخل القواعد والبيانات وتخرج الإجابات. في تعلّم الآلة تدخل البيانات والإجابات المعروفة وتخرج قاعدة متعلَّمة، هي النموذج.</title>\n  <text class=\"d-label-strong\" x=\"20\" y=\"30\">البرمجة التقليدية</text>\n  <rect class=\"d-box\" x=\"20\" y=\"45\" width=\"130\" height=\"44\" rx=\"10\"/>\n  <text class=\"d-label\" x=\"85\" y=\"72\" text-anchor=\"middle\">القواعد</text>\n  <rect class=\"d-box\" x=\"170\" y=\"45\" width=\"130\" height=\"44\" rx=\"10\"/>\n  <text class=\"d-label\" x=\"235\" y=\"72\" text-anchor=\"middle\">البيانات</text>\n  <path class=\"d-arrow\" d=\"M310 67 L400 67\" marker-end=\"url(#arrow-l-ml-1-1-1)\"/>\n  <rect class=\"d-box-accent\" x=\"410\" y=\"45\" width=\"150\" height=\"44\" rx=\"10\"/>\n  <text class=\"d-label\" x=\"485\" y=\"72\" text-anchor=\"middle\">الإجابات</text>\n  <text class=\"d-label-strong\" x=\"20\" y=\"140\">تعلّم الآلة</text>\n  <rect class=\"d-box\" x=\"20\" y=\"155\" width=\"130\" height=\"44\" rx=\"10\"/>\n  <text class=\"d-label\" x=\"85\" y=\"182\" text-anchor=\"middle\">البيانات</text>\n  <rect class=\"d-box\" x=\"170\" y=\"155\" width=\"130\" height=\"44\" rx=\"10\"/>\n  <text class=\"d-label\" x=\"235\" y=\"182\" text-anchor=\"middle\">الإجابات</text>\n  <path class=\"d-arrow\" d=\"M310 177 L400 177\" marker-end=\"url(#arrow-l-ml-1-1-1)\"/>\n  <rect class=\"d-box-primary\" x=\"410\" y=\"155\" width=\"150\" height=\"44\" rx=\"10\"/>\n  <text class=\"d-label\" x=\"485\" y=\"182\" text-anchor=\"middle\">القواعد (نموذج)</text>\n</svg><figcaption>البرمجة التقليدية مقابل تعلّم الآلة</figcaption></figure>\n<p>تُسمّى القاعدة المتعلَّمة <strong>نموذجًا (model)</strong>. وبمجرد أن يصبح لديك، تعطيه عملاء جددًا فيتنبأ بإجابتهم. هذه هي الفكرة كلها؛ وبقية الدورة تدور حول تنفيذها جيدًا ومعرفة متى تستحق التنبؤات الثقة.</p>\n<p>إليك الجدول الذي ستقضي معه معظم الدورة. كل صف عميل، وكل عمود معلومة معروفة عنه في 30 سبتمبر 2025، والعمود <code dir=\"ltr\">churned</code> يسجّل ما حدث بعد ذلك.</p>\n<div class=\"code-block\" dir=\"ltr\" data-lang=\"python\" data-run=\"python\" data-index=\"0\"><div class=\"code-head\"><span class=\"code-title\">Python</span><span class=\"code-actions\"><button type=\"button\" class=\"code-btn code-run\" data-action=\"run\" data-lang=\"python\" data-index=\"0\" aria-label=\"شغّل هذا المثال\"><svg class=\"icon \" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\"/></svg><span>تشغيل</span></button><button type=\"button\" class=\"code-btn\" data-action=\"copy\" aria-label=\"نسخ الكود\"><svg class=\"icon \" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/></svg><span>نسخ</span></button></span></div><pre class=\"shiki\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">import</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> pandas </span><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">as</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> pd</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">churn </span><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">=</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> pd.read_csv(</span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"churn.csv\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">)</span></span>\n<span class=\"line\"><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">print</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">(churn.shape)</span></span>\n<span class=\"line\"><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">print</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">(churn[[</span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"orders\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"days_since_last_order\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"support_tickets\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"churned\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">]].head())</span></span>\n<span class=\"line\"><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">print</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">(</span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"Churn rate:\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">round</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">(churn[</span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"churned\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">].mean(), </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">3</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">))</span></span></code></pre><div class=\"run-output\" data-run-output=\"0\" hidden></div></div>\n<p>لدينا 398 عميلًا، 55% منهم لم يطلبوا مرة أخرى خلال 90 يومًا. الأعمدة التي تتنبأ انطلاقًا منها هي الـ <strong>features (الخصائص)</strong>؛ والعمود الذي تتنبأ به هو الـ <strong>target (الهدف)</strong>، ويُسمّى أيضًا الـ label.</p>\n<h2 id=\"sec-2\" tabindex=\"-1\">أنواع التعلّم</h2>\n<p><strong>التعلّم الموجَّه (supervised learning)</strong> فيه عمود هدف. الأمثلة تأتي مع إجاباتها، ويتعلّم النموذج الربط بين الـ features والإجابة. وله نوعان بحسب الهدف:</p>\n<ul>\n<li><strong>التصنيف (classification)</strong>: الهدف فئة. هل سينقطع هذا العميل، نعم أم لا؟ هل هذا الورم حميد أم خبيث؟ ما الرقم المكتوب في هذه الصورة؟</li>\n<li><strong>الانحدار (regression)</strong>: الهدف رقم. كم سينفق هذا العميل في العام القادم؟ إلى أيّ حدّ سيتقدّم المرض؟</li>\n</ul>\n<p><strong>التعلّم غير الموجَّه (unsupervised learning)</strong> لا هدف فيه. تطرح على البيانات سؤالًا أكثر مرونة: أيّ العملاء يشبه بعضهم بعضًا؟ هل يمكن تلخيص ثلاثين عمودًا في عمودين؟ ستتعرّف على العنقدة (clustering) وPCA، وهما الأداتان الأساسيتان هنا، في القسم 5.</p>\n<aside class=\"callout callout-mistake\" role=\"note\"><p class=\"callout-title\"><svg class=\"icon \" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/></svg><span><span class=\"callout-kind\">خطأ شائع</span><span class=\"callout-sep\" aria-hidden=\"true\"> · </span>اللجوء إلى نموذج حين تكفي قاعدة</span></p>\n<p>إذا كنت تستطيع كتابة القاعدة وكانت صحيحة، فاكتبها. “الطلبات التي تتجاوز 10,000 دولار تحتاج إلى مراجعة” قاعدة، وليست مسألة تعلّم. النماذج تكلّف بيانات وتدريبًا ومراقبة وتفسيرات. وهي تؤتي ثمارها حين يكون النمط حقيقيًا لكنه أعقد من أن يُصاغ يدويًا.</p>\n</aside>\n<h2 id=\"sec-3\" tabindex=\"-1\">كيف تسير هذه الدورة</h2>\n<p>ستبني كل شيء في scikit-learn، مكتبة Python المعيارية لتعلّم الآلة الكلاسيكي، وستشغّله في المتصفّح. كل قسم يضيف طبقة:</p>\n<ol>\n<li>سير العمل، وتقسيم بيانات التدريب والاختبار، وواجهة scikit-learn، وخطوط الأساس.</li>\n<li>الانحدار على مجموعة بيانات طبية، مع رسم دالة الخسارة والـ gradient descent.</li>\n<li>التصنيف على بيانات انقطاع العملاء: الانحدار اللوجستي والأشجار والنماذج المجمّعة والمقاييس المهمة فعلًا.</li>\n<li>العادات التي تُبقيك صادقًا: التحقق المتقاطع، والـ pipelines، والضبط، وتسرّب البيانات.</li>\n<li>العنقدة، والشبكات العصبية، وموقع النماذج اللغوية الكبيرة، والإنصاف، والإطلاق.</li>\n</ol>\n<p>عادة واحدة تسري في كل ذلك: قبل أن تصدّق أي نتيجة، تسأل “مقارنةً بماذا؟”. نموذج بدقة 73% يبدو جيدًا حتى تعرف أن تخمين “منقطع” لكل العملاء يحقق 55%، وأن قاعدة من سطر واحد تحقق 72%. يبدأ الدرس التالي بأهم خطوة في هذه العادة: أن تضع جزءًا من البيانات جانبًا لتقيس بأمانة.</p>\n","toc":[{"id":"sec-1","text":"قواعد مستخلصة من الأمثلة","level":2},{"id":"sec-2","text":"أنواع التعلّم","level":2},{"id":"sec-3","text":"كيف تسير هذه الدورة","level":2}],"takeaways":["يأخذ تعلّم الآلة أمثلة من مدخلات معروفة الإجابة، وينتج دالة تتنبأ بالإجابة لمدخلات جديدة.","يحتاج التعلّم الموجَّه إلى عمود هدف معروف القيم (label)؛ أما التعلّم غير الموجَّه فيبحث عن بنية في بيانات بلا هدف.","التنبؤ برقم هو انحدار (regression)؛ والتنبؤ بفئة هو تصنيف (classification).","إذا كانت قاعدة قصيرة أو استعلام SQL يجيب عن السؤال بما يكفي، فلا حاجة إلى نموذج."],"further":[{"title":"scikit-learn: An introduction to machine learning","url":"https://scikit-learn.org/stable/tutorial/basic/tutorial.html"},{"title":"scikit-learn User Guide","url":"https://scikit-learn.org/stable/user_guide.html"}],"quiz":[{"q":"<p>يريد Cartwheel تقسيم عملائه إلى بضعة أنماط تسوّق، لكن أحدًا لم يصنّف أي عميل بنمط معيّن. ما نوع هذه المسألة؟</p>","options":[{"text":"تصنيف موجَّه، لأن الناتج فئة.","why":"يحتاج التصنيف إلى أمثلة تُعرف فيها الفئة الصحيحة مسبقًا. وهنا لا توجد labels يُتعلَّم منها."},{"text":"تعلّم غير موجَّه، لأنه لا يوجد عمود هدف يُتعلَّم منه.","why":"صحيح. العثور على مجموعات في بيانات بلا labels هو العنقدة (clustering)، وهي مهمة كلاسيكية من التعلّم غير الموجَّه."},{"text":"انحدار، لأن بيانات العملاء أرقام في معظمها.","why":"الانحدار يتعلّق بكون الناتج رقمًا، لا المدخلات. المدخلات الرقمية أمر طبيعي في كل أنواع النماذج."}],"answer":1},{"q":"<p>أيّ هذه الأسئلة مسألة انحدار؟</p>","options":[{"text":"هل سيقدّم هذا العميل طلبًا آخر خلال الـ 90 يومًا القادمة؟","why":"الإجابة نعم أو لا، أي فئة. وهذا يجعلها مسألة تصنيف."},{"text":"أيّ فريق من فرق الدعم الخمسة يجب أن يتولّى هذه التذكرة؟","why":"خمسة فرق محتملة ما زالت مجموعة من الفئات، فهذه مسألة تصنيف متعدد الفئات."},{"text":"كم سينفق هذا العميل خلال العام القادم؟","why":"صحيح. الهدف مبلغ مالي متصل، وهذا ما يجعلها مسألة انحدار."}],"answer":2},{"q":"<p>يقترح زميلك نموذجًا لتمييز الطلبات التي تتجاوز 10,000 دولار لمراجعتها يدويًا. ما أفضل ردّ؟</p>","options":[{"text":"درِّب مصنِّفًا على الطلبات التي مُيّزت سابقًا ليتعلّم النمط.","why":"القاعدة معروفة ودقيقة أصلًا. النموذج لا يستطيع إلا أن يقاربها، ويضيف تدريبًا ومراقبة وأخطاء."},{"text":"اكتب القاعدة <code dir=\"ltr\">total &gt; 10000</code>؛ لا حاجة إلى التعلّم حين تستطيع صياغة القاعدة.","why":"صحيح. يستحق تعلّم الآلة كلفته حين تكون القاعدة مجهولة أو أعقد من أن تُكتب يدويًا."},{"text":"استخدم العنقدة لمعرفة الطلبات التي تبدو كبيرة.","why":"تجد العنقدة مجموعات بحسب التشابه، ولا يمكنها معرفة الحدّ الذي وضعته شركتك، وهو موجود لديك أصلًا."}],"answer":1}],"exercise":{"kind":"choice","multiple":true,"options":["churn-flag","spend-next-year","find-segments","big-order-rule","ticket-team"],"correct":["churn-flag","spend-next-year","ticket-team"],"title":"أيّ هذه الأفكار مسائل تعلّم موجَّه؟","prompt":"<p>طرحت فرق Cartwheel خمس أفكار. اختر كل فكرة تمثّل مسألة <strong>تعلّم موجَّه (supervised learning)</strong>: أي مسألة لديك فيها أمثلة سابقة معروفة الإجابة، وتريد نموذجًا يتنبأ بهذه الإجابة لحالات جديدة.</p>\n","hints":["اسأل عن كل فكرة: هل يوجد في البيانات التاريخية عمود من الإجابات المعروفة؟","التعلّم الموجَّه يشمل الفئات (التصنيف) والأرقام (الانحدار) معًا.","فكرة واحدة لا labels لها إطلاقًا، وأخرى قاعدة يستطيع أحدهم كتابتها الآن."],"explanation":"<p>إشارات الانقطاع، والإنفاق في العام القادم، وتوجيه التذاكر كلها لها إجابات تاريخية يُتعلَّم منها: مسألتا تصنيف ومسألة انحدار. أما اكتشاف أنماط التسوّق فلا labels له، فهو عنقدة غير موجَّهة. وحدّ المراجعة عند 10,000 دولار قاعدة معروفة، فيكفيه <code dir=\"ltr\">if</code> ولا يحتاج إلى نموذج.</p>\n","checkLabels":{},"optionText":{"churn-flag":{"text":"التنبؤ بما إذا كان العميل سيطلب مرة أخرى خلال الـ 90 يومًا القادمة، باستخدام عملاء سابقين نعرف ما حدث لهم.","why":"تصنيف موجَّه: العمود التاريخي <code dir=\"ltr\">churned</code> هو الـ label."},"spend-next-year":{"text":"التنبؤ بالمبلغ الذي سينفقه العميل في العام القادم، باستخدام عملاء من سنوات سابقة.","why":"انحدار موجَّه: الإنفاق الفعلي للعملاء السابقين label رقمي."},"find-segments":{"text":"اكتشاف بضعة أنماط تسوّق بين العملاء، دون أي أنماط محدّدة مسبقًا.","why":"لا توجد labels، فهذا تعلّم غير موجَّه (عنقدة)."},"big-order-rule":{"text":"تمييز كل طلب يتجاوز 10,000 دولار لمراجعته يدويًا.","why":"القاعدة معروفة ودقيقة. اكتب الشرط؛ لا تعلّم هنا."},"ticket-team":{"text":"توجيه كل تذكرة دعم جديدة إلى واحد من خمسة فرق، باستخدام تذاكر سابقة وُجّهت توجيهًا صحيحًا.","why":"تصنيف موجَّه متعدد الفئات: قرارات التوجيه السابقة هي الـ labels."}}},"words":538,"readMinutes":3}