أساسيات تعلم الآلة2001متوسط11 دقيقة قراءة

عن التَّعنقُد الطيفي: تحليل وخوارزمية

On Spectral Clustering: Analysis and an Algorithm

Ng, A. Y. · Jordan, M. I. · Weiss, Y. — NeurIPS

المشكلة

حتى عام 2001، كانت خوارزميات التعنقد مثل k-means مقتصرة على الحالات التي تتّخذ فيها العناقيد أشكالاً محدّبة بسيطة. المشكلة أنّ البيانات الحقيقية — سواء في الصور أو الشبكات الاجتماعية أو بيانات التعبير الجيني — كثيراً ما تظهر فيها تجمّعات حلقية أو لولبية أو بأشكال غير منتظمة تعجز k-means عن التعامل معها. كانت هناك محاولات عديدة لاستخدام المتجهات الذاتية لمصفوفات مُشتقّة من بنية البيانات، لكنّ الساحة كانت مليئة بأساليب متنافسة بلا إطار تحليلي موحَّد، ومعظمها يفتقر إلى ضمانات نظرية واضحة.

الإسهام

قدّم المؤلفون خوارزمية تعنقد طيفي بسيطة وأنيقة تُعرف بـ NJW: تبدأ ببناء مصفوفة تشابه غاوسية، ثم تحسب لابلاسيان المبيان المُقيَّس، وتستخرج أعلى k متجهات ذاتية، وتُقيّس كل صفّ إلى طول وحدوي، وأخيراً تُطبّق k-means في فضاء المتجهات الذاتية الجديد. اعتمد المؤلفون على نظرية اضطراب المصفوفات لإثبات أنّ تسترجع العناقيد بضمان نظري متى كانت منفصلة بقدر كافٍ. الإضافة المفتاحية هي خطوة تقييس الصفوف — أي إسقاط النقاط على سطح كرة وحدوية — وهي ما يُمكّن الخوارزمية من التعامل مع عناقيد تتفاوت في كثافتها وقوة ارتباطها.

الأثر

أصبحت خوارزمية NJW المرجع الأساسي في مجال التعنقد الطيفي، وتجاوزت استشهاداتها 10,000 مرة. رسّخت الأساليب الطيفية كبديل عملي ومتين رياضياً لـ k-means عند التعامل مع بيانات غير محدّبة. امتدّ أثرها مباشرةً إلى الشبكات العصبية البيانية، حيث تُوظَّف المتجهات الذاتية للابلاسيان نفسها كترميزات موضعية، وكذلك إلى تطبيقات اكتشاف المجتمعات في الشبكات الاجتماعية وتجزئة الصور وتمييز المتحدثين.

تخيّل أنك تريد تقسيم مدينة إلى أحياء. لو رسمتَ دوائر على الخريطة (كما تفعل k-means) لنجح الأمر في مدينة ذات شوارع مستقيمة ومتعامدة — لكنّه يفشل في مدينة يشقّها نهر متعرّج، لأنّ منزلَين على ضفّتين متقابلتين قد يبدوان قريبين على الخريطة رغم أنّهما ينتميان لمجتمعين مختلفين تماماً.

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

السقف: k-means لا ترى إلا الكتل المحدّبة

حين تعمل k-means، فإنّها تُسند كل نقطة إلى أقرب مركز، وهذا يعني عملياً أنّها ترسم مضلّعات محدّبة (خلايا فورونوي) حول كل مركز. الأمر ينجح حين تكون شبه كروية الشكل. لكن تخيّل حلقتين متداخلتين متحدّتَي المركز، أو هلالاً يلتفّ حول كرة — هنا تفشل k-means لأنّها محصورة في التفكير بمسافات الخط المستقيم نحو المراكز.

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

افتح في المختبر
بدّل بين k-means والتعنقد الطيفي على حلقات متحدّة المركز. لاحظ كيف تقطع k-means الحلقات عشوائياً، بينما يفصلها التعنقد الطيفي بشكل نظيف.
تستيقظ التجربة عند وصولك…

الخطوة 1: ابنِ مبيان التشابه

