تحليل البيانات في لغة R, علم النفس الإحصائي

التجميع بطريقة K-Means في لغة R: مثال خطوة بخطوة


يمثل التحليل العنقودي (Cluster Analysis) أحد الركائز المنهجية الأكثر رسوخاً وأهمية في ترسانة الإحصاء الحوسبي الحديث، وتعلم الآلة غير الخاضع للإشراف. وفي ظل الانفجار الهائل للبيانات متعددة الأبعاد عبر مختلف الحقول العلمية—من القياس النفسي والعلوم السلوكية، مروراً بالعلوم البيولوجية، ووصولاً إلى تحليل الأسواق وسلوك المستهلك—تبرز الحاجة الملحة إلى خوارزميات تصنيفية تمتلك القدرة على تفكيك البنى المعقدة، واكتشاف الأنماط المستترة دون الاستناد إلى توجيه مسبق أو تصنيفات قبلية. وتتبوأ خوارزمية التجميع بالمتوسطات، المعروفة بـ K-Means Clustering، مكانة الصدارة بين أقرانها نظراً لأناقتها الرياضية، وسرعتها الحسابية الفائقة، وقابليتها الممتازة للتفسير الهندسي والإحصائي.

تستند هذه الخوارزمية التكرارية إلى تقسيم فضاء المشاهدات الإحصائية إلى عدد محدد سلفاً من التجمعات المتجانسة داخلياً والمتباينة خارجياً، محققة بذلك مبدأ الاختزال الفعال لأبعاد التعقيد البياني. غير أن التطبيق الدقيق والنزيه لخوارزمية K-Means يتجاوز مجرد استدعاء دالة برمجية جاهزة؛ إذ يتطلب فهماً عميقاً للأسس الرياضية لدالة الهدف، وطبيعة التوزيعات الاحتمالية، وأثر معيارية المتغيرات، والحساسية الفائقة للقيم الشاذة ونقاط التهيئة الابتدائية، إضافة إلى التحديات المنهجية المتعلقة بتحديد العدد الأمثل للعناقيد والتحقق من استقرارها الإحصائي وقابليتها للتعميم.

في هذا الدليل الأكاديمي الموسع والشامل، سنخوض رحلة متكاملة عبر الأبعاد النظرية والتطبيقية لخوارزمية K-Means باستخدام بيئة لغة البرمجة الإحصائية R. سنبدأ بتفكيك البنية المفاهيمية والاشتقاقات الرياضية للخوارزمية، وننتقل تدريجياً عبر مراحل تنظيف وتجهيز البيانات، وضبط المعيارية الحسابية، وتحديد العدد الأمثل للمجموعات بواسطة أحدث المؤشرات التشخيصية، وصولاً إلى التنفيذ البرمجي المتقدم، وتفسير المخرجات الإحصائية، وبناء التصورات البصرية عالية الجودة، وانتهاءً بأساليب التحقق الإحصائي القائم على إعادة أخذ العينات والمفاضلة المنهجية مع البدائل الخوارزمية الأخرى.

1. مقدمة إلى التحليل العنقودي وخوارزمية K-Means في الإحصاء الحوسبي

1.1 مفهوم التعلم غير الخاضع للإشراف (Unsupervised Learning)

يندرج التحليل العنقودي ضمن المظلة الأوسع لما يُعرف في الذكاء الاصطناعي والإحصاء الحوسبي بـ التعلم غير الخاضع للإشراف (Unsupervised Learning). ويكمن الفرق الجوهري والأصيل بين النمذجة التنبؤية القائمة على الإشراف (Supervised Learning)—مثل نماذج الانحدار الخطي أو التصنيف اللوجستي—وبين التحليل الاستكشافي غير الخاضع للإشراف، في غياب “متغير الاستجابة” أو “التسمية الهدف” (Target Label). في النماذج الخاضعة للإشراف، تسعى الخوارزمية إلى تعلم دالة رياضية ترسم خريطة تربط بين المتغيرات المستقلة ومتغير تابع معروف مسبقاً، بينما ينصب الهدف الأساسي في التعلم غير الإشرافي على استنطاق مصفوفة البيانات ذاتها، لاستخراج الأنماط الكامنة (Latent Patterns) والتشكيلات الهيكلية المكتومة دون أي توجيه خارجي.

يتيح هذا النهج الاستكشافي للباحثين والمحللين تجاوز القيود المفروضة بالافتراضات المسبقة، مما يجعله أداة بالغة الأهمية في قياس وتصنيف السمات النفسية والأنماط السلوكية في العلوم الإنسانية والاجتماعية. فعلى سبيل المثال، عند دراسة اضطرابات الشخصية أو قياس مستويات الاحتراق النفسي، لا يكون لدى الباحث تصنيف قطعي لكل مستجيب، بل توجد مصفوفة من الدرجات السلوكية متعددة الأبعاد. هنا تتدخل خوارزميات التجميع لتحويل هذا الطيف المعقد إلى بروفايلات (Profiles) واضحة المعالم، تسهم في اختزال التعقيد المعرفي وتمكين الباحث من فهم التجمعات الطبيعية داخل المجتمع الإحصائي.

علاوة على ذلك، تؤدي النمذجة العنقودية دوراً حيوياً في تلخيص أبعاد البيانات الضخمة (Dimensionality Compression)، حيث يتم تمثيل آلاف المشاهدات الفردية بعدد محدود من النماذج الأصلية أو المراكز المرجعية، مما يمهد الطريق لإجراء دراسات طولية متقدمة أو بناء استراتيجيات تدخل سلوكي موجهة بدقة عالية لكل نمط مستكشف إحصائياً.

1.2 التعريف الرياضي لخوارزمية K-Means وأهدافها

تُعرف خوارزمية K-Means رياضياً بأنها أسلوب تجزيئي (Partitioning Clustering Method) يهدف إلى تقسيم مجموعة بيانات تتكون من n من المشاهدات الإحصائية، المقاسة عبر p من المتغيرات المستمرة، إلى عدد K من المجموعات المنفصلة وغير المتداخلة تماماً، بحيث تنتمي كل مشاهدة إلى المجموعة ذات المركز الأقرب إليها، وفق مقياس هندسي محدد.

يرتكز المنطق الرياضي لـ K-Means على تحسين ثنائية هندسية محورية: تعظيم التجانس الداخلي (Intra-cluster Similarity) داخل كل عنقود على حدة، وفي الوقت ذاته تعظيم التباين والتفرد بين المجموعات المختلفة (Inter-cluster Dissimilarity). يتم تجسيد مفهوم التجانس الداخلي عبر حساب المسافة بين كل نقطة بيانية والمركز الهندسي للعنقود الذي تنتمي إليه، حيث يُطلق على هذا المركز اسم “المتوسط المركزي” أو “السنترويد” (Centroid). ويمثل السنترويد النقطة الإحداثية في الفضاء متعدد الأبعاد التي تساوي متوسط جميع المشاهدات التابعة لذلك العنقود عبر كافة المتغيرات.

تتبلور الغاية الحسابية للخوارزمية في تقليل قيمة دالة الهدف المعروفة باسم “مجموع المربعات داخل المجموعات” (Within-Cluster Sum of Squares – WCSS)، والتي تعبر عن الطاقة الحركية الكامنة لتشتت النقاط حول مراكزها. كلما انخفضت قيمة WCSS، دلّ ذلك على أن العناقيد أكثر إحكاماً وتماسكاً في الفضاء الإقليدي، مما يعزز من الصدق البنائي للأنماط المستخلصة وقدرتها على تمثيل التكتلات الواقعية للبيانات.

1.3 أهمية لغة R كبيئة برمجية للتحليل الإحصائي المتقدم

تعتبر بيئة R الإحصائية الخيار المعياري والأكثر موثوقية للأكاديميين وعلماء البيانات المتخصصين في القياس الإحصائي المتقدم والنمذجة الرياضية. وتستمد لغة R تفوقها الجوهري من بنيتها المصممة أصلاً للتعامل مع العمليات المصفوفية الجبرية والحوسبة الإحصائية بكفاءة متناهية، مما يمنحها سرعة فائقة في معالجة خوارزميات التحسين التكراري مثل K-Means.

تحتوي لغة R على منظومة متكاملة من المكتبات المتخصصة التي تتجاوز مجرد تنفيذ الخوارزمية؛ إذ توفر حزم متقدمة لتحليل القياس النفسي، والتحقق الإحصائي الصارم، والتعامل مع البيانات المفقودة، واختبار الفروض المعلمية واللامعلمية المصاحبة لتشكيل العناقيد. هذا التكامل العضوي بين خوارزميات التجميع وحزم النمذجة التكميلية يمنح الباحثين قدرة لا تضاهى على الانتقال السلس من مرحلة الاستكشاف العنقودي إلى مرحلة النمذجة السببية والتحليل البنائي.

فضلاً عن ذلك، تمتاز لغة R بالمرونة الفائقة في تحقيق معايير “العلم القابل للتكرار” (Reproducible Research)، حيث تتيح الشيفرات البرمجية المفتوحة والوثائق التفاعلية توثيق كل خطوة إجرائية، مما يضمن إمكانية التحقق المستقل من النتائج وفق أعلى المعايير الأكاديمية. يضاف إلى ذلك قدرات التصوير البصري المذهلة التي تتيحها بيئة R، والتي تمكن الباحث من ترجمة الفضاءات الرياضية متعددة الأبعاد إلى مخططات بيانية هندسية بالغة الدقة والوضوح التفسيري.

