t-distributed Stochastic Neighbor Embedding (t-SNE)
يُسقط t-SNE البيانات العالية الأبعاد إلى فضاء ثنائي أو ثلاثي الأبعاد مع الحفاظ على تجاور النقاط المتجاورة، ما يكشف العناقيد. تعرّف على آلية عمله ومقياس التعقيد النسبي ومآزقه والشفرة البرمجية.
تضمين الجوار العشوائي الاحتمالي الموزع وفق t (t-SNE) أسلوب غير خطي لـخفض الأبعاد، يضع نقاط البيانات عالية الأبعاد على خريطة ثنائية أو ثلاثية الأبعاد، بحيث تظل النقاط المتجاورة في الفضاء الأصلي متجاورة على الخريطة. قدّمه Laurens van der Maaten وGeoffrey Hinton في ورقة بحثية عام 2008 في مجلة أبحاث التعلم الآلي. وهو أداة معيارية لـتصوير البيانات الخاصة بـالتضمينات وسمات الصور وبيانات التعبير الجيني أحادي الخلية، حيث تخفي مئات الأبعاد مجموعاتٍ تكشفها مخططات التبعثر ثنائية الأبعاد.
كيف يعمل t-SNE#
يحوّل t-SNE المسافات إلى احتمالات في كلا الفضاءين، ثم يحرّك نقاط الخريطة إلى أن تتطابق مجموعتا الاحتمالات:
- أوجه التشابه عالية الأبعاد: يضع t-SNE توزيعاً غاوسياً حول المسافات من كل نقطة إلى النقاط الأخرى، ويحولها إلى احتمالات اختيار كل نقطة بوصفها جاراً. ويُضبط عرض كل توزيع غاوسي بحيث يطابق مقياس الحيرة في التوزيع، أي العدد الفعلي التقريبي للجيران، قيمةً يحددها المستخدم؛ ما ينتج توزيعات غاوسية ضيقة في المناطق الكثيفة وواسعة في المناطق المتناثرة.
- أوجه التشابه منخفضة الأبعاد: تُستمد أوجه التشابه على الخريطة من توزيع t لستيودنت بدرجة حرية واحدة، وتتيح ذيوله الثقيلة تباعد النقاط المتوسطة المسافة. وهذا يخفف مشكلة التزاحم: إذ لا تتسع الخريطة الثنائية الأبعاد لاستيعاب جميع الجيران المتوسطَي القرب الذين قد تحيط بهم نقطة عالية الأبعاد.
- التحسين: يحرّك الانحدار التدرجي نقاط الخريطة لتقليل تباعد Kullback-Leibler بين التوزيعين. تضرب مرحلة المبالغة المبكرة أوجه التشابه عالية الأبعاد في 12 في scikit-learn، فتتشكل المجموعات الطبيعية متقاربة ومنفصلة بوضوح في مرحلة مبكرة.
يقارن t-SNE الدقيق كل زوج من النقاط، لذا تزداد كلفته تربيعياً مع حجم مجموعة البيانات. ويقلل تقريب Barnes-Hut، وهو الإعداد الافتراضي في scikit-learn، الكلفة إلى O(N log N) للخرائط الثنائية والثلاثية الأبعاد، بينما تتعامل تطبيقات تسريع FFT مثل openTSNE مع ملايين النقاط.
مقياس الحيرة وقراءة مخطط t-SNE#
مقياس الحيرة هو الإعداد الأهم. تتراوح القيم المعتادة بين 5 و50، والقيمة الافتراضية في scikit-learn هي 30، ويجب أن تكون أصغر من عدد النقاط. يركز مقياس الحيرة المنخفض على البنية المحلية جداً وقد يقسم مجموعة واحدة إلى أجزاء، بينما يدمج المقياس المرتفع المجموعات المتجاورة ويُظهر المزيد من التخطيط العام. وبما أن التحسين غير محدب، قد تنتج البذور العشوائية المختلفة خرائط مختلفة.
تجعل ثلاث خصائص قراءة مخططات t-SNE عرضة لسوء الفهم. لا تكشف أحجام المجموعات على الخريطة إلا القليل عن انتشار المجموعات الأصلية، لأن t-SNE يوسّع المجموعات الكثيفة ويقلص المتناثرة. كما أن المسافات بين المجموعات غير موثوقة، وقد يبدو حتى الضجيج العشوائي على شكل مجموعات عند انخفاض مقياس الحيرة. ولا تتضمن TSNE في scikit-learn طريقة transform أيضاً، لذا لا يمكن إسقاط نقاط جديدة على خريطة مدرّبة دون إعادة حسابها، كما نادراً ما تُستخدم إحداثيات t-SNE سماتٍ إدخالاً لنماذج أخرى.
مقارنة t-SNE وPCA وUMAP#
تحليل المكونات الرئيسية (PCA) خطي وحتمي، ويحافظ على اتجاهات أكبر تباين عالمي، ويسقط النقاط الجديدة فوراً. أما t-SNE فغير خطي وعشوائي ويحافظ على الجوار المحلي. وغالباً ما يُدمج الأسلوبان: إذ يقلل خفض البيانات عالية الأبعاد جداً إلى نحو 50 بُعداً باستخدام PCA قبل تشغيل t-SNE الضجيج ويسرّع الحساب، كما تهيّئ طريقة t-SNE في scikit-learn الخريطة انطلاقاً من PCA افتراضياً، ما يحافظ على قدر أكبر من الترتيب العام. ويبني UMAP، الذي قُدّم عام 2018، رسمًا بيانياً للجوار أيضاً، ويعمل عادةً بسرعة أكبر على مجموعات البيانات الكبيرة، وغالباً ما يحافظ على بنية عالمية أكثر، ويمكنه تضمين نقاط جديدة في خريطة موجودة.
يسقط هذا المثال الأرقام المكتوبة بخط اليد، ذات 64 بكسلاً، والمضمّنة مع scikit-learn إلى بُعدين باستخدام الأسلوبين، ويقيس موثوقية الجوار، أي مدى كون أقرب الجيران لكل نقطة على الخريطة جيراناً لها أيضاً في فضاء 64 بُعداً:
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE, trustworthiness
# 1,797 handwritten digits, each an 8x8 image flattened to 64 features
X, y = load_digits(return_X_y=True)
# Project to 2D with a linear method and with t-SNE
X_pca = PCA(n_components=2).fit_transform(X)
X_tsne = TSNE(n_components=2, perplexity=30, random_state=0).fit_transform(X)
# Trustworthiness near 1.0 means a point's 2D neighbors were also its 64D neighbors
print(f"PCA trustworthiness: {trustworthiness(X, X_pca, n_neighbors=10):.3f}")
print(f"t-SNE trustworthiness: {trustworthiness(X, X_tsne, n_neighbors=10):.3f}")يطبع البرنامج 0.830 لـPCA و0.993 لـt-SNE. يؤدي ضغط 64 بُعداً في اتجاهين خطيين إلى وضع نقاط كثيرة بجوار أرقام كانت بعيدة عنها في فضاء 64 بُعداً، بينما تحافظ خريطة t-SNE على جميع علاقات أقرب 10 جيران الأصلية تقريباً.
تطبيقات عملية#
- فحص السمات المتعلّمة: يكشف إسقاط مخرجات استخراج السمات في الشبكة ما إذا كانت الفئات المتشابهة بصرياً تشكل مجموعات منفصلة. تعيد نماذج YOLO26 متجه سمات واحداً لكل صورة عبر
model.embed()، مأخوذاً افتراضياً من الطبقة قبل الأخيرة، وتوضح خريطة t-SNE لهذه المتجهات كيفية فصل النموذج المدرّب حسب الطلب لفئاته. - تنقيح مجموعة البيانات: غالبًا ما تكون الصور الواقعة داخل جزيرة فئة أخرى موسومة خطأً، وتشير التكتلات الضيقة من النقاط المتطابقة تقريبًا إلى وجود نسخ مكررة. وتسقط لوحة التجميع في Ultralytics Platform تضمينات صور مجموعة البيانات على مخطط مبعثر ثنائي الأبعاد مشابه لإجراء هذه الفحوص.
- تضمينات الكلمات والمستندات: تضع خرائط متجهات الكلمات الكلمات المترابطة، مثل أسماء البلدان أو الأعداد، في مجموعات متجاورة.
- علم الجينوم أحادي الخلية: يخفض الباحثون تعبير آلاف الجينات في كل خلية إلى بُعدين لتحديد أنواع الخلايا؛ وكان t-SNE معياراً طويلاً لهذا التحليل قبل أن تنتقل مجموعات كثيرة إلى UMAP.