نبدأ بتحويل نقاط البيانات الخام إلى مبيان. إذا كان لدينا nn نقطة s1,,sns_1, \ldots, s_n، نبني مصفوفة AA بحيث يُعبّر العنصر AijA_{ij} عن مدى قرب النقطتين ii وjj من بعضهما. تعتمد الورقة على غاوسية (RBF) لحساب هذا التشابه:

الفكرة بسيطة: كلّ زوج من النقاط يحصل على درجة تشابه تتناقص بشكل أُسّي كلّما ابتعدت النقطتان عن بعضهما. المُعامل σ\sigma يتحكّم في مدى اتّساع دائرة «الصداقة»: قيمة صغيرة لـ σ\sigma تعني أنّ الجيران القريبين جداً فقط يُعتبرون أصدقاء، وقيمة كبيرة تعني أنّ حتى النقاط البعيدة تحتفظ ببعض الارتباط. أمّا عناصر القُطر فتُضبط على صفر (Aii=0A_{ii} = 0) حتى لا تُعامَل أيّ نقطة كجارة لنفسها.

يمكنك التفكير في مصفوفة التشابه هذه كأنّها لمبيان مُرجَّح: كل نقطة تمثّل عقدة، ووزن الحافة بين أيّ عقدتين يعكس قوة الارتباط بينهما.