2. الأسس الرياضية والنظرية لخوارزمية K-Means

2.1 صياغة دالة الهدف ومعادلة مجموع المربعات داخل المجموعة (WCSS)

تعتمد خوارزمية K-Means على صياغة رياضية صارمة تستهدف تقليل التشتت الكلي للمشاهدات بالنسبة لمراكزها. لنفترض أن لدينا مصفوفة بيانات X تحتوي على n من المشاهدات في فضاء حقيقي من البعد p، ونرغب في تقسيم هذه المشاهدات إلى K من المجموعات المنفصلة المسماة $S = {S_1, S_2, dots, S_K}$. يتم التعبير عن دالة الهدف الرياضية لمعيار مجموع المربعات داخل المجموعات (WCSS) بالمعادلة التالية:

$$\text{WCSS} = \sum_{k=1}^{K} \sum_{x_i in S_k} ||x_i – \mu_k||^2$$

حيث تمثل $x_i$ متجه المشاهدة الفردية التابعة للعنقود $S_k$، بينما تمثل $\mu_k$ المتجه المركزي (Centroid) للعنقود $S_k$، المحسوب كمتوسط حسابي لجميع المتجهات المنتمية إليه. أما الرمز $||cdot||$ فيعبر عن المسافة الإقليدية القياسية (Standard Euclidean Distance) في الفضاء متعدد الأبعاد، والتي تُحسب بين النقطة $x_i = (x_{i1}, x_{i2}, dots, x_{ip})$ والمركز $\mu_k = (\mu_{k1}, \mu_{k2}, dots, \mu_{kp})$ وفق الصيغة:

$$||x_i – \mu_k|| = \sqrt{\sum_{j=1}^{p} (x_{ij} – \mu_{kj})^2}$$

تؤدي عملية تربيع هذه المسافة في دالة الهدف إلى مضاعفة العقوبة الحسابية الواقعة على النقاط البعيدة عن المركز، مما يجعل دالة التحسين تسعى بصرامة نحو إيجاد مراكز تضمن تقارب المشاهدات. ومن الناحية الحسابية، فإن التحديث التكراري للمتوسطات يضمن انخفاض قيمة دالة التحسين أو ثباتها عند كل خطوة، حتى تصل الخوارزمية إلى نقطة التقارب (Optimization Convergence). غير أن هذه الصياغة التربيعية ذاتها تجعل دالة الهدف شديدة التأثر بالقيم الشاذة (Outliers)، حيث يمكن لنقطة متطرفة واحدة أن تسحب المركز نحوها بقوة مفرطة وتؤدي إلى تشويه الهيكل العنقودي الحقيقي.

2.2 خطوات خوارزمية لويد (Lloyd’s Algorithm) والتقارب الحسابي

يتم تنفيذ تحسين دالة WCSS تقليدياً عبر خوارزمية تكرارية وضع أسسها العالم ستيوارت لويد (Stuart Lloyd)، وتتألف من أربع مراحل إجرائية متتابعة تضمن الوصول إلى الاستقرار الإحصائي المحلي:

  • أولاً: مرحلة التهيئة الابتدائية (Initialization Phase): يتم اختيار K من النقاط في الفضاء الإحصائي لتمثل المراكز العنقودية الابتدائية ($\mu_1^{(0)}, \mu_2^{(0)}, dots, \mu_K^{(0)}$). يتم هذا الاختيار عادة بأسلوب عشوائي، أو بالاعتماد على خوارزميات تهيئة متقدمة مثل K-Means++ لتسريع التقارب وتفادي النتائج الرديئة.
  • ثانياً: خطوة التعيين الإسنادي (Assignment Step): يتم حساب المسافة الإقليدية بين كل مشاهدة $x_i$ وجميع المراكز العنقودية المتاحة. تُسند المشاهدة حصرياً إلى العنقود الذي يمتلك المركز الأقرب إليها جغرافياً في الفضاء الرياضي، وفق الشرط التنافسي:
    $$S_k^{(t)} = {x_i : ||x_i – \mu_k^{(t)}||^2 le ||x_i – \mu_j^{(t)}||^2 \quad \forall j, 1 le j le K}$$
  • ثالثاً: خطوة التحديث الحسابي (Update Step): بعد اكتمال توزيع كافة المشاهدات على العناقيد، يُعاد حساب إحداثيات المراكز العنقودية ($\mu_k^{(t+1)}$) لتساوي المتوسط الحسابي الدقيق لجميع النقاط التي أُسندت حديثاً إلى ذلك العنقود:
    $$\mu_k^{(t+1)} = \frac{1}{|S_k^{(t)}|} \sum_{x_i in S_k^{(t)}} x_i$$
  • رابعاً: معيار التوقف والتقارب النهائي (Convergence Criterion): تُكرر الخطوتان الثانية والثالثة بشكل تتابعي حتى يتحقق شرط التوقف، والذي يتمثل عادة في ثبات تعيينات المجموعات (أي عدم انتقال أي مشاهدة من عنقود لآخر)، أو عندما يصبح التغير في مواقع المراكز العنقودية أصغر من قيمة عتبة متناهية في الصغر ($epsilon$)، أو عند بلوغ الحد الأقصى المسموح به من التكرارات الحسابية.

2.3 الافتراضات الإحصائية والقيود الهندسية لـ K-Means

على الرغم من القوة الحسابية الفائقة لخوارزمية K-Means، إلا أنها تستند إلى مجموعة صارمة من الافتراضات الهندسية والإحصائية الضمنية التي ينبغي على الباحث إدراكها بدقة لتجنب الوقوع في أخطاء الاستدلال والتفسير. تفترض الخوارزمية بطبيعتها الرياضية أن العناقيد تتخذ أشكالاً كروية متماثلة ومحدبة (Spherical and Convex Shapes) في الفضاء متعدد الأبعاد، وأنها متساوية التباين وحجم الانتشار (Isotropic Variance). ويعود ذلك إلى اعتمادها على المسافة الإقليدية التي تعامل جميع الاتجاهات المكانية بالتساوي.

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

بالإضافة إلى ذلك، تُعد خوارزمية K-Means خوارزمية تحسين موضعي (Local Optimization Algorithm)، مما يعني أنها معرضة باستمرار للوقوع في فخ “الحلول المحلية الدنيا” (Local Minima). وتتوقف جودة الحل النهائي بشكل حرج على المواقع العشوائية للمراكز الابتدائية، فقد تؤدي نقطة انطلاق غير موفقة إلى استقرار الخوارزمية عند تقسيم عنقودي رديء إحصائياً ولا يمثل البنية التوليدية الأصلية للظاهرة محل الدراسة.

3. إعداد بيئة العمل وتثبيت الحزم البرمجية المتخصصة في R

3.1 تجهيز المكتبات الأساسية لمعالجة وتحليل البيانات

يتطلب الشروع في التحليل العنقودي داخل بيئة R تجهيز منظومة برمجية متكاملة تتناغم فيها أدوات استيراد وتنظيف وهندسة البيانات مع دوال التحليل الإحصائي المتقدم. تُعد منظومة حزم tidyverse حجر الزاوية لأي مشروع تحليلي معاصر؛ إذ توفر مكتبات رائدة مثل dplyr للتلاعب بالجداول وتصفيتها، وtibble لإدارة هياكل البيانات، وreadr وreadxl للاستيراد السريع للملفات الإحصائية المختلفة.

إلى جانب ذلك، تبرز حزمة cluster كواحدة من أمهات المكتبات الإحصائية في R، حيث تضم تطبيقات عالية الكفاءة لخوارزميات التجميع المتنوعة، إلى جانب توفير مقاييس تشخيصية متقدمة لا غنى عنها لتقييم جودة النمذجة. وبالرغم من أن بيئة R الأساسية تتضمن دالة stats::kmeans فائقة الكفاءة والمكتوبة بلغات حوسبية منخفضة المستوى مثل C وFortran لضمان أقصى سرعة تنفيذية، إلا أن تكامل هذه الحزم المتخصصة يمنح الباحث بنية تحتية برمجية صلبة تمكنه من إدارة تدفق العمل التحليلي بسلاسة واحترافية.

لتثبيت وتحميل هذه الحزم الأساسية، يُنفذ الكود الإحصائي التالي في بيئة R:

install.packages(c("tidyverse", "cluster", "factoextra", "ggfortify", "gridExtra"))

library(tidyverse)
library(cluster)

3.2 حزم التصور البصري وتلخيص المجموعات العنقودية

يُعد التمثيل البصري ركناً أساسياً لفهم وتفسير التجمعات العنقودية متعددة الأبعاد. وفي هذا السياق، تتربع حزمة factoextra على قمة الأدوات البرمجية المتخصصة في لغة R؛ إذ صُممت خصيصاً لاستخراج وتصور نتائج التحليلات الاستكشافية متعددة المتغيرات، مثل تحليل المكونات الرئيسية (PCA) والتحليل العنقودي (Cluster Analysis)، بأسلوب بصري ساحر ومستند بالكامل إلى معايير وقواعد حزمة ggplot2 الرائدة.

