تقنية قیاس متعدد الأبعاد (MDS) وتنفیذها في بايثون

تقنية MDS

المقدمة

تقنية قیاس متعدد الأبعاد (Multidimensional Scaling, MDS) هو أسلوب يقوم بإنشاء خريطة تعرض المواضع النسبية لعدد من الكائنات، مع إعطاء جدول فقط للمسافات بينها. قد تتكون الخريطة من بُعد واحد أو اثنين أو ثلاثة أو حتى أكثر. يحسب البرنامج إما الحل المتري (metric) أو غير المتري (non-metric). يُعرف جدول المسافات بمصفوفة القرب (proximity matrix). وينشأ إما مباشرة من التجارب أو بشكل غير مباشر كمصفوفة ارتباط (correlationmatrix).

تقنيات تخفیض الأبعاد (dimensionality reduction techniques)

لفهم كيف يمكن ملاحظة مصفوفة التقارب بشكل مباشر، ضع في اعتبارك مثال البحث التسويقي التالي. لنفترض أن عشرة مواضیع قيموا أوجه التشابه بين ست سيارات. تكون التصنيفات على مقياس 1 إلى 10، حيث الرقم “1” يعني أن السيارات متطابقة من جميع النواحي ويعني الرقم “10” أن السيارات مختلفة قدر الإمكان. فيتم احتساب متوسط التصنيفات عبر الموضوعات، مما يشكل مصفوفة تشابه (similarity matrix). يوفر MDS للباحث التسويقي خريطة (مخطط التبعثر) للسيارات الست التي تلخص النتائج بصريًا. فتُظهر هذه الخريطة الاختلافات الملحوظة بين السيارات.

الخلفية الرياضية لتقنية قیاس متعدد الأبعاد (Multidimensional Scaling)

سيساعد المثال التالي في شرح ما يفعله برنامج MDS. ضع في اعتبارك مجموعة البيانات التالية.

الهدف (الصيغة)XY
A15
B14
C13
D11
مصفوفة البيانات الأصلية

يظهر مخطط التبعثر (scatter plot) لهذه البيانات على النحو التالي:

تقنية قیاس متعدد الأبعاد (MDS) وتنفیذها في بايثون
مخطط مبعثر للبیانات الاصلیة

لاحظ أن مخطط التبعثر (scatter plot) يتيح لنا تقييم المسافة بين كل زوج من النقاط بصريًا. فيمكننا أن نرى أن A قريب من B، لكنه بعيد عن C و D. يمكننا أيضًا أن نرى أن كل من C و D يبدوان أنهما وحدهما. يمكن احتساب المسافة الفعلية بين نقطتين i و j عدديًا باستخدام صيغة المسافة الإقليدية:

d_{ij}=\sqrt{\sum_{k=1}^{p}(^{x_{ik}-x_{jk}})^{2}}

حيث p هو عدد الأبعاد (وهو 2 في مثالنا)،  d_{ij}، و  x_{ik} هي قيمة البیانات للصف i^{th} و عمود  k. هذه الصيغة هي امتداد بسيط لنظرية فيثاغورس الشهيرة. لاحظ أن هذه الصيغة تسمح بعدد غير محدود من الأبعاد. أي على الرغم من أننا نرسم النقاط في الفضاء الثنائي الأبعاد فقط، فإن الصيغة تحسب المسافة في فضاء ذات p بعد، حيث يمكن أن يكون p أكبر من اثنين. على سبيل المثال، يتم احتساب المسافة من A إلى D على النحو التالي:

2.82843=\sqrt{(1-3)^{2}+(5-3)^{2}}

هذه المسافات مترتبة في شكل مصفوفة على النحو التالي:

ABCD
A0.000001.000004.000002.82843
B1.000000.000003.000002.23607
C4.000003.000000.00000 2.82843
D2.828432.236072.82843 0.00000
مصفوفة المسافة المحسوبة

فنظرًا إلى أن المسافة من A إلى D هي نفس المسافة من D إلى A، وإن مصفوفة المسافة متماثلة (symmetric). ونحتاج فقط إلى النظر في نصف المصفوفة. وفي البرنامج، نطلب فقط النصف العلوي (upper half). ستكون مصفوفة المسافة النهائية هي:

ABCD
A 0.00000 1.00000 4.00000 2.82843
B 0.00000 3.00000 2.23607
C 0.00000 2.82843
D 0.00000
مصفوفة مثلثة المسافة العليا

تتمثل المهمة التي حاولت تقنية MDS في منحها مصفوفة مسافة فقط، والعثور على البيانات الأصلية بحيث يمكن رسم خريطة (مخطط التبعثر) للبيانات.

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

في بایثون، يوجد تنفيذ جيد في MDS ضمن الوحدة النمطية manifold من الحزمة sklearn. دعنا نرى مثالاً باستخدام مجموعة بيانات Iris الشهيرة.

خطوات تنفیذ تقنية MDS في بایثون

سنقوم بتصور الخصائص الأربع لمجموعة بيانات Iris باستخدام MDS لتوسيع نطاقها في بعدين. أولاً، سنقوم بإجراء تحجيم من 0 إلى 1 للخصائص، ثم سننفذ MDS في بعدين ونرسم البيانات الجديدة، مع إعطاء كل نقطة لونًا مختلفًا وفقًا للمتغير المستهدف لمجموعة بيانات Iris.

لنبدأ في استيراد بعض المكتبات.

الخطوة الأولی: استیراد المکتبات الرئیسیة وتهیئة البیانات

کود:

import numpy as np
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
from sklearn.manifold import MDS
from sklearn.preprocessing import MinMaxScaler

الآن، دعنا نحمل مجموعة بيانات Iris.

کود:

data = load_iris()
X = data.data

يمكننا الآن إجراء تحجيم 0-1  للبيانات باستخدام MinMaxScaler:

کود:

scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)

الخطوة الثانیة: تطبیق تقنية MDS

بعد ذلك، سنطبق إجراء MDS للحصول على مجموعة بيانات ثنائية الأبعاد. يتم تعيين Random_state  من أجل جعل كل رسم بیاني قابل للتكرار.

کود:

mds = MDS(2,random_state=0)
X_2d = mds.fit_transform(X_scaled)

الخطوة الثالثة: رسم مجموعة البیانات الجدیدة

کود:

colors = ['red','green','blue']
plt.rcParams['figure.figsize'] = [7, 7]
plt.rc('font', size=14)
for i in np.unique(data.target):
  subset = X_2d[data.target == i]
  
  x = [row[0] for row in subset]
  y = [row[1] for row in subset]
  plt.scatter(x,y,c=colors[i],label=data.target_names[i])
plt.legend()
plt.show()

الإخراج:

 وها هي النتيجة:

تقنية MDS
الإخراج بعد تطبیق تقنية MDS

كما هو واضح، فإن نقاط “سيتوسا” بعيدة جدًا عن النقاط الأخرى وتشكل كتلة (cluster) من تلقاء نفسها. لا يمكن تحقيق هذه الرؤية بسهولة دون رسم البيانات بهذه الطريقة.

استنتاج

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

المصادر

المصدر الأول
المصدر الثاني

منشور ذات صلة
تقنیة تحليل التمييز الخطي 5 Minutes

تقنیة التحليل التمييزي الخطي (Linear Discriminant Analysis) تنفیذها في البایثون

حسن خنفري

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

السلة