Aij={exp ⁣(sisj2/2σ2)ij0i=jA_{ij} = \begin{cases} \exp\!\bigl(-\|s_i - s_j\|^2 / 2\sigma^2\bigr) & i \neq j \\ 0 & i = j \end{cases}
مصفوفة التشابه الغاوسيةكل عنصر خارج القُطر يُعبّر عن تشابه مُرجَّح بدالة غاوسية. المُعامل σ يُحدّد نطاق الجوار: σ صغير يعني جواراً ضيّقاً، وσ كبير يعني جواراً واسعاً.
افتح في المختبر
حرّك شريط σ وراقب تأثيره على مصفوفة التشابه. القيمة الصغيرة تُنتج مصفوفة متناثرة تظهر فيها الكتل بوضوح، والقيمة الكبيرة تُنتج مصفوفة كثيفة شبه منتظمة.
تستيقظ التجربة عند وصولك…

الخطوة 2: لابلاسيان المبيان المُقيَّس

مصفوفة التشابه الخام وحدها لا تكفي، لأنّ العقد في المناطق الكثيفة تملك ارتباطات قوية كثيرة، بينما العقد المعزولة لديها ارتباطات قليلة. لذلك نحتاج إلى يُعادل بين هذه الفروقات. نُعرِّف أولاً DD: وهي مصفوفة قُطرية يساوي فيها العنصر DiiD_{ii} مجموع الصف ii في المصفوفة AA — بمعنى آخر، تقيس مدى «شعبية» كل عقدة. ثم نُشكّل المُقيَّس:

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

L=D1/2AD1/2L = D^{-1/2}\, A\, D^{-1/2}
لابلاسيان المبيان المُقيَّس (صيغة NJW)المصفوفة D قُطرية حيث D_ii = Σⱼ A_ij. الضرب بـ D^{-1/2} من الجهتين يُقيّس كل عنصر نسبةً إلى المتوسط الهندسي لدرجتَي العقدتين الطرفيتين.

الخطوة 3: المتجهات الذاتية تكشف خريطة العناقيد الخفيّة

هنا جوهر الفكرة. لنبدأ بالحالة المثالية: لو كانت البيانات تحتوي kk عناقيد منفصلة تماماً — بلا أيّ حواف بينها — لأصبح لابلاسيان المبيان LL مصفوفة كُتلية قُطرية، ولكانت أعلى kk متجهات ذاتية له متجهات مؤشِّرة: كلّ واحد منها يأخذ قيمة ثابتة داخل عنقود معيّن وصفراً خارجه. حين نُكدّس هذه المتجهات كأعمدة في مصفوفة XX، تصبح الصفوف التي تنتمي إلى العنقود نفسه متطابقة، وعندها تسترجعها k-means بلا عناء.

في الواقع طبعاً، العناقيد ليست منفصلة بالكامل — هناك دائماً حواف ضعيفة تعبر بين عنقود وآخر. هنا يأتي دور نظرية اضطراب المصفوفات التي تُخبرنا أنّ اضطرابات صغيرة في مصفوفة كتلية قُطرية تُنتج اضطرابات صغيرة في متجهاتها الذاتية. بمعنى أنّ صفوف XX لن تكون متطابقة تماماً داخل العنقود الواحد، لكنّها ستكون متقاربة جداً — قريبة بما يكفي لتتمكّن k-means من فصلها بسهولة.

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

افتح في المختبر
لاحظ كيف تُعطي المتجهات الذاتية العليا للابلاسيان قيماً متقاربة للنقاط داخل العنقود الواحد. كل متجه ذاتي يُبرز حدود عنقود مختلف.
تستيقظ التجربة عند وصولك…

الخطوة 4: تقييس الصفوف — الإسقاط على الكرة

بعد أن نستخرج أعلى kk متجهات ذاتية ونضعها في مصفوفة XX، نُقيّس كل صف ليصبح طوله وحدوياً، فنحصل على مصفوفة YY حيث Yij=Xij/(jXij2)1/2Y_{ij} = X_{ij} / (\sum_j X_{ij}^2)^{1/2}. عملياً، هذا يعني إسقاط كل نقطة على سطح كرة وحدوية في فضاء ذي kk بُعداً.

لماذا نحتاج هذه الخطوة؟ بدون التقييس، تحصل النقاط في العناقيد ضعيفة الترابط على قيم صغيرة في المتجهات الذاتية، بينما تحصل نقاط العناقيد المتماسكة على قيم أكبر. تقييس الصفوف يُزيل هذا التفاوت المرتبط بالكثافة، فتُعامل k-means جميع العناقيد بالتساوي بغضّ النظر عن كثافتها الداخلية. الأمر أشبه بنظام تصويت عادل: لكل شخص صوت واحد بالقيمة نفسها، سواء عاش في مدينة مكتظّة أو ريف متناثر.

المؤلفون يصفون هذه الخطوة بأنّها «تجميلية» — أي يمكن تخطّيها أحياناً — لكن عملياً تُحسّن النتائج بشكل واضح عند التعامل مع بيانات تتفاوت فيها كثافة العناقيد.

Yij=Xij(jXij2)1/2Y_{ij} = \frac{X_{ij}}{\bigl(\sum_{j} X_{ij}^2\bigr)^{1/2}}
تقييس الصفوف إلى الكرة الوحدويةيُقيَّس كل صف في مصفوفة المتجهات الذاتية إلى طول وحدوي، فتُسقط جميع النقاط على كرة فائقة ويُصبح التمثيل غير متأثّر بكثافة العنقود.

خوارزمية NJW الكاملة

ما يُميّز خوارزمية NJW هو بساطتها المدهشة — يمكن تنفيذها بأسطر قليلة من الشيفرة البرمجية، رغم أنّها مبنية على أساس نظري رياضي متين. إليك خطوات الخوارزمية كاملةً:

افتح في المختبر
اضغط على كل خطوة لاستعراض ما يحدث في تلك المرحلة. لاحظ أنّ k-means في الخطوة الأخيرة تعمل في فضاء المتجهات الذاتية الجديد، وليس في فضاء البيانات الأصلي.
تستيقظ التجربة عند وصولك…

المُعامل σ: ما مدى اتساع «الجوار»؟

σ\sigma في النواة الغاوسية هو أكثر عنصر تأثيراً في الخوارزمية. يُحدّد هذا المُعامل النطاق الذي «ترى» فيه الخوارزمية البنية الكامنة في البيانات:

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

تُبيّن الورقة أنّه متى ضُبط σ\sigma بشكل صحيح، تتحقّق الضمانات النظرية للخوارزمية. من الناحية العملية، يحتاج اختيار σ\sigma إلى خبرة بطبيعة البيانات أو طرق تجريبية مثل استخدام وسيط المسافات الثنائية. وقد طوّر زلنيك-مانور وبيرونا لاحقاً (2004) أسلوب التقييس المحلي — بتخصيص قيمة σi\sigma_i مختلفة لكل نقطة — ليتكيّف تلقائياً مع بيانات متعددة المقاييس.

افتح في المختبر
حرّك شريط σ لتكتشف النقطة المثالية بين مبيان مُشتّت (σ صغير جداً) وكتلة منتظمة بلا ملامح (σ كبير جداً).
تستيقظ التجربة عند وصولك…

لماذا تنجح: حجّة اضطراب المصفوفات

الأساس النظري للورقة يقوم على مبرهنة ديفيس-كاهان من نظرية اضطراب المصفوفات. لنتتبّع خطّ الاستدلال:

نبدأ بتخيّل مصفوفة تشابه «مثالية» A^\hat{A} كتلية قُطرية بالكامل — أي لا يوجد أيّ تشابه بين العناقيد. في هذه الحالة، تكون أعلى kk متجهات ذاتية هي متجهات مؤشِّرة مثالية. المصفوفة الحقيقية AA ليست سوى اضطراب لهذه المصفوفة المثالية: A=A^+HA = \hat{A} + H، حيث HH تحتوي التشابهات الضعيفة العابرة بين العناقيد.

ما تقوله مبرهنة ديفيس-كاهان هو أنّ المتجهات الذاتية لـ AA تبقى قريبة من تلك الخاصة بـ A^\hat{A} ما دام حجم الاضطراب H\|H\| صغيراً مقارنةً بفجوة δ\delta — وهي الفجوة بين القيمة الذاتية رقم kk ورقم k+1k+1. بشكل أدقّ، الزاوية بين الفضاءين الفرعيين الحقيقي والمثالي محدودة بـ O(H/δ)O(\|H\| / \delta).

المعنى العملي واضح: حين تكون العناقيد منفصلة جيداً (H\|H\| صغير وδ\delta كبير)، تتراصّ صفوف مصفوفة المتجهات الذاتية XX في تجمّعات مُحكَمة قرب المواضع المثالية، وتتمكّن k-means من استعادتها بسهولة.

الفكرة ذاتها في شيفرة برمجية

خوارزمية NJW للتعنقد الطيفي، كاملةًpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np
from scipy.spatial.distance import pdist, squareform
from sklearn.cluster import KMeans

def spectral_clustering(data, k, sigma):
    """خوارزمية Ng-Jordan-Weiss للتعنقد الطيفي.
       data: مصفوفة (n, d) من النقاط
       k: عدد العناقيد
       sigma: عرض نطاق النواة الغاوسية
    """
    # الخطوة 1: بناء مصفوفة التشابه
    dists = squareform(pdist(data, 'sqeuclidean'))
    A = np.exp(-dists / (2 * sigma ** 2))
    np.fill_diagonal(A, 0)          # بلا حلقات ذاتية

    # الخطوة 2: لابلاسيان مُقيَّس  L = D^{-1/2} A D^{-1/2}
    D_inv_sqrt = np.diag(1.0 / np.sqrt(A.sum(axis=1)))
    L = D_inv_sqrt @ A @ D_inv_sqrt

    # الخطوة 3: أعلى k متجهات ذاتية
    eigenvalues, eigenvectors = np.linalg.eigh(L)
    X = eigenvectors[:, -k:]        # أكبر k

    # الخطوة 4: تقييس الصفوف → إسقاط على الكرة الوحدوية
    norms = np.linalg.norm(X, axis=1, keepdims=True)
    Y = X / norms

    # الخطوة 5: k-means في فضاء المتجهات الذاتية
    labels = KMeans(n_clusters=k).fit_predict(Y)
    return labels

نصائح عملية: متى تستخدم التعنقد الطيفي

التعنقد الطيفي يتفوّق في سياقات معيّنة، لكنّه ليس بديلاً شاملاً لـ k-means في كل حالة. إليك أبرز الحالات التي يتألّق فيها:

  • عناقيد غير محدّبة — كالحلقات واللوالب و. إذا كانت بياناتك ذات بنية هندسية معقّدة، يستطيع التعنقد الطيفي فصل ما تعجز عنه k-means.
  • بيانات ذات بنية مبيانية أصلاً — كالشبكات الاجتماعية ومبيانات الاستشهاد والشبكات البيولوجية. هنا مصفوفة الجوار موجودة مسبقاً ولا نحتاج إلى بنائها.
  • تجزئة الصور — البكسلات تُشكّل مبياناً شبكياً طبيعياً، والتعنقد الطيفي يُحدّد المناطق بناءً على الارتباط لا المسافة.

وهناك حالات يجب فيها الحذر:

  • مجموعات البيانات الكبيرة — الخوارزمية تحتاج حساب وتحليل مصفوفة بحجم n×nn \times n، وهذا يعني تعقيداً بمقدار O(n3)O(n^3). لقيم nn الكبيرة لا بدّ من اللجوء إلى طرق تقريبية كتقريب نيستروم.
  • اختيار σ وk — على خلاف k-means التي تحتاج تحديد kk فقط، يتطلّب التعنقد الطيفي ضبط σ\sigma أيضاً. فجوة القيم الذاتية تساعد في تحديد kk، لكنّ σ\sigma يحتاج عناية خاصّة.
  • لا امتداد لنقاط جديدة — إضافة نقاط جديدة تتطلب إعادة تشغيل الخوارزمية بالكامل (قيد مشترك مع t-SNE).

الأثر: من التعنقد إلى الشبكات العصبية البيانية

  1. 2000

    شي ومالك — القطوع المُقيَّسة

    طبّقا فكرة تقسيم المبيان طيفياً على تجزئة الصور مستخدمَين معيار القطع المُقيَّس، وبيّنا أنّ القطع الأمثل يُستخرج من المتجه الذاتي الثاني لمسألة القيم الذاتية المُعمَّمة.

  2. 2001

    Ng وJordan وWeiss — خوارزمية NJW

    وحّدوا مقاربات التعنقد الطيفي في خوارزمية بسيطة قابلة للتحليل الرياضي. قدّموا أوّل ضمانات نظرية مبنية على نظرية اضطراب المصفوفات. تجاوزت استشهاداتها 10,000.

  3. 2004

    زلنيك-مانور وبيرونا — التعنقد ذاتي الضبط

    استبدلا المُعامل الثابت σ بتقييس محلي σᵢ يختلف من نقطة لأخرى، ممّا يُمكّن الخوارزمية من التكيّف تلقائياً مع بيانات متعددة المقاييس. واقترحا كذلك طريقة لاختيار k تلقائياً عبر محاذاة المتجهات الذاتية.

  4. 2007

    فون لوكسبورغ — شرح شامل للتعنقد الطيفي

    مرجع تعليمي شامل يستعرض خوارزميات التعنقد الطيفي من زوايا متعدّدة — قطوع المبيانات والمشي العشوائي ونظرية الاضطراب. أصبح المرجع الأساسي لتدريس هذا الموضوع.

  5. 2017

    الشبكات الالتفافية البيانية (GCN)

    اعتمد كيبف ووِلينغ على لابلاسيان المبيان المُقيَّس نفسه المُستخدم في التعنقد الطيفي كأساس لبناء التفافات مبيانية قابلة للتعلّم. بذلك أصبحت رياضيات التعنقد الطيفي جسراً مباشراً نحو التعلم العميق على المبيانات.

  6. 2020

    الشبكات العصبية البيانية الطيفية والترميزات الموضعية

    المتجهات الذاتية للابلاسيان — وهي نفسها المستخدمة في التعنقد الطيفي — اعتُمدت كترميزات موضعية معيارية في محوِّلات المبيانات، فانتقلت أفكار التعنقد الطيفي إلى عصر النماذج التأسيسية.

لعلّ أهمّ ما تركته ورقة NJW ليس الخوارزمية بحدّ ذاتها، بل الرؤية العميقة بأنّ المتجهات الذاتية لـلابلاسيان المبيان تحمل في طيّاتها بنية التجميع الطبيعية للمبيان. هذه الفكرة امتدّت مباشرةً إلى الشبكات الالتفافية البيانية، حيث تؤدّي المتجهات الذاتية للابلاسيان دور «أساس فورييه» للمبيان، ممّا يُتيح إجراء على بنى غير منتظمة. في كل مرة تتعلّم فيها أو التنبّؤ بخصائص الجزيئات، فإنّها تبني على الأساس الذي أرساه التعنقد الطيفي.

المرجعNg, Jordan, Weiss. On Spectral Clustering: Analysis and an Algorithm. NeurIPS, 2001.

مصطلحات هذه الورقة