تتيح حزمة factoextra دوالاً متخصصة مثل fviz_nbclust() لتحديد العدد الأمثل للمجموعات بصرياً، ودالة fviz_cluster() لإسقاط المشاهدات ومراكز المجموعات على المستويات الإحداثية المنخفضة مع رسم أشكال هندسية توضيحية تحيط بكل عنقود بدقة فائقة. بالتوازي مع ذلك، تقدم حزمة ggfortify دعماً مباشراً لتحويل كائنات النماذج الإحصائية إلى رسوم بيانية فورية، بينما تتيح حزمة gridExtra ترتيب ودمج عدة مخططات تشخيصية ضمن لوحة عرض موحدة (Dashboard) تمكن الباحث من اتخاذ قرارات منهجية متكاملة بناءً على مقارنات بصرية متزامنة.

يتم استدعاء حزم التصور البصري في جلسة العمل الإحصائية عبر الشيفرة التالية:

library(factoextra)
library(ggfortify)
library(gridExtra)

3.3 ضبط التكرارية العلمية وتحديد البذور العشوائية (Seed Setting)

نظراً لأن خوارزمية K-Means تعتمد في خطوتها الأولى على توليد مراكز ابتدائية بطريقة عشوائية (Random Initialization)، فإن إعادة تشغيل نفس الكود التحليلي على نفس مصفوفة البيانات قد يسفر عن نتائج متطابقة أو متباينة قليلاً في تعيينات المشاهدات وقيم WCSS، لا سيما في مجموعات البيانات المعقدة أو ذات البنى الحدية غير الواضحة. يمثل هذا التباين تحدياً خطيراً لمبدأ النزاهة والتكرارية العلمية (Scientific Reproducibility) الذي يفرضه البحث الأكاديمي الرصين.

للتغلب الحاسم على هذه الإشكالية، توفر لغة R دالة set.seed() التي تقوم بتثبيت مولد الأرقام العشوائية الزائفة (Pseudo-Random Number Generator) داخل النظام. يضمن تمرير رقم صحيح وثابت (مثل set.seed(123) أو set.seed(2026)) قبل تنفيذ أي دالة تتضمن اختياراً عشوائياً، أن يتم توليد نفس تسلسل الأرقام ونفس المراكز الابتدائية في كل مرة يتم فيها تنفيذ الكود، سواء على نفس الجهاز أو عند قيام باحث آخر بمراجعة التحليل ومطابقة النتائج.

يُعد توثيق البذور العشوائية المستخدمة، وتفاصيل بيئة النظام وإصدارات الحزم (عبر دالة sessionInfo())، جزءاً لا يتجزأ من المعايير المنهجية الصارمة للنشر في المجلات العلمية المحكمة ذات معامل التأثير المرتفع، لضمان استقرار التحليلات وقابليتها للتدقيق والمحاكاة المستقلة.

4. تحميل البيانات الاستكشافية وتجهيزها للتحليل

4.1 استيراد البيانات وفحص البنية الأولية

تبدأ الرحلة التطبيقية للتحليل العنقودي بمرحلة استيراد البيانات الخام واستكشاف خصائصها الهيكلية. سواء كانت البيانات مستقاة من استبانات مقاييس نفسية، أو سجلات سلوكية رقمية، أو تجارب معملية، فإن الخطوة التأسيسية تتطلب قراءة الملفات بدقة باستخدام دوال مثل read_csv() أو read_excel()، ثم فحص التركيب البنائي للمتغيرات للتأكد من ملاءمتها للمتطلبات الرياضية للخوارزمية.

تتطلب خوارزمية K-Means الكلاسيكية متغيرات كمية ومستمرة حصراً، نظراً لاعتمادها الجوهري على حساب المتوسطات الحسابية والمسافات الإقليدية. ومن ثم، يتعين على المحلل استخدام دوال الفحص السريع مثل glimpse() وstr() لمراجعة الأنواع البيانية للأعمدة، واستبعاد أي متغيرات تصنيفية اسمية أو رتبية غير مناسبة، أو تحييد معرفات الهوية الفردية (مثل كود المشارك أو الرقم التعريفي ID) لضمان عدم دخولها في العمليات الحسابية الهندسية وتشويش الأبعاد المكانية للعناقيد.

يمكن إجراء الفحص الاستكشافي الأولي للأبعاد والتوزيعات الإحصائية باستخدام الكود التالي:

# استعراض البنية الإحصائية والأبعاد
dim(data_raw)
glimpse(data_raw)
summary(data_raw)

4.2 معالجة القيم المفقودة (Missing Data Imputation)

تُعد القيم المفقودة (Missing Data) من العقبات المنهجية الكبرى في نمذجة K-Means؛ فالخوارزمية بطبيعتها الجبرية الصارمة لا يمكنها حساب المسافات الإقليدية لأي مشاهدة تتضمن قيمة مفقودة واحدة في أي من أبعادها، مما يؤدي برمجياً إلى استبعاد الصف بالكامل أو توقف التنفيذ البرمجي وإطلاق رسائل الخطأ الحسابي.

يجب على الباحث تفادي الحذف العشوائي الشامل للمشاهدات ذات القيم المفقودة (Listwise Deletion) دون تمحيص؛ إذ قد يؤدي هذا الحذف الآلي إلى خفض ملحوظ في القوة الإحصائية للعينة وتشويه تمثيلها لواقع المجتمع الإحصائي المدروس، خاصة إذا كان الفقد غير عشوائي تماماً (Missing Not at Random – MNAR). بدلاً من ذلك، يُفضل استخدام أدوات استكشافية متقدمة مثل حزم visdat وnaniar لرسم خريطة توزيع الفقد وتحليله بنيوياً.

في الحالات التي تكون فيها نسبة الفقد طفيفة وموزعة عشوائياً، يمكن اللجوء إلى خوارزميات التعويض الإحصائي المتقدم (Imputation)، مثل خوارزمية التعويض بأقرب الجيران (KNN Imputation) أو التعويض المتعدد بالسلاسل المترابطة (MICE)، مما يسمح بملء الفجوات بقيم تقديرية موثوقة تحافظ على العلاقات المتبادلة والتباينات الأصلية للمصفوفة دون الإخلال بسلامة البناء الرياضي للنموذج العنقودي.

4.3 كشف ومعالجة القيم المتطرفة (Outliers Screening)

نظراً لأن دالة هدف K-Means تعتمد على تربيع المسافات الإقليدية من المتوسطات الحسابية، فإن الخوارزمية تبدي حساسية مفرطة وهشاشة ملحوظة في مواجهة القيم المتطرفة والشاذة (Outliers). يمكن لمشاهدة شاذة واحدة ذات قيمة بالغة التباعد في أحد المتغيرات أن تجتذب مركز العنقود نحوها بقوة، مما يؤدي إلى خلق عنقود مصطنع يتكون من حالة واحدة منعزلة، أو يتسبب في دمج مجموعات فرعية طبيعية وتشويه الفواصل البينية الحقيقية.

يتطلب الفحص المنهجي للقيم الشاذة دراسة الظاهرة على مستويين متكاملين: الفحص أحادي البعد (Univariate Screening) باستخدام المخططات الصندوقية (Boxplots) وحساب درجات التشتت المئيني، يليه الفحص متعدد الأبعاد (Multivariate Screening) الأكثر رصانة وحرجاً، والذي يتم عبر حساب مسافة ماهالانوبيس (Mahalanobis Distance). تقيس مسافة ماهالانوبيس مدى بعد كل نقطة عن المركز متعدد الأبعاد مع الأخذ في الاعتبار مصفوفة التباين المشترك (Covariance Matrix) بين جميع المتغيرات في آن واحد.

عند رصد القيم الشاذة المتطرفة، يمتلك المحلل خيارات منهجية مبررة: إما استبعاد هذه الحالات المؤثرة مع توثيق ذلك منهجياً في التقرير العلمي، أو تطبيق تحويلات رياضية مقلصة للمدى (مثل التحويل اللوغاريتمي أو تحويل الجذر التربيعي)، أو الانتقال إلى خوارزميات تجميع قوية ومقاومة للشذوذ مثل K-Medoids (PAM) إذا تعذر استبعاد المشاهدات لأسباب علمية موضوعية.

5. معيارية البيانات وتحجيم المتغيرات في R (Feature Scaling)

5.1 ضرورة التقييس والتحجيم في الخوارزميات المعتمدة على المسافة

تُعد خطوة تقييس وتحجيم المتغيرات (Feature Scaling) من أهم الشروط المنهجية التي لا يمكن التغاضي عنها عند تطبيق الخوارزميات الإحصائية المعتمدة على حساب المسافات الفضائية كـ K-Means. تكمن الإشكالية في أن المتغيرات المقاسة في الدراسات التطبيقية تأتي عادة بوحدات قياس شديدة التباين ومديات عددية متفاوتة للغاية؛ فعلى سبيل المثال، قد يتضمن النموذج متغيراً يقيس “الدخل السنوي بالعملة المحلية” بمدى يتراوح بين عشرات الآلاف، إلى جانب متغير يقيس “درجة القلق النفسي” على مقياس متدرج من 1 إلى 5 درجات فقط.

