تستخدم MiniBatchKMeans دفعات صغيرة في التحديث. في التحديث الموثق يتحد إسهام النقاط المسندة حاليًا إلى المركز مع وزن تاريخه السابق. [1] [2]
الخلاصة السريعة
الدفعة الجديدة لا تمحو تاريخ المركز في التحديث التراكمي. يلزم معرفة الوزن السابق والنقاط المسندة إليه لفهم موضعه الجديد.
- حجم الدفعة يحدد عدد العينات في خطوة التحديث، ولا يعني استبدال المركز بمتوسط هذه الدفعة وحدها. [1] [2]
- مع تاريخ متساوي الأوزان للقيمتين 0 و 2، وإسناد قيمة 8 جديدة إلى المركز نفسه، ينتقل المتوسط من 1 إلى 10/3.
- مع ثبات الإسناد وعدم إعادة تعيين المركز والأوزان المتساوية، تضيف 8 أخرى مساهمة تعطي متوسطًا 4.5؛ العداد لا يثبت أنها سجلات فريدة.
- إذا لم تسند إليه نقطة، يحتفظ المركز بموضعه في التحديث الموثق؛ حساب القصور النهائي على كامل البيانات إعداد منفصل. [1] [2]
دفعة صغيرة وتاريخ لا يختفي
لفهم كلمة «دفعة»، تخيل سجلًا منفصلًا لكل مركز: موضعه الحالي، ووزن المساهمات السابقة التي أسندت إليه. سنفترض ثبات الإسناد إلى مركز واحد، وأوزانًا متساوية، وعدم إعادة تعيين هذا المركز.
نحتفظ بالمساهمات القديمة في صورة مجموع وعداد. عندما تصل قيمة جديدة، نضيفها إلى المجموع ونزيد العداد. لا نحتاج إلى الاحتفاظ بقائمة الماضي في حسابنا اليدوي لأن مجموعها معروف.
هذا المثال يعزل خطوة تحديث محددة. لم نفترض أن البرنامج يبدأ فعلًا بسجل من نقطتين بهذه الطريقة، أو أن جميع نقاط الدفعة ستختار مركزًا واحدًا في مسألة تحتوي مراكز متعددة.
من متوسط واحد إلى عشرة أثلاث
لنفترض أن التاريخ المسند إلى المركز هو 0 و 2؛ المجموع 2 والعدد 2، لذلك المركز عند 1. تصل مساهمة جديدة قيمتها 8، فنحسب (2×1+8)/3=10/3.
يصبح الموضع نحو 3.333. أخذ متوسط الدفعة الجديدة وحدها كان سيعطينا 8، وهو جواب مختلف لأنه أسقط القيمتين السابقتين. الفرق هنا ناتج من حفظ التاريخ، لا من تقريب عشري.
يمكن مراجعة العملية دون القاعدة المختصرة: مجموع القيم الثلاث 0+2+8=10. قسمته على ثلاثة يعيد النتيجة نفسها. هذا فحص حسابي للمثال، لا مقارنة أداء بين نموذجين مدربين.
هل العدد أربعة يعني أربعة سجلات أصلية؟
إذا وصلت مساهمة ثانية قيمتها 8 وأسندت إلى المركز نفسه، يصبح المجموع 18 والعداد أربعة؛ المركز الجديد 18/4=4.5. لا نعيد وزن الماضي على أساس مركز قديم تقريبناه إلى 3.33.
القيمتان 8 قد تمثلان سجلين مختلفين، أو تكرار معالجة القيمة نفسها. عداد المساهمات وحده لا يحسم هذه الهوية. اكتب معرف السجل بجانب قيمته إذا كان السؤال يتعلق بعدد الصفوف الفريدة.
عند تغير إسناد النقاط أو إعادة تعيين مركز، لا تنقل حسابنا كما هو. شروط ثبات الإسناد والتاريخ جزء من النتيجة؛ حذفها يجعل 4.5 تبدو جوابًا لأي دفعتين تحملان الرقم نفسه.
خطوة التحديث وحساب النتيجة الكاملة
يحافظ الكود الموثق على المركز القديم إذا لم تسند إليه نقطة في الدفعة. [2]
يحدد compute_labels في الواجهة الموثقة حساب الإسناد والقصور على كامل البيانات بعد اكتمال التدريب، وهو مختلف عن التحديث من دفعات صغيرة. [1]
إذا لم تصل مساهمة في مثالنا يبقى المركز 4.5. أما تقييم جميع نقاط ملف آخر فيحتاج إلى تعريف الملف والمراكز النهائية. لا يكفي اسم MiniBatch لاستنتاج زمن التنفيذ أو استهلاك الذاكرة على جهازك، ولم نقس أيًا منهما هنا.
المصادر ومتابعة القراءة
- scikit-learn: MiniBatchKMeans (يفتح في نافذة جديدة)scikit-learn.org
- scikit-learn source: _k_means_minibatch (يفتح في نافذة جديدة)raw.githubusercontent.com
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
