لدينا إصدار جديد التوصيات 1.2.0!
الكثير من التغييرات منذ الإصدار الأخير لدينا. لدينا اختبارات كاملة على Python 3.8 إلى 3.11 (حوالي 1800 اختبار)، وأداء مطور في العديد من الخوارزميات، ومراجعة دفاتر الملاحظات، والعديد من التحسينات الأخرى.
هدف مقدمي التوصيات هو مساعدة الباحثين والمطورين والمتحمسين في وضع النماذج الأولية وتجريبها وتقديمها إلى الإنتاج لمجموعة من أنظمة التوصية الكلاسيكية والحديثة.
Recommenders هو مشروع تابع لمؤسسة Linux للذكاء الاصطناعي والبيانات.
يحتوي هذا المستودع على أمثلة وأفضل الممارسات لبناء أنظمة التوصيات، والتي يتم توفيرها كدفاتر ملاحظات Jupyter. توضح الأمثلة ما تعلمناه في خمس مهام رئيسية:
يتم توفير العديد من الأدوات المساعدة في التوصيات لدعم المهام الشائعة مثل تحميل مجموعات البيانات بالتنسيق المتوقع بواسطة خوارزميات مختلفة، وتقييم مخرجات النموذج، وتقسيم بيانات التدريب/الاختبار. يتم تضمين تطبيقات العديد من الخوارزميات الحديثة للدراسة الذاتية والتخصيص في التطبيقات الخاصة بك. راجع وثائق التوصيات.
للحصول على نظرة عامة أكثر تفصيلاً عن المستودع، يرجى الاطلاع على الوثائق الموجودة على صفحة الويكي.
بالنسبة لبعض السيناريوهات العملية التي تم فيها تطبيق أنظمة التوصية، راجع السيناريوهات.
نوصي باستخدام conda لإدارة البيئة وVS Code للتطوير. لتثبيت حزمة التوصيات وتشغيل مثال على دفتر الملاحظات على Linux/WSL:
# 1. Install gcc if it is not installed already. On Ubuntu, this could done by using the command
# sudo apt install gcc
# 2. Create and activate a new conda environment
conda create -n < environment_name > python=3.9
conda activate < environment_name >
# 3. Install the core recommenders package. It can run all the CPU notebooks.
pip install recommenders
# 4. create a Jupyter kernel
python -m ipykernel install --user --name < environment_name > --display-name < kernel_name >
# 5. Clone this repo within VSCode or using command line:
git clone https://github.com/recommenders-team/recommenders.git
# 6. Within VSCode:
# a. Open a notebook, e.g., examples/00_quick_start/sar_movielens.ipynb;
# b. Select Jupyter kernel <kernel_name>;
# c. Run the notebook.
لمزيد من المعلومات حول الإعداد على الأنظمة الأساسية الأخرى (مثل Windows وmacOS) والتكوينات المختلفة (مثل GPU وSpark والميزات التجريبية)، راجع دليل الإعداد.
بالإضافة إلى الحزمة الأساسية، يتم توفير العديد من الإضافات أيضًا، بما في ذلك:
[gpu]
: مطلوب لتشغيل نماذج GPU.[spark]
: مطلوب لتشغيل موديلات Spark.[dev]
: مطلوب لتطوير الريبو.[all]
: [gpu]
| [spark]
| [dev]
[experimental]
: النماذج التي لم يتم اختبارها بدقة و/أو قد تتطلب خطوات إضافية في التثبيت. يسرد الجدول أدناه خوارزميات التوصية المتوفرة حاليًا في المستودع. يتم ربط دفاتر الملاحظات ضمن عمود المثال كبداية سريعة، وتعرض مثالاً سهل التشغيل للخوارزمية، أو كغوص عميق، يشرح بالتفصيل العمليات الحسابية وتنفيذ الخوارزمية.
خوارزمية | يكتب | وصف | مثال |
---|---|---|---|
تناوب المربعات الصغرى (ALS) | التصفية التعاونية | خوارزمية تحليل المصفوفة للحصول على تعليقات صريحة أو ضمنية في مجموعات البيانات الكبيرة، مُحسّنة لقابلية التوسع وقدرة الحوسبة الموزعة. يعمل في بيئة PySpark. | بداية سريعة / الغوص العميق |
تحليل القيمة المفردة غير المتزامنة (A2SVD) * | التصفية التعاونية | خوارزمية قائمة على التسلسل تهدف إلى التقاط تفضيلات المستخدم طويلة وقصيرة المدى باستخدام آلية الانتباه. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
تصنيف كورناك/بايزي المخصص (BPR) | التصفية التعاونية | خوارزمية تحليل المصفوفة للتنبؤ بترتيب العناصر مع ردود الفعل الضمنية. يعمل في بيئة وحدة المعالجة المركزية. | الغوص العميق |
أداة التشفير التلقائي المتغيرة للكورناك/الثنائية (BiVAE) | التصفية التعاونية | النموذج التوليدي للبيانات الثنائية (على سبيل المثال، تفاعلات عنصر المستخدم). يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | الغوص العميق |
توصية تضمين التسلسل التلافيفي (Caser) | التصفية التعاونية | خوارزمية تعتمد على الالتفافات التي تهدف إلى التقاط التفضيلات العامة للمستخدم والأنماط التسلسلية. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
شبكة المعرفة العميقة (DKN) * | التصفية على أساس المحتوى | خوارزمية التعلم العميق تتضمن رسمًا بيانيًا معرفيًا ودمج المقالات لتقديم الأخبار أو توصيات المقالات. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة / الغوص العميق |
آلة التحليل العميق للغاية (xDeepFM) * | التصفية التعاونية | خوارزمية تعتمد على التعلم العميق للحصول على تعليقات ضمنية وصريحة مع ميزات المستخدم/العنصر. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
FastAI تضمين انحياز النقطة (FAST) | التصفية التعاونية | خوارزمية للأغراض العامة مع التضمينات والتحيزات للمستخدمين والعناصر. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
آلة LightFM/التخصيم | التصفية التعاونية | خوارزمية آلة التخصيم لكل من ردود الفعل الضمنية والصريحة. يعمل في بيئة وحدة المعالجة المركزية. | بداية سريعة |
LightGBM/شجرة تعزيز التدرج * | التصفية على أساس المحتوى | خوارزمية Gradient Boosting Tree للتدريب السريع واستخدام منخفض للذاكرة في المشكلات القائمة على المحتوى. إنه يعمل في بيئات وحدة المعالجة المركزية/GPU/PySpark. | بداية سريعة في وحدة المعالجة المركزية / الغوص العميق في PySpark |
LightGCN | التصفية التعاونية | خوارزمية التعلم العميق التي تعمل على تبسيط تصميم GCN للتنبؤ بالتعليقات الضمنية. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | الغوص العميق |
جيو آي إم سي * | التصفية التعاونية | خوارزمية إكمال المصفوفة التي تأخذ في الاعتبار ميزات المستخدم والعنصر باستخدام تحسين التدرج المترافق Riemannian وتتبع منهجًا هندسيًا. يعمل في بيئة وحدة المعالجة المركزية. | بداية سريعة |
GRU | التصفية التعاونية | خوارزمية قائمة على التسلسل تهدف إلى التقاط تفضيلات المستخدم طويلة وقصيرة المدى باستخدام الشبكات العصبية المتكررة. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
VAE متعدد الحدود | التصفية التعاونية | النموذج التوليدي للتنبؤ بتفاعلات المستخدم/العنصر. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | الغوص العميق |
التوصية العصبية مع تمثيلات المستخدم طويلة وقصيرة المدى (LSTUR) * | التصفية على أساس المحتوى | خوارزمية التوصية العصبية للتوصية بالمقالات الإخبارية مع نمذجة اهتمامات المستخدم على المدى الطويل والقصير. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
التوصية العصبية مع التعلم اليقظ متعدد المشاهد (NAML) * | التصفية على أساس المحتوى | خوارزمية التوصية العصبية للتوصية بالمقالات الإخبارية مع التعلم اليقظ متعدد وجهات النظر. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
التصفية التعاونية العصبية (NCF) | التصفية التعاونية | خوارزمية التعلم العميق مع الأداء المحسن للتعليقات الضمنية للمستخدم/العنصر. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة / الغوص العميق |
التوصية العصبية مع الاهتمام الشخصي (NPA) * | التصفية على أساس المحتوى | خوارزمية التوصية العصبية للتوصية بالمقالات الإخبارية باستخدام شبكة الاهتمام الشخصية. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
التوصية العصبية مع الانتباه الذاتي متعدد الرؤوس (NRMS) * | التصفية على أساس المحتوى | خوارزمية التوصية العصبية للتوصية بالمقالات الإخبارية ذات الاهتمام الذاتي متعدد الرؤوس. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
توصية العنصر التالي (NextItNet) | التصفية التعاونية | خوارزمية تعتمد على التلافيف المتوسعة والشبكة المتبقية التي تهدف إلى التقاط أنماط متسلسلة. يأخذ في الاعتبار تفاعلات وميزات المستخدم/العنصر. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
آلات بولتزمان المقيدة (RBM) | التصفية التعاونية | خوارزمية تعتمد على الشبكة العصبية لتعلم التوزيع الاحتمالي الأساسي لتعليقات المستخدم/العنصر الصريحة أو الضمنية. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة / الغوص العميق |
إكمال المصفوفة الريمانية ذات الرتبة المنخفضة (RLRMC) * | التصفية التعاونية | خوارزمية تحليل المصفوفة باستخدام تحسين تدرجات ريمان المترافقة مع استهلاك صغير للذاكرة للتنبؤ بتفاعلات المستخدم/العنصر. يعمل في بيئة وحدة المعالجة المركزية. | بداية سريعة |
الخوارزمية البسيطة للتوصية (SAR) * | التصفية التعاونية | خوارزمية قائمة على التشابه للتعليقات الضمنية للمستخدم/العنصر. يعمل في بيئة وحدة المعالجة المركزية. | بداية سريعة / الغوص العميق |
التوصية التسلسلية ذاتية الاهتمام (SASRec) | التصفية التعاونية | خوارزمية تعتمد على المحولات للتوصية التسلسلية. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
التوصية المتكاملة للتفضيلات قصيرة المدى وطويلة المدى (SLi-Rec) * | التصفية التعاونية | خوارزمية قائمة على التسلسل تهدف إلى التقاط تفضيلات المستخدم طويلة وقصيرة المدى باستخدام آلية الانتباه ووحدة التحكم المدركة للوقت ووحدة التحكم المدركة للمحتوى. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
نمذجة المستخدم التسلسلي متعدد الاهتمامات (SUM) * | التصفية التعاونية | نموذج مستخدم متسلسل قائم على شبكة الذاكرة ويهدف إلى التقاط اهتمامات المستخدمين المتعددة. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
التوصية التسلسلية عبر المحول المخصص (SSEPT) | التصفية التعاونية | خوارزمية تعتمد على المحولات للتوصية التسلسلية مع تضمين المستخدم. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
قيمة ضريبة القيمة المضافة القياسية | التصفية التعاونية | النموذج التوليدي للتنبؤ بتفاعلات المستخدم/العنصر. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | الغوص العميق |
تحليل المفاجأة/القيمة المفردة (SVD) | التصفية التعاونية | خوارزمية تحليل المصفوفة للتنبؤ بتعليقات التصنيف الصريحة في مجموعات البيانات الصغيرة. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | الغوص العميق |
تردد المصطلح - تردد المستند العكسي (TF-IDF) | التصفية على أساس المحتوى | خوارزمية بسيطة قائمة على التشابه للتوصيات القائمة على المحتوى مع مجموعات البيانات النصية. يعمل في بيئة وحدة المعالجة المركزية. | بداية سريعة |
فاوبال وابيت (فولكس فاجن) * | التصفية على أساس المحتوى | خوارزميات تعلم سريعة عبر الإنترنت، رائعة للسيناريوهات التي تتغير فيها ميزات المستخدم/السياق باستمرار. ويستخدم وحدة المعالجة المركزية للتعلم عبر الإنترنت. | الغوص العميق |
واسعة وعميقة | التصفية التعاونية | خوارزمية التعلم العميق التي يمكنها حفظ تفاعلات الميزات وتعميم ميزات المستخدم. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | بداية سريعة |
xLearn/آلة التخصيم (FM) وFM الميدانية (FFM) | التصفية التعاونية | خوارزمية سريعة وفعالة في الذاكرة للتنبؤ بالتسميات باستخدام ميزات المستخدم/العنصر. يعمل في بيئة وحدة المعالجة المركزية/وحدة معالجة الرسومات. | الغوص العميق |
ملاحظة : * تشير إلى الخوارزميات التي ابتكرتها/ساهمت بها Microsoft.
تعتبر الخوارزميات والأدوات المساعدة المستقلة أو الحاضنة مرشحة لمجلد المساهمة. سيحتوي هذا على مساهمات قد لا تتناسب بسهولة مع المستودع الأساسي أو تحتاج إلى وقت لإعادة بناء الكود أو تطويره وإضافة الاختبارات اللازمة.
خوارزمية | يكتب | وصف | مثال |
---|---|---|---|
ساربلس * | التصفية التعاونية | التنفيذ الأمثل لـ SAR لـ Spark | بداية سريعة |
نحن نقدم دفتر ملاحظات مرجعي لتوضيح كيفية تقييم الخوارزميات المختلفة ومقارنتها. في هذا الدفتر، تم تقسيم مجموعة بيانات MovieLens إلى مجموعات تدريب/اختبار بنسبة 75/25 باستخدام تقسيم طبقي. يتم تدريب نموذج التوصية باستخدام كل من خوارزميات التصفية التعاونية أدناه. نحن نستخدم قيم المعلمات التجريبية المذكورة في الأدبيات هنا. بالنسبة لمقاييس التصنيف، نستخدم k=10
(أعلى 10 عناصر موصى بها). نقوم بإجراء المقارنة على NC6s_v2 Azure DSVM القياسي (6 وحدات معالجة مركزية افتراضية وذاكرة 112 جيجابايت ووحدة معالجة رسومات 1 P100). يتم تشغيل Spark ALS في الوضع المستقل المحلي. في هذا الجدول نعرض النتائج على Movielens 100k، مع تشغيل الخوارزميات لمدة 15 حقبة.
ألغو | رسم خريطة | nDCG@k | الدقة @ ك | أذكر @ ك | RMSE | ماي | ص 2 | وأوضح التباين |
---|---|---|---|---|---|---|---|---|
التصلب الجانبي الضموري | 0.004732 | 0.044239 | 0.048462 | 0.017796 | 0.965038 | 0.753001 | 0.255647 | 0.251648 |
بيفاي | 0.146126 | 0.475077 | 0.411771 | 0.219145 | لا يوجد | لا يوجد | لا يوجد | لا يوجد |
إعادة هندسة العمليات | 0.132478 | 0.441997 | 0.388229 | 0.212522 | لا يوجد | لا يوجد | لا يوجد | لا يوجد |
FastAI | 0.025503 | 0.147866 | 0.130329 | 0.053824 | 0.943084 | 0.744337 | 0.285308 | 0.287671 |
LightGCN | 0.088526 | 0.419846 | 0.379626 | 0.144336 | لا يوجد | لا يوجد | لا يوجد | لا يوجد |
نكف | 0.107720 | 0.396118 | 0.347296 | 0.180775 | لا يوجد | لا يوجد | لا يوجد | لا يوجد |
ريال سعودي | 0.110591 | 0.382461 | 0.330753 | 0.176385 | 1.253805 | 1.048484 | -0.569363 | 0.030474 |
SVD | 0.012873 | 0.095930 | 0.091198 | 0.032783 | 0.938681 | 0.742690 | 0.291967 | 0.291971 |
يرحب هذا المشروع بالمساهمات والاقتراحات. قبل المساهمة، يرجى الاطلاع على إرشادات المساهمة لدينا.
يلتزم هذا المشروع بمدونة قواعد السلوك هذه من أجل تعزيز مجتمع ترحيبي وملهم للجميع.
هذه الاختبارات هي البنيات الليلية، التي تحسب الاختبارات غير المتزامنة. main
هو فرعنا الرئيسي staging
هو فرع التطوير لدينا. نحن نستخدم pytest لاختبار الأدوات المساعدة لـ python في الموصيين ومنفذ دفتر الملاحظات الخاص بالموصيين لدفاتر الملاحظات.
لمزيد من المعلومات حول مسارات الاختبار، الرجاء مراجعة وثائق الاختبار.
يتم تشغيل اختبارات البناء الليلية يوميًا على AzureML.
نوع البناء | فرع | حالة | فرع | حالة | |
---|---|---|---|---|---|
وحدة المعالجة المركزية لينكس | رئيسي | التدريج | |||
وحدة معالجة الرسومات لينكس | رئيسي | التدريج | |||
لينكس سبارك | رئيسي | التدريج |