إذا أُدخلت هذه المتغيرات بأشكالها الخام في خوارزمية K-Means، فإن حساب المسافة الإقليدية سيهيمن عليه بصورة مطلقة وشبه تامة المتغير ذو المدى العددي الأكبر والانحراف المعياري الأعلى (الدخل السنوي)، مما يجعل الفروق الدقيقة في متغير القلق النفسي تتلاشى حسابياً وتصبح بلا أي وزن ترجيحي في تحديد انتماءات المجموعات. هذا التحيز الهندسي المصطنع يفرز عناقيد مضللة تعكس تباين متغير واحد فقط بدلاً من استيعاب التفاعل متعدد الأبعاد بين جميع الظواهر المدروسة.

تضمن معيارية البيانات منح جميع المتغيرات وزناً هندسياً متكافئاً وفرصة متساوية تماماً في تشكيل الفضاء وتحديد مواقع المراكز، فضلاً عن تسريع وتيرة التقارب الحسابي للخوارزمية ومنع التذبذب العددي أثناء عمليات التحديث التكراري للمتوسطات.

5.2 المقارنة الرياضية بين Z-Score Standardization و Min-Max Normalization

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

  • التحويل المعياري المعياري (Z-Score Standardization): يُعد الأسلوب الأكثر شيوعاً ورصانة في العلوم السلوكية والاجتماعية. يعتمد على تحويل قيم المتغير بحيث يصبح متوسطه الحسابي مساوياً للصفر تماماً ($\mu = 0$) وانحرافه المعياري مساوياً للواحد الصحيح ($\sigma = 1$)، وفق المعادلة التالية:
    $$z = \frac{x – \mu}{\sigma}$$
    يمتاز هذا التحويل بالحفاظ الكامل على شكل التوزيع الإحصائي الأصلي للبيانات، كما أنه يتعامل بمرونة أكبر مع وجود قيم قصوى ولا يحصر البيانات ضمن حدود جبرية مصطنعة وضيقة.
  • التطبيع المداوي (Min-Max Normalization): يقوم هذا التحويل بإعادة حصر وتدريج قيم المتغير ضمن مدى مغلق وثابت، يقع عادة بين الصفر والواحد الصحيح $[0, 1]$، وفق الصيغة الرياضية:
    $$x_{norm} = \frac{x – x_{\min}}{x_{\max} – x_{\min}}$$
    على الرغم من سهولة تفسير القيم الناتجة كنسب مئوية، إلا أن هذه الطريقة تعاني من حساسية شديدة جداً للقيم المتطرفة؛ حيث يؤدي وجود نقطة شاذة وحيدة إلى ضغط وتقارب شديد في باقي البيانات الطبيعية وتسطيح تباينها الحقيقي.

في معظم التطبيقات الإحصائية والقياسية، يُفضل الاعتماد على تحويل Z-Score لضمان استقرار الحلول العنقودية وتماشيها مع الافتراضات الإحصائية الكامنة في المتغيرات النفسية والاجتماعية.

5.3 التطبيق البرمجي لمعيارية البيانات باستخدام دالة scale()

توفر بيئة R الأساسية دالة مدمجة ومحسنة للغاية لتحقيق التحويل المعياري المعياري (Z-Score)، وهي دالة scale(). تقوم هذه الدالة بتطبيق التحويل الرياضي عبر طرح المتوسط الحسابي لكل عمود من قيمه ثم القسمة على الانحراف المعياري المقابل، مما يحول مصفوفة البيانات الخام إلى مصفوفة معيارية متكافئة الأوزان الرياضية بالكامل.

من الضروري الانتباه إلى أن مخرجات دالة scale() تكون على شكل مصفوفة رقمية (Matrix) محملة بسمات إحصائية إضافية (Attributes) تتضمن المتوسطات والانحرافات المعيارية الأصلية المحسوبة. يُستحسن برمجياً إعادة تحويل هذه المصفوفة إلى إطار بيانات قياسي (Data Frame أو Tibble) لتسهيل العمليات اللاحقة، مع الاحتفاظ ببارامترات التحجيم الأصلية لاستخدامها في حال الرغبة في تحويل مراكز المجموعات لاحقاً إلى درجاتها الخام لتفسيرها واقعياً.

يتم تطبيق التقييس البرمجي في R وفق الشيفرة التالية:

# تطبيق التحويل المعياري Z-Score على المتغيرات المستهدفة
data_scaled <- scale(data_selected)
# تحويل الناتج إلى إطار بيانات
data_scaled <- as.data.frame(data_scaled)
# التحقق من المتوسطات والانحرافات بعد المعايرة
colMeans(data_scaled) # يجب أن تقترب جداً من الصفر
apply(data_scaled, 2, sd) # يجب أن تساوي 1 تماماً

6. تحديد العدد الأمثل للمجموعات (Optimal Number of Clusters – K)

6.1 طريقة الكوع (Elbow Method / WCSS Reduction)

تتمثل إحدى أهم المعضلات المنهجية في تطبيق خوارزمية K-Means في ضرورة تحديد عدد العناقيد K بصورة مسبقة قبل تشغيل النموذج. ولما كان هذا العدد مجهولاً في الغالبية الساحقة من الدراسات الاستكشافية، فقد طور علماء الإحصاء عدة مناهج رياضية لتشخيص واختيار القيمة الأكثر اتساقاً ومنطقية من بين قيم K المرشحة.

تُعد “طريقة الكوع” (Elbow Method) الأسلوب الكلاسيكي الأكثر انتشاراً. تقوم فكرة هذه الطريقة على حساب وتشغيل النموذج العنقودي لمدى متتابع من قيم K (مثلاً من $K = 1$ إلى $K = 10$)، ورصد التغير في قيمة مجموع المربعات داخل المجموعات (WCSS) المصاحب لكل زيادة في عدد العناقيد. من البديهي رياضياً أن قيمة WCSS ستنخفض باستمرار مع زيادة K، حتى تصل إلى الصفر المطلق عندما يتساوى عدد العناقيد مع إجمالي عدد المشاهدات ($K = n$).

Optimal number of clusters in k-means clustering
Optimal number of clusters in k-means clustering

غير أن الهدف يكمن في البحث عن نقطة الانعطاف الهندسية (Elbow Point)—وهي النقطة التي يبدأ بعدها معدل الانخفاض الحاد في WCSS بالتباطؤ الملحوظ ويتحول إلى انحدار خطي طفيف وتدريجي. تشير نقطة الانكسار هذه إلى أن إضافة عناقيد جديدة بعد هذا الحد لن يقدم تحسناً جوهرياً في تفسير التباين، مما يجعل هذه النقطة هي التوازن الأمثل بين البساطة النموذجية (Parsimony) والدقة التفسيرية. توفر حزمة factoextra دالة ميسرة لتنفيذ هذه الطريقة ورسمها برمجياً:

# رسم منحنى طريقة الكوع لتحديد K
fviz_nbclust(data_scaled, kmeans, method = "wss") +
labs(title = "Elbow Method for Optimal K", x = "Number of Clusters (K)", y = "Total Within WCSS") +
theme_minimal()

6.2 معامل الصورة الظلية (Average Silhouette Method)

يقدم مقياس “الصورة الظلية” أو معامل السيوليت (Silhouette Analysis)، الذي ابتكره عالم الإحصاء بيتر روسيو (Peter Rousseeuw)، تقييماً كمياً وهندسياً متقدماً لجودة التماسك الداخلي للعناقيد ومدى انفصالها وتمايزها عن التجمعات المجاورة. لكل مشاهدة فردية $i$، يُحسب معامل السيوليت $s(i)$ عبر الموازنة بين متوسط المسافة الداخلية للمشاهدة مع جميع نقاط عنقودها الخاص $a(i)$، وأدنى متوسط مسافة تفصلها عن نقاط أي عنقود آخر مجاور $b(i)$:

$$s(i) = \frac{b(i) – a(i)}{\max(a(i), b(i))}$$

تتراوح قيمة معامل السيوليت بدقة بين $-1$ و $+1$، ويتم تفسير هذه القيم إحصائياً على النحو التالي:

  • قيمة تقترب من $+1$: تدل على أن المشاهدة متجانسة للغاية ومستقرة تماماً داخل عنقودها الحالي وبعيدة جداً عن أقرب عنقود منافس، مما يعكس تصنيفاً ممتازاً.
  • قيمة تقترب من الصفر ($0$): تشير إلى أن المشاهدة تقع في المنطقة الحدودية الفاصلة بين عنقودين، ويصعب الحسم الرياضي في انتمائها لأحدهما دون غيره.
  • قيمة سالبة (أقل من الصفر): تمثل مؤشراً خطيراً على سوء التصنيف، حيث تعني المشاهدة أقرب هندسياً إلى العنقود المجاور من العنقود الذي أُسندت إليه بالفعل.

يتم حساب “متوسط معامل السيوليت الكلي” لكافة المشاهدات عبر قيم K المختلفة، وتكون القيمة المثلى لـ K هي تلك التي تعظم متوسط السيوليت الكلي، مشيرة إلى تحقيق أعلى مستوى من التماسك الداخلي والانفصال الخارجي. يمكن تنفيذ هذا التحليل في R بسهولة فائقة:

