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 และเวลาดำเนินการทั้งหมดของอัลกอริธึมต่างๆ (พร้อมพารามิเตอร์เริ่มต้น) ในขั้นตอนการตรวจสอบข้าม 5 เท่า ชุดข้อมูลคือชุดข้อมูล Movielens 100k และ 1M การพับจะเหมือนกันสำหรับอัลกอริธึมทั้งหมด การทดลองทั้งหมดดำเนินการบนแล็ปท็อปที่ใช้ Intel i5 11th Gen 2.60GHz รหัสสำหรับการสร้างตารางเหล่านี้สามารถพบได้ในตัวอย่างการวัดประสิทธิภาพ
เลนส์มูฟวี่ 100k | RMSE | แม่ | เวลา |
---|---|---|---|
สว | 0.934 | 0.737 | 00:00:06 |
SVD++ (cache_ratings=เท็จ) | 0.919 | 0.721 | 0:01:39 |
SVD++ (แคช_เรตติ้ง=จริง) | 0.919 | 0.721 | 0:01:22 |
เอ็นเอ็มเอฟ | 0.963 | 0.758 | 00:00:06 |
สโลปวัน | 0.946 | 0.743 | 00:00:09 |
เค-เอ็นเอ็น | 0.98 | 0.774 | 00:00:08 |
ตั้งศูนย์กลาง k-NN | 0.951 | 0.749 | 00:00:09 |
พื้นฐาน k-NN | 0.931 | 0.733 | 00:00:13 |
การจัดกลุ่มร่วม | 0.963 | 0.753 | 00:00:06 |
พื้นฐาน | 0.944 | 0.748 | 00:00:02 |
สุ่ม | 1.518 | 1.219 | 00:00:01 |
เลนส์มูฟวี่ 1M | RMSE | แม่ | เวลา |
---|---|---|---|
สว | 0.873 | 0.686 | 0:01:07 |
SVD++ (cache_ratings=เท็จ) | 0.862 | 0.672 | 0:41:06 |
SVD++ (แคช_เรตติ้ง=จริง) | 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 |
ตั้งศูนย์กลาง k-NN | 0.929 | 0.738 | 0:05:43 |
พื้นฐาน k-NN | 0.895 | 0.706 | 0:05:55 |
การจัดกลุ่มร่วม | 0.915 | 0.717 | 00:00:31 |
พื้นฐาน | 0.909 | 0.719 | 00:00:19 |
สุ่ม | 1.504 | 1.206 | 00:00:19 |
ด้วย pip (คุณจะต้องมีคอมไพเลอร์ C ผู้ใช้ Windows อาจชอบใช้ conda):
$ pip install scikit-surprise
ด้วยคอนดา:
$ conda install -c conda-forge scikit-surprise
สำหรับเวอร์ชันล่าสุด คุณยังสามารถโคลน repo และสร้างแหล่งที่มาได้ (ก่อนอื่นคุณจะต้องมี Cython และ numpy):
$ git clone https://github.com/NicolasHug/surprise.git
$ cd surprise
$ pip install .
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต BSD 3-Clause ดังนั้นจึงสามารถใช้งานได้เกือบทุกอย่าง รวมถึงแอปพลิเคชันเชิงพาณิชย์
ฉันอยากรู้ว่า Surprise มีประโยชน์กับคุณอย่างไร โปรดอย่าลังเลที่จะเปิดประเด็นและอธิบายวิธีใช้งาน!
โปรดอย่าลืมอ้างอิงบทความนี้หากคุณใช้ 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}
}
บุคคลต่อไปนี้มีส่วนทำให้เซอร์ไพรส์:
แอชตู, อภิเษก บาเทีย, บ็อบบี้อินฟจ, เฉาอี้, เชียห์-ฮัน เฉิน, ราฟาเอล-ดายัน, Олег Демиденко, ชาร์ลส์-เอ็มมานูเอล ดิอาส, ดมามลิน, ลอเรียน ดูคาสส์, มาร์ค เฟเกอร์, ฟรังค์เจย์, ลูคัส กัลเค, ทิม เกตส์, ปิแอร์-ฟรองซัวส์ กิเมเนซ, แซคารี กลาสแมน, เจฟฟ์ เฮล, นิโคลัส ฮัก, ยานนิกส์, เจเยซอว์เทลล์ริกสัน, โดรุก คิลิตซิโอกลู, ราวี ราจู กฤษณะ, ลาพิดชาย, เฮงจี ลิว, ราวี มาฮิจา, มาเฮอร์ มาลาิบ, มาโนจ เค, เจมส์ แมคนีลิส, Naturale0, เอ็นจู-ลุค, ปิแอร์-หลุยส์ เปเชอซ์, เจย์ ชี, ลูคัส เรบส์เชอร์, เคร็ก โรดริเกซ, สกายวอท, เฮอร์คิวลิส สมิธ, เดวิด สตีเวนส์, เวสนา ทันโก, TrWestdoor, วิกเตอร์ หวาง, ไมค์ ลี วิลเลียมส์, เจย์ หว่อง, เฉินเฉิน ซู, เหยาจือ1918
ขอบคุณมาก :) !
ตั้งแต่เวอร์ชัน 1.1.0 (กันยายน 2019) เป็นต้นไป ฉันจะดูแลรักษาเฉพาะแพ็กเกจ จัดให้มีการแก้ไขจุดบกพร่อง และบางทีอาจมีการปรับปรุงให้สมบูรณ์แบบในบางครั้ง ตอนนี้ฉันมีเวลาน้อยลงในการทุ่มเทให้กับมัน ดังนั้นฉันจึงไม่สามารถพิจารณาคุณสมบัติใหม่ๆ ได้
สำหรับข้อบกพร่อง ปัญหา หรือคำถามเกี่ยวกับเซอร์ไพรส์ โปรดหลีกเลี่ยงการส่งอีเมลถึงฉัน ฉันคงไม่อาจตอบได้) โปรดใช้หน้าโครงการ GitHub แทน เพื่อให้ผู้อื่นได้รับประโยชน์จากหน้าดังกล่าวด้วย