Surprise عبارة عن برنامج Python scikit لبناء وتحليل أنظمة التوصية التي تتعامل مع بيانات التصنيف الصريحة.
تم تصميم المفاجأة مع وضع الأغراض التالية في الاعتبار :
الاسم SurPRISE (تقريبًا :) ) يرمز إلى Simple Python RecommendatIon System Engine .
يرجى ملاحظة أن المفاجأة لا تدعم التقييمات الضمنية أو المعلومات المستندة إلى المحتوى.
فيما يلي مثال بسيط يوضح كيف يمكنك (تنزيل) تحميل مجموعة بيانات، وتقسيمها للتحقق من الصحة المتبادل بمقدار 5 أضعاف، وحساب MAE وRMSE لخوارزمية SVD.
from surprise import SVD
from surprise import Dataset
from surprise . model_selection import cross_validate
# Load the movielens-100k dataset (download it if needed).
data = Dataset . load_builtin ( 'ml-100k' )
# Use the famous SVD algorithm.
algo = SVD ()
# Run 5-fold cross-validation and print results.
cross_validate ( algo , data , measures = [ 'RMSE' , 'MAE' ], cv = 5 , verbose = True )
الإخراج :
Evaluating RMSE, MAE of algorithm SVD on 5 split(s).
Fold 1 Fold 2 Fold 3 Fold 4 Fold 5 Mean Std
RMSE (testset) 0.9367 0.9355 0.9378 0.9377 0.9300 0.9355 0.0029
MAE (testset) 0.7387 0.7371 0.7393 0.7397 0.7325 0.7375 0.0026
Fit time 0.62 0.63 0.63 0.65 0.63 0.63 0.01
Test time 0.11 0.11 0.14 0.14 0.14 0.13 0.02
مفاجأة يمكن أن تفعل أكثر من ذلك بكثير (على سبيل المثال، GridSearchCV)! ستجد المزيد من أمثلة الاستخدام في الوثائق.
فيما يلي متوسط RMSE وMAE وإجمالي وقت التنفيذ للخوارزميات المختلفة (مع معلماتها الافتراضية) في إجراء التحقق المتبادل بخمسة أضعاف. مجموعات البيانات هي مجموعات بيانات Movielens 100k و1M. الطيات هي نفسها بالنسبة لجميع الخوارزميات. يتم إجراء جميع التجارب على جهاز كمبيوتر محمول مزود بمعالج Intel i5 11th Gen 2.60 جيجا هرتز. يمكن العثور على رمز إنشاء هذه الجداول في المثال المعياري.
أفلام 100 ألف | RMSE | ماي | وقت |
---|---|---|---|
SVD | 0.934 | 0.737 | 0:00:06 |
SVD++ (cache_ ratings = خطأ) | 0.919 | 0.721 | 0:01:39 |
SVD++ (cache_ ratings = صحيح) | 0.919 | 0.721 | 0:01:22 |
نمف | 0.963 | 0.758 | 0:00:06 |
المنحدر واحد | 0.946 | 0.743 | 0:00:09 |
ك-ن.ن | 0.98 | 0.774 | 0:00:08 |
تتمحور ك-NN | 0.951 | 0.749 | 0:00:09 |
ك-NN خط الأساس | 0.931 | 0.733 | 0:00:13 |
التجميع المشترك | 0.963 | 0.753 | 0:00:06 |
خط الأساس | 0.944 | 0.748 | 0:00:02 |
عشوائي | 1.518 | 1.219 | 0:00:01 |
موفيلينس 1M | RMSE | ماي | وقت |
---|---|---|---|
SVD | 0.873 | 0.686 | 0:01:07 |
SVD++ (cache_ ratings = خطأ) | 0.862 | 0.672 | 0:41:06 |
SVD++ (cache_ ratings = صحيح) | 0.862 | 0.672 | 0:34:55 |
نمف | 0.916 | 0.723 | 0:01:39 |
المنحدر واحد | 0.907 | 0.715 | 0:02:31 |
ك-ن.ن | 0.923 | 0.727 | 0:05:27 |
تتمحور ك-NN | 0.929 | 0.738 | 0:05:43 |
ك-NN خط الأساس | 0.895 | 0.706 | 0:05:55 |
التجميع المشترك | 0.915 | 0.717 | 0:00:31 |
خط الأساس | 0.909 | 0.719 | 0:00:19 |
عشوائي | 1.504 | 1.206 | 0:00:19 |
باستخدام النقطة (ستحتاج إلى مترجم C. قد يفضل مستخدمو Windows استخدام conda):
$ pip install scikit-surprise
مع كوندا:
$ conda install -c conda-forge scikit-surprise
للحصول على أحدث إصدار، يمكنك أيضًا استنساخ الريبو وبناء المصدر (ستحتاج أولاً إلى Cython وnumpy):
$ git clone https://github.com/NicolasHug/surprise.git
$ cd surprise
$ pip install .
تم ترخيص هذا المشروع بموجب ترخيص BSD المكون من 3 فقرات، لذا يمكن استخدامه في كل شيء تقريبًا، بما في ذلك التطبيقات التجارية.
أود أن أعرف مدى فائدة المفاجأة بالنسبة لك. من فضلك لا تتردد في فتح قضية ووصف كيفية استخدامها!
يرجى التأكد من الاستشهاد بالمقالة إذا كنت تستخدم Surprise لبحثك:
@article{Hug2020,
doi = {10.21105/joss.02174},
url = {https://doi.org/10.21105/joss.02174},
year = {2020},
publisher = {The Open Journal},
volume = {5},
number = {52},
pages = {2174},
author = {Nicolas Hug},
title = {Surprise: A Python library for recommender systems},
journal = {Journal of Open Source Software}
}
الأشخاص التالية أسماؤهم ساهموا في المفاجأة:
أشتو، أبهيشيك بهاتيا، بوبي إن إف جي، كاوي، تشيه هان تشين، رافائيل دايان، أوليغ ديميدنكو، تشارلز إيمانويل دياس، دماميلين، لوريان دوكاس، مارك فيجر، فرانكجاي، لوكاس جالك، تيم جيتس، بيير فرانسوا جيمينيز، زاكاري جلاسمان، جيف هيل, نيكولا هوج، يانيك، جيساوتيلريكسون، دوروك كيليتشي أوغلو، رافي راجو كريشنا، لابيدشاي، هينجي ليو، رافي ماخيجا، ماهر ملاعب، مانوج كيه، جيمس ماكنيليس، ناتورال 0، نيو لوك، بيير لويس بيشو، جاي تشي، لوكاس ريبشر، كريج رودريغيز. ، سكاي وات، هرقل سميث، ديفيد ستيفنز، فيسنا تانكو، ترويستدور، فيكتور وانغ، مايك لي ويليامز، جاي وونغ، تشينشن شو، YaoZh1918.
شكرًا جزيلاً :) !
بدءًا من الإصدار 1.1.0 (سبتمبر 2019)، سأقوم فقط بصيانة الحزمة وتقديم إصلاحات للأخطاء، وربما تحسينات في الأداء في بعض الأحيان. لدي وقت أقل لتخصيصه لها الآن، لذلك أنا غير قادر على التفكير في الميزات الجديدة.
بالنسبة للأخطاء أو المشكلات أو الأسئلة حول Surprise، يرجى تجنب إرسال رسائل بريد إلكتروني إليّ؛ على الأغلب لن أتمكن من الإجابة). يرجى استخدام صفحة مشروع GitHub بدلاً من ذلك، حتى يتمكن الآخرون أيضًا من الاستفادة منها.