# رسم متوسط معامل السيوليت لاختيار K الأمثل
fviz_nbclust(data_scaled, kmeans, method = "silhouette") +
labs(title = "Silhouette Method for Optimal K", x = "Number of Clusters (K)", y = "Average Silhouette Width") +
theme_minimal()

6.3 إحصاء الفجوة (Gap Statistic Method) والتحقق المرجعي

يُمثل “إحصاء الفجوة” (Gap Statistic)، الذي ابتكره الإحصائيون روبرت تيبشيراني وغونتر شتروبل وتريفور هاستي عام 2001، أحد أكثر الأساليب الرياضية تطوراً وموضوعية لتحديد عدد العناقيد؛ إذ يتفوق على الطرق السابقة بتوفير إطار إحصائي لمقارنة التباين الملاحظ داخل المجموعات بنموذج تباين فارغ مرجعي (Null Reference Distribution) خالٍ تماماً من أي عناقيد حقيقية.

تعتمد المنهجية على توليد عينات محاكاة عشوائية متعددة باستخدام أسلوب مونت كارلو (Monte Carlo Simulation) مسحوبة من توزيع منتظم أحادي النمط فوق نفس الفضاء الهندسي للبيانات الأصلية. ويتم حساب إحصاء الفجوة $Gap(k)$ كفرق لوغاريثمي بين التشتت الداخلي المتوقع تحت الفرضية الصفرية $\mathbb{E}^*{\log(W_k)}$ والتشتت الملاحظ فعلياً في بيانات الدراسة $\log(W_k)$:

$$Gap(k) = \mathbb{E}^*_B{\log(W_k^*)} – \log(W_k)$$

Gap statistic for optimal number of clusters
Gap statistic for optimal number of clusters

يتم اختيار K الأمثل وفق المعيار الرياضي الصارم الذي يحدد أصغر قيمة لـ K يكون عندها إحصاء الفجوة أكبر من أو يساوي قيمة الفجوة للعنقود التالي $K+1$ مطروحاً منه خطأ المحاكاة المعياري ($s_{k+1}$)، وفق متباينة تيبشيراني الشهيرة:

$$Gap(k) ge Gap(k+1) – s_{k+1}$$

تتيح حزمة cluster تطبيق هذا الاختبار المعقد بكفاءة عبر دالة clusGap()، كما تتيح factoextra رسم نتائجه بدقة وتحديد القيمة المحسوبة رياضياً:

# حساب إحصاء الفجوة باستخدام 50 عينة مونت كارلو محاكاة
gap_stat <- clusGap(data_scaled, FUN = kmeans, nstart = 25, K.max = 10, B = 50)
# رسم المخرجات وتحديد K الأمثل
fviz_gap_stat(gap_stat) +
labs(title = "Gap Statistic Method for Optimal K") +
theme_minimal()

ومن خلال المقارنة التكاملية والموازنة بين الأدلة المستقاة من طريقة الكوع، ومعامل السيوليت، وإحصاء الفجوة، يمتلك الباحث أرضية علمية راسخة لحسم اختيار العدد K الأكثر ملاءمة لطبيعة بياناته المدروسة.

7. تنفيذ خوارزمية K-Means في R باستخدام دالة kmeans()

7.1 تشريح معاملات دالة stats::kmeans() وضبطها المنهجي

توفر حزمة stats المدمجة في بيئة R دالة kmeans() ذات الكفاءة الحسابية الاستثنائية. غير أن الاستخدام السليم لهذه الدالة يتطلب إدراكاً متعمقاً لمعاملاتها (Parameters) البرمجية وتأثير كل منها على دقة النموذج واستقراره الرياضي. فيما يلي تشريح لأبرز معاملات الدالة:

  • x: مصفوفة رقمية أو إطار بيانات يحتوي حصراً على المتغيرات المستمرة المعيارية الخالية تماماً من أي قيم مفقودة.
  • centers: يُحدد إما العدد الإجمالي للمجموعات المطلوبة استخراجها (قيمة K الصحيحة التي تم التوصل إليها سابقاً)، أو مصفوفة تحتوي على إحداثيات مراكز ابتدائية مخصصة وثابتة يرغب الباحث في البدء منها.
  • nstart: يُعد من أكثر المعاملات حساسية وأهمية؛ إذ يحدد عدد مجموعات المراكز العشوائية المستقلة التي ستقوم الخوارزمية بتجربتها. نظراً لأن K-Means قد تعلق في حلول محلية رديئة (Local Minima)، فإن ضبط قيمة مرتفعة لـ nstart (مثل nstart = 25 أو nstart = 50) يجعل الدالة تنفذ الخوارزمية 25 أو 50 مرة بنقاط انطلاق عشوائية متباينة، وتعتمد تلقائياً الحل النهائي الذي يحقق أدنى مجموع لمربعات الأخطاء (Lowest WCSS)، مما يضمن الحصول على حل قريب جداً من الأمثل الشامل (Global Optimum).
  • iter.max: يحدد الحد الأقصى المسموح به لعدد التكرارات الحسابية لدورة التعيين والتحديث (Assignment-Update Steps). القيمة الافتراضية هي 10، ولكن يُفضل رفعها في النماذج المعقدة إلى iter.max = 100 لضمان وصول الخوارزمية إلى التقارب التام قبل التوقف القسري.
  • algorithm: يتيح اختيار الخوارزمية الرياضية المعتمدة للتنفيذ. الخيار الافتراضي والأكثر تقدماً هو خوارزمية هارتيجان-وونغ (Hartigan-Wong, 1979)، والتي تمتاز بنقل النقاط بين العناقيد بمرونة تفوق خوارزمية لويد الكلاسيكية، وتتوفر أيضاً خيارات بديلة مثل خوارزمية MacQueen أو Lloyd.

7.2 الكود البرمجي الكامل لتطبيق النموذج خطوة بخطوة

لتطبيق النموذج العنقودي وفق أفضل الممارسات البرمجية المنهجية، نبدأ بتثبيت البذرة العشوائية، ثم تشغيل خوارزمية K-Means مع تحديد العدد الأمثل للعناقيد (ولنفرضه هنا $K = 3$ بناءً على الفحوصات السابقة)، مع ضبط nstart = 25 وiter.max = 100 لضمان استقرار الحل. تالياً، نقوم بتخزين النموذج الناتج في كائن مخصص لفحص محتوياته، ثم ندمج متجه تعيين العناقيد الناتج مباشرة مع إطار البيانات الأصلي لإخضاعه للتحليلات اللاحقة.

فيما يلي النص البرمجي الكامل لتنفيذ هذه السلسلة المتكاملة:

# 1. تثبيت البذرة العشوائية لضمان التكرارية
set.seed(2026)

# 2. بناء وتشغيل نموذج K-Means
kmeans_model <- kmeans(
x = data_scaled,
centers = 3,
nstart = 25,
iter.max = 100,
algorithm = "Hartigan-Wong"
)

# 3. إسناد رقم العنقود لكل مشاهدة داخل البيانات الأصلية والمعيارية
data_final %
mutate(Cluster = as.factor(kmeans_model$cluster))

data_scaled_final %
mutate(Cluster = as.factor(kmeans_model$cluster))

# 4. طباعة ملخص النموذج العام
print(kmeans_model)

7.3 التعامل مع مشكلات التقارب والاستقرار الإحصائي

أثناء المعالجة الحسابية، قد يواجه المحلل رسائل تحذيرية برمجية من قبيل: "did not converge in 10 iterations". تشير هذه الرسالة بوضوح إلى أن الخوارزمية استنفدت الحد الأقصى من التكرارات قبل أن تصل إلى حالة الثبات الإحداثي التام للمراكز العنقودية. يتمثل الحل المباشر لهذه المشكلة في زيادة معامل iter.max إلى 100 أو 500 تكرار، ومراجعة مصفوفة البيانات للتأكد من عدم وجود متغيرات ذات تباين يقترب من الصفر أو أعمدة متطابقة تماماً تحدث انسداداً في مصفوفة المسافات.

كما يُنصح باختبار استقرار التعيين العنقودي (Cluster Stability Screening) من خلال إعادة تشغيل النموذج بعدة بذور عشوائية مختلفة ومقارنة مصفوفات الانتماء التبادلي للتأكد من أن التقسيم يعكس بنية موضوعية أصيلة في الظاهرة المدروسة وليس مجرد نتاج صدفة رياضية ناجمة عن نقطة انطلاق معينة.

8. تحليل وتفسير المخرجات الإحصائية للنموذج العنقودي

8.1 فحص مكونات كائن K-Means المخرج في R

يقوم استدعاء النموذج المنفذ في R بتوليد كائن إحصائي معقد من فئة kmeans يحتوي على قائمة غنية بالمعلومات والمصفوفات الرياضية التفصيلية. يمكن استخراج هذه المكونات وتحليلها عبر المعامل $ كما يلي:

  • kmeans_model$cluster: متجه رقمي يحتوي على التصنيف النهائي لكل مشاهدة ورقم العنقود الذي أُسندت إليه ($1, 2, dots, K$).
  • kmeans_model$centers: مصفوفة أبعادها ($K \times p$) تسجل الإحداثيات الدقيقة للمتوسطات المركزية (Centroids) لكل عنقود عبر جميع المتغيرات المعيارية المدخلة في النموذج.
  • kmeans_model$totss: إجمالي مجموع المربعات الكلي (Total Sum of Squares – TSS)، والذي يمثل التشتت الكلي للبيانات حول المتوسط العام لجميع المشاهدات دون أي تقسيم عنقودي.
  • kmeans_model$withinss: متجه يحتوي على مجموع المربعات داخل كل عنقود على حدة ($WCSS_k$)، مما يتيح مقارنة مدى تماسك كل عنقود وتقييم تجانسه الداخلي مقارنة بالعناقيد الأخرى.
  • kmeans_model$tot.withinss: القيمة الإجمالية لـ WCSS الناتجة عن جمع قيم المتجه السابق، وهي القيمة التي سعت الخوارزمية لتقليلها إلى أدنى حد ممكن.
  • kmeans_model$betweenss: مجموع المربعات بين المجموعات (Between-Cluster Sum of Squares – BSS)، ويمثل تشتت مراكز العناقيد حول المتوسط العام موزوناً بعدد مشاهدات كل عنقود.
  • kmeans_model$size: متجه يسجل عدد المشاهدات المنتمية لكل عنقود، مما يوضح الحجم النسبي وتوزيع التكرارات عبر العناقيد.

تُعد النسبة الإحصائية $\frac{\text{betweenss}}{\text{totss}}$ (مجموع المربعات بين المجموعات مقسوماً على مجموع المربعات الكلي) المعيار الأهم لتقييم قوة التفسير الكلية للنموذج العنقودي؛ إذ تعبر تماماً عن النسبة المئوية من التباين الكلي في البيانات التي استطاع التقسيم العنقودي تفسيرها واحتواءها، وكلما اقتربت هذه النسبة من 100%، دل ذلك على نموذج عنقودي شديد القوة والتمايز الإحصائي.

8.2 تفسير المعالم السلوكية والنفسية للمجموعات المستخلصة

على الرغم من أن العمليات الحسابية للخوارزمية تتم على مصفوفة المتغيرات المعيارية، إلا أن تفسير النتائج وصياغة الاستنتاجات العلمية يتطلب من الباحث ترجمة مراكز المجموعات (Centroids) وإعادتها إلى مقاييس الدرجات الخام الأصلية للظاهرة محل القياس. تتيح حزمة dplyr حساب المتوسطات والانحرافات المعيارية للبيانات غير المعايرة مقسمة حسب العناقيد المستخرجة بأسلوب تلخيصي غاية في الدقة:

# حساب جدول الإحصاءات الوصفية الخام لكل عنقود
cluster_profile %
group_by(Cluster) %>%
summarise(across(where(is.numeric), list(mean = mean, sd = sd), .names = "{.col}_{.fn}"), n = n())
print(cluster_profile)

بناءً على جدول المتوسطات المستخلصة، يبدأ الباحث مرحلة “التسمية الموضوعية للعناقيد” (Cluster Labeling) استناداً إلى الأطر النظرية المعتمدة في التخصص. فإذا كان التحليل يدرس سمات الشخصية، قد يُسمى العنقود ذو الدرجات المرتفعة في الانبساطية والانفتاح والمنخفضة في العصابية بنمط “الشخصية المرنة أو المتكيفة” (Resilient Profile)، بينما يُطلق على العنقود ذو الدرجات المعاكسة نمط “الشخصية الحساسة للضغوط”، مما يحول الأرقام الإحصائية المجردة إلى مفاهيم وتصنيفات سلوكية وتشخيصية ذات قيمة تطبيقية ملموسة.

8.3 تحليل التباين أحادي الاتجاه (ANOVA) لاختبار الفروق بين المجموعات

بعد استخلاص الأنماط العنقودية، تقتضي الأمانة العلمية إجراء اختبارات إحصائية استدلالية للتحقق من أن الفروق الملاحظة بين العناقيد عبر المتغيرات المختلفة هي فروق حقيقية ذات دلالة إحصائية (Statistically Significant) وليست وليدة التباين العشوائي للعينات. يُستخدم تحليل التباين أحادي الاتجاه (One-Way ANOVA) لكل متغير كمي مدخل، مع جعل متغير “العنقود” (Cluster) هو المتغير المستقل التصنيفي.

ولا يقتصر التحليل على فحص الدلالة الاحتمالية ($p\text{-value}$)، بل يجب حساب حجم الأثر (Effect Size) عبر حساب قيمة إيتا التربيعية ($\eta^2$ – Eta Squared)، والتي تحدد مقدار مساهمة العناقيد في تفسير تباين كل متغير على حدة. يتبع ذلك تطبيق اختبارات المقارنات البعدية، مثل اختبار توكي للفروق الصادقة ذات الدلالة (Tukey’s Honestly Significant Difference – Tukey HSD)، لتحديد الأزواج المحددة من المجموعات التي تتمايز عن بعضها بدقة إحصائية متناهية وفق معايير جمعية علم النفس الأمريكية (APA).

يمكن تنفيذ هذه السلسلة الاستدلالية المتقدمة في R عبر الكود التالي:

# تنفيذ اختبار ANOVA لمتغير معين (مثال: Anxiety) عبر العناقيد
anova_res <- aov(Anxiety ~ Cluster, data = data_final)
summary(anova_res)

# إجراء المقارنات البعدية باستخدام Tukey HSD
tukey_res <- TukeyHSD(anova_res)
print(tukey_res)

9. التصور البصري المتقدم للمجموعات وتوزيعاتها في الفضاء الهندسي

9.1 التصور ثنائي الأبعاد باستخدام تحليل المكونات الرئيسية (PCA)

عندما تشتمل مصفوفة التحليل العنقودي على أكثر من متغيرين اثنين، يستحيل رسم الفضاء الإقليدي بصورة مباشرة لتمثيل تجمعات النقاط ومواقع المراكز. وللتغلب على هذا التحدي الإدراكي، يتم اللجوء إلى تقنيات خفض الأبعاد (Dimensionality Reduction)، وعلى رأسها تحليل المكونات الرئيسية (Principal Component Analysis – PCA).

K-means clustering plot in R
K-means clustering plot in R

يقوم تحليل المكونات الرئيسية بإسقاط الفضاء متعدد الأبعاد على مستوٍ ثنائي الأبعاد يتشكل من المركبتين الرئيستين الأولى والثانية (Dim1 و Dim2)، واللتين تحتفظان بأكبر قدر ممكن من التباين الإجمالي الأصلي للبيانات. تتولى دالة fviz_cluster() المتاحة في حزمة factoextra تنفيذ هذا الإسقاط الجبري ورسم المشاهدات كنقاط ملونة حسب انتمائها العنقودي، مع تحديد مواقع المتوسطات المركزية وإحاطة كل مجموعة بمضلعات محدبة (Convex Hulls) أو قطاعات بيضاوية تظليلية (Concentration Ellipses) توضح مناطق الانتشار والكثافة المكانية بدقة فائقة.

يتم إنشاء هذا المخطط الهندسي الجذاب في بيئة R عبر الكود التالي:

# رسم التجمعات العنقودية في المستوي ثنائي الأبعاد للمركبات الرئيسة
fviz_cluster(kmeans_model, data = data_scaled,
palette = c("#2E9FDF", "#E7B800", "#FC4E07"),
geom = "point",
ellipse.type = "convex",
ggtheme = theme_minimal()) +
labs(title = "K-Means Clusters Visualization via Principal Components",
subtitle = "Projection on the first two principal component dimensions")

9.2 توليد مخططات Silhouette البيانية لتشخيص جودة العناقيد

لا يكتمل الفحص التشخيصي للنموذج العنقودي دون توليد “مخطط السيوليت التفصيلي” (Silhouette Plot). على عكس الرقم المفرد الذي يمثله متوسط السيوليت الكلي، يعرض هذا المخطط البياني أشرطة أفقية تمثل معامل السيوليت $s(i)$ لكل مشاهدة فردية داخل كل عنقود على حدة، مرتبة تنازلياً من أعلى قيمة إلى أدناها.

يكشف هذا الرسم التشخيصي عن تفاصيل بنيوية دقيقة: فهو يوضح مدى تماسك العناقيد من خلال سمك وطول الأشرطة الممتدة نحو اليمين الإيجابي، كما يسلط الضوء فوراً على أي أشرطة تتجه نحو اليسار السالب ($s(i) < 0$). تمثل هذه الأشرطة السالبة الحالات الفردية التي تعاني من سوء التصنيف الهندسي وتتداخل مع حدود العناقيد الأخرى، مما يمنح الباحث فرصة ذهبية لاستخراج هذه المشاهدات الاستثنائية ودراستها نوعياً أو إعادة فحص شروط النمذجة المتعلقة بها.

يمكن استخراج ورسم مخطط السيوليت الفردي باستخدام حزمة factoextra كالتالي:

# حساب مصفوفة السيوليت الفردية
sil_values <- silhouette(kmeans_model$cluster, dist(data_scaled))
# رسم المخطط التفصيلي للسيوليت
fviz_silhouette(sil_values) +
theme_minimal() +
labs(title = "Cluster Silhouette Diagnostic Plot", y = "Silhouette Width", x = "Cluster Observations")

9.3 المخططات الرادارية والشريطية لمقارنة الملامح الشخصية (Profiles)

لتقديم الملامح العنقودية بطريقة بصرية يسهل فهمها من قبل المتخصصين وغير المتخصصين على حد سواء، تُعد المخططات الشريطية المقارنة للأعمدة المعيارية، وكذلك الرسوم البيانية الشعاعية أو الرادارية (Radar/Spider Charts)، أدوات فائقة الفعالية. تعرض هذه المخططات البصمة السلوكية الخاصة بكل عنقود عبر رسم انحراف كل متغير عن المتوسط العام (الصفر المعياري).

تسمح هذه المقارنة البصرية بإظهار التباينات النوعية في وقت واحد؛ فنرى بوضوح أي العناقيد يتفوق في سمات معينة وينحدر في أخرى. يمكن بناء مخطط جانبي للأعمدة المعيارية باستخدام حزمة ggplot2 عبر إعادة تشكيل البيانات إلى النسق الطولي (Long Format) وتطبيق دالة geom_col() مع حساب مجالات الثقة الإحصائية لكل متغير، وتصدير الأشكال البيانية بدقة نشر عالية (300 DPI فأكثر) لدعم أوراق النشر العلمي المحكم.

10. تطبيق عملي خطوة بخطوة على بيانات حقيقية/محاكاة

10.1 بناء وتوليد مجموعة بيانات تحاكي السمات السلوكية والقياس النفسي

لتطبيق التدفق الإجرائي الكامل بطريقة علمية محكمة وقابلة للتكرار الفوري، سنقوم بتوليد مجموعة بيانات محاكاة تتكون من $n = 300$ مشاهدة تمثل أفراداً خضعوا لتقييم نفسي وسلوكي متعدد الأبعاد. سنفترض قياس ثلاثة متغيرات مستمرة شائعة في القياس النفسي:

  • درجة القلق العام (Anxiety Level): مقاسة على مدى مستمر يتراوح افتراضياً بين 10 و 50 درجة.
  • دافعية الإنجاز (Achievement Motivation): مقاسة على مدى يتراوح بين 20 و 80 درجة.
  • الانبساطية الاجتماعية (Extraversion): مقاسة على مدى يتراوح بين 15 و 60 درجة.

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

# توليد بيانات محاكاة نفسية متكاملة
set.seed(42)
# النمط 1: قلق منخفض، إنجاز مرتفع، انبساطية مرتفعة
g1 <- tibble(
ID = paste0("Subj_", 1:100),
Anxiety = rnorm(100, mean = 18, sd = 4),
Motivation = rnorm(100, mean = 68, sd = 6),
Extraversion = rnorm(100, mean = 48, sd = 5)
)

# النمط 2: قلق مرتفع، إنجاز منخفض، انبساطية منخفضة
g2 <- tibble(
ID = paste0("Subj_", 101:200),
Anxiety = rnorm(100, mean = 42, sd = 5),
Motivation = rnorm(100, mean = 32, sd = 5),
Extraversion = rnorm(100, mean = 24, sd = 4)
)

# النمط 3: قلق معتدل، إنجاز معتدل، انبساطية معتدلة
g3 <- tibble(
ID = paste0("Subj_", 201:300),
Anxiety = rnorm(100, mean = 28, sd = 4),
Motivation = rnorm(100, mean = 50, sd = 5),
Extraversion = rnorm(100, mean = 36, sd = 4)
)

# دمج البيانات في إطار عمل موحد وتخليط الترتيب عشوائياً
psy_data % sample_frac(1)

10.2 التدفق الإجرائي الكامل من التنظيف إلى استخراج الأنماط

سنقوم الآن بتنفيذ خط المعالجة الإحصائية المتسلسل (Pipeline Workflow) بدءاً من استخراج المتغيرات الكمية، وتطبيق التحويل المعياري، واختيار K، وتشغيل K-Means، وحتى حفظ الملف التحليلي النهائي:

# 1. عزل المتغيرات الكمية المستهدفة
psy_features % select(Anxiety, Motivation, Extraversion)

# 2. تطبيق التحويل المعياري Z-Score
psy_scaled <- scale(psy_features)

# 3. تشغيل K-Means مع K=3 و nstart=25
set.seed(101)
final_kmeans <- kmeans(psy_scaled, centers = 3, nstart = 25, iter.max = 100)

# 4. دمج الانتماء العنقودي مع البيانات الأصلية
psy_segmented %
mutate(Cluster = as.factor(final_kmeans$cluster))

# 5. استعراض نسبة التباين المفسرة
variance_explained <- (final_kmeans$betweenss / final_kmeans$totss) * 100
cat("النسبة المئوية للتباين المفسر بالنموذج:", round(variance_explained, 2), "%n")

10.3 قراءة المخرجات وربطها بالأطر النظرية للقياس النفسي

أظهرت نتائج النموذج استخلاص ثلاثة أنماط متباينة تماماً، حيث فسرت العناقيد ما يفوق 75% من إجمالي التباين الكلي للمتغيرات الثلاثة. يمكننا تلخيص السمات السلوكية للأفراد داخل كل عنقود كما يلي:

  • العنقود الأول (النمط عالي الكفاءة والمتكيف): يتسم أفراده بمستويات منخفضة جداً من القلق مصحوبة بدافعية إنجاز فائقة وانبساطية اجتماعية مرتفعة. يمثل هؤلاء الأفراد الفئة الأكثر قدرة على التكيف مع بيئات العمل والتعلم التنافسية.
  • العنقود الثاني (النمط المعرض للاحتراق والتوتر): يظهر فيه الأفراد درجات عالية جداً من القلق والانسحاب الاجتماعي مع تدنٍ ملحوظ في دافعية الإنجاز، مما يشير إلى حاجة ماسة لبرامج تدخل إرشادي وتخفيف الضغوط النفسية.
  • العنقود الثالث (النمط المعياري المتوازن): يقع أفراده حول المتوسطات العامة للعينة في جميع السمات، ويمثلون الفئة الأكثر اعتدالاً وشيوعاً.

تثبت هذه التجربة التطبيقية قدرة خوارزمية K-Means على استجلاء الحقائق الكامنة في البيانات السلوكية دون الاعتماد على افتراضات تحيزية مسبقة، مما يزود الباحثين بأدلة قياسية صلبة تخدم التشخيص وتوجيه القرارات التطبيقية بكفاءة متناهية.

11. تقييم جودة النمذجة والتحقق من الاستقرار العنقودي (Cluster Validation)

11.1 مقاييس الجودة الداخلية (Internal Validation Indices)

تعتمد مقاييس التحقق الداخلي (Internal Validation Indices) على فحص الخصائص الهندسية والتشتت الداخلي لمصفوفة البيانات الأصلية دون الاستعانة بأي معلومات أو متغيرات خارجية. تهدف هذه المؤشرات إلى قياس مدى التوازن بين انضغاط العناقيد حول مراكزها (Compactness) والمسافة الفاصلة بين حدود العناقيد المختلفة (Separation).

من أبرز هذه المقاييس الإحصائية المعيارية:

  • معامل ديفيز-بولدين (Davies-Bouldin Index): يقيس نسبة التشتت الداخلي لكل زوج من العناقيد إلى المسافة الإقليدية الفاصلة بين مركزيهما. تشير القيم المنخفضة لمعامل ديفيز-بولدين إلى عناقيد ممتازة ومحكمة، تتسم بتشتت داخلي ضئيل ومسافات بينية متباعدة.
  • مؤشر دن (Dunn Index): يُحسب كنسبة بين أقصر مسافة تفصل بين نقطتين تنتميان لعنقودين مختلفين، وأقصى قطر تشتت لعنقود فردي. تشير القيم المرتفعة لمؤشر دن إلى جودة تجميعية فائقة وحواجز هندسية واضحة بين الكيانات المصنفة.

توفر حزم R المتخصصة مثل clValid وclusterCrit بيئة حوسبية شاملة لحساب ومقارنة هذه المؤشرات المتعددة بالتوازي لتأكيد صلابة الحل المختار، وتجنب الاعتماد على مؤشر تشخيصي وحيد قد يتأثر بخصائص توزيعية معينة للبيانات.

11.2 التحقق القائم على الاستقرار وإعادة أخذ العينات (Bootstrapping)

يُعد اختبار الاستقرار العنقودي عبر أسلوب إعادة أخذ العينات المعادة (Bootstrapping) الاختبار الأكثر صرامة في التحقق من أن العناقيد المستخلصة تمثل بنى مجتمعية حقيقية وليست مجرد تكتلات عشوائية ناتجة عن خصوصية العينة الحالية. توفر حزمة fpc الرائدة في R دالة clusterboot() التي تنفذ هذا التحليل المتقدم بكفاءة مذهلة.

تقوم الدالة بتوليد مئات العينات العشوائية بالاسترجاع من البيانات الأصلية (مثلاً 100 عينة تمهيدية)، وتطبيق K-Means على كل عينة فرعية، ثم حساب معامل تشابه جكارد (Jaccard Similarity Coefficient) لمقارنة استقرار عضوية كل عنقود عبر التكرارات المختلفة. يتم تفسير متوسط قيم معامل جكارد الناتجة وفق القواعد المنهجية التالية:

  • معامل جكارد أعلى من 0.85: يدل على عنقود شديد الاستقرار والرسوخ، يعكس نمطاً حقيقياً مؤكداً في البيانات.
  • معامل جكارد بين 0.60 و 0.85: يشير إلى عنقود مستقر بمستوى مقبول يظهر نمطاً حقيقياً ولكنه يتأثر ببعض النقاط الحدودية.
  • معامل جكارد أقل من 0.60: يُعد تحذيراً منهجياً من أن العنقود هش وغير مستقر، وقد يكون وليد الصدفة الإحصائية، مما يستدعي إعادة النظر في عدد K أو مراجعة معايير اختيار المتغيرات.

يمكن تنفيذ تقييم الاستقرار في R باستخدام الكود التالي:

library(fpc)
# تقييم استقرار العناقيد عبر 100 تكرار Bootstrap
boot_val <- clusterboot(data_scaled, B = 100, clustermethod = kmeansCBI, k = 3, seed = 123)
# استعراض متوسط قيم جكارد لكل عنقود
boot_val$bootmean

11.3 التحقق الخارجي والمطابقة مع المتغيرات المستقلة (External Validation)

يتحقق الصدق التمييزي والتقاربي الحقيقي للحل العنقودي عندما نقوم باختباره مقابل متغيرات خارجية مستقلة لم تدخل على الإطلاق في بناء نموذج K-Means (External Criteria). على سبيل المثال، يمكن مقارنة التقسيم السلوكي المستخرج مع متغيرات ديموغرافية، أو مؤشرات أداء وظيفي، أو تشخيصات إكلينيكية مستقلة.

لحساب مدى التطابق الموضوعي بين التقسيم العنقودي المستخرج وتصنيف خارجي معياري، يُستخدم مقياس “معامل راند المعدل” (Adjusted Rand Index – ARI)، ومقياس “المعلومات المتبادلة الطبيعية” (Normalized Mutual Information – NMI). يتراوح مقياس ARI بين 0 (تطابق عشوائي تام) و 1 (تطابق تام ومطلق)، ويقدم تقييماً دقيقاً لمدى قدرة النموذج على استرجاع التصنيفات المرجعية الواقعية، مما يعزز الصدق الخارجي للدراسة ويدعم قابلية تعميم نتائجها في الميدان التطبيقي.

12. التحديات المنهجية، الحلول البديلة، والتوجهات المتقدمة في R

12.1 معالجة المتغيرات الفئوية والمختلطة (PAM و Gower’s Distance)

تتمثل إحدى أهم العقبات المنهجية في التطبيق العملي لـ K-Means في عجزها الحسابي عن التعامل المباشر مع المتغيرات الفئوية (Categorical/Nominal Variables). إن تحويل المتغيرات الاسمية إلى ترميز رقمي اصطناعي (مثل إعطاء 1 للمتزوج، 2 للأعزب، 3 للمطلق) ثم تمريرها إلى دالة kmeans() يُعد خطأً إحصائياً فادحاً ومحظوراً؛ فالخوارزمية ستتعامل مع هذه الأرقام كمقادير مستمرة في فضاء إقليدي، وتحسب متوسطات وهمية لا معنى رياضي أو موضوعي لها على الإطلاق.

للتعامل السليم مع البيانات ذات المتغيرات المختلطة (التي تضم متغيرات كمية وفئوية في آن واحد)، يبرز البديل المعياري المتمثل في خوارزمية “التجميع حول أشباه المراكز” (K-Medoids / Partitioning Around Medoids – PAM)، مصحوبة بحساب مصفوفة المسافات باستخدام مقياس جاور للمسافات (Gower’s Distance) عبر حزمة cluster.

تعتمد خوارزمية PAM على اختيار مشاهدات حقيقية وفعلية من البيانات لتكون مراكز للمجموعات (تُسمى Medoids) بدلاً من المتوسطات الرياضية الافتراضية، مما يجعلها متوافقة تماماً مع البيانات الفئوية وشديدة المقاومة للقيم الشاذة والانحرافات التوزيعية المتطرفة، لتوفر بذلك حلاً منهجياً رصيناً لمعالجة البيانات الواقعية غير المتجانسة.

12.2 التعامل مع البيانات الضخمة وفائقة الأبعاد (CLARA و Mini-Batch K-Means)

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

  • خوارزمية CLARA (Clustering Large Applications): متاحة في حزمة cluster، وتعتمد على سحب عينات فرعية متكررة وممثلة إحصائياً للبيانات الكبيرة، وتطبيق خوارزمية أشباه المراكز (PAM) على كل عينة على حدة، ثم تعميم النموذج على كامل قاعدة البيانات بكفاءة وسرعة استثنائية.
  • خوارزمية Mini-Batch K-Means: متاحة في لغة R عبر حزمة ClusterR، وتعتمد على تحديث مواقع المراكز المركزية باستخدام حزم صغيرة عشوائية متتابعة من البيانات (Mini-Batches) بدلاً من معالجة كامل مصفوفة البيانات في كل تكرار، مما يوفر سرعات فائقة وخفضاً هائلاً في استهلاك الذاكرة لمجموعات البيانات فائقة الضخامة.

أما في حالات البيانات فائقة الأبعاد (High-Dimensional Data)، التي تتضمن مئات أو آلاف المتغيرات، فيتعين تطبيق أساليب تقليل الأبعاد المسبقة مثل t-SNE أو UMAP أو PCA قبل الشروع في التجميع، لتفادي ما يُعرف رياضياً بـ “لعنة الأبعاد” (Curse of Dimensionality) حيث تتساوى المسافات الإقليدية بين جميع النقاط ويصبح التمييز العنقودي مستحيلاً هندسياً.

12.3 أفضل الممارسات وقائمة تدقيق النمذجة الإحصائية في لغة R

لضمان أعلى معايير الجودة والدقة المنهجية عند تنفيذ ونشر التحليلات العنقودية المستندة إلى K-Means في بيئة R، يوصى بالالتزام الصارم بقائمة التدقيق المعيارية (Checklist) التالية:

  • فحص طبيعة البيانات: التأكد من أن جميع المتغيرات كمية ومستمرة وخالية تماماً من التصنيفات الاسمية الزائفة.
  • معالجة الفقد والشذوذ: التعامل المنهجي مع القيم المفقودة عبر أساليب التعويض الإحصائي، وعزل أو تحويل القيم الشاذة متعددة الأبعاد.
  • التحجيم والتقييس: تطبيق التحويل المعياري (Z-Score Standardization) باستخدام scale() لمنع هيمنة المتغيرات ذات المديات الواسعة.
  • تثبيت البذرة العشوائية: استخدام دالة set.seed() لضمان التكرارية والنزاهة العلمية الكاملة لخطوات التحليل.
  • تعدد نقاط الانطلاق: ضبط معامل nstart = 25 أو أكثر لتفادي الوقوع في الحلول المحلية الدنيا (Local Minima).
  • التشخيص التكاملي للعدد K: الاستناد إلى مقارنة متزامنة بين طريقة الكوع، ومعامل السيوليت، وإحصاء الفجوة، بدلاً من الاعتماد على مقياس وحيد.
  • التحقق والصدق الإحصائي: فحص استقرار العناقيد عبر تقنيات Bootstrapping ومطابقتها مع متغيرات خارجية مستقلة، وتوثيق الفروق الدلالية عبر تحليل التباين (ANOVA) وحجوم الأثر ($\eta^2$).
  • التفسير النظري: تحويل المراكز المعيارية إلى درجات خام، وربط الأنماط المستخلصة بالأطر النظرية والمفاهيمية للظاهرة محل القياس.

خاتمة وخلاصة منهجية

تمثل خوارزمية K-Means في لغة R أداة استكشافية وتحليلية بالغة القوة والعمق عندما تُستخدم بوعي منهجي مستنير بإدراك أسسها الرياضية وقيودها الهندسية. إن الانتقال الرصين من فضاء البيانات الخام، مروراً بالمعايرة الدقيقة، وتحديد العدد الأمثل للمجموعات، وانتهاءً بالفحوصات التشخيصية والاستدلالية والتصورات البصرية ثلاثية الأبعاد، يمنح الباحثين في القياس النفسي والعلوم الاجتماعية والحوسبية قدرة فائقة على صياغة نماذج تصنيفية عميقة وراسخة تعكس البنى الحقيقية للواقع التجريبي بكل تعقيداته.

References

اقتباس هذا المقال

looti, M. (2026, سبتمبر 2). التجميع بطريقة K-Means في لغة R: مثال خطوة بخطوة. عرب سايكلوجي. https://arabpsychology.com/k-means-clustering-in-r-step-by-step-example/
looti, Mohammed. “التجميع بطريقة K-Means في لغة R: مثال خطوة بخطوة.” عرب سايكلوجي, 2 سبتمبر 2026, https://arabpsychology.com/k-means-clustering-in-r-step-by-step-example/.
looti, Mohammed. “التجميع بطريقة K-Means في لغة R: مثال خطوة بخطوة.” عرب سايكلوجي. سبتمبر 2, 2026. https://arabpsychology.com/k-means-clustering-in-r-step-by-step-example/.