เรามีผู้แนะนำรุ่นใหม่ 1.2.0!
การเปลี่ยนแปลงมากมายนับตั้งแต่การเปิดตัวครั้งล่าสุดของเรา เรามีการทดสอบเต็มรูปแบบบน Python 3.8 ถึง 3.11 (ประมาณ 1,800 การทดสอบ) อัปเกรดประสิทธิภาพในอัลกอริทึมจำนวนมาก สมุดบันทึกที่ได้รับการตรวจสอบ และการปรับปรุงอื่นๆ อีกมากมาย
ผู้แนะนำมีวัตถุประสงค์เพื่อช่วยเหลือนักวิจัย นักพัฒนา และผู้ที่ชื่นชอบในการสร้างต้นแบบ การทดลอง และการนำระบบการแนะนำแบบคลาสสิกและล้ำสมัยมาสู่การผลิต
ผู้แนะนำเป็นโครงการภายใต้ Linux Foundation of AI and Data
พื้นที่เก็บข้อมูลนี้ประกอบด้วยตัวอย่างและแนวปฏิบัติที่ดีที่สุดสำหรับการสร้างระบบคำแนะนำซึ่งมีให้เป็นสมุดบันทึก 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]
: จำเป็นสำหรับการพัฒนาสำหรับ repo[all]
: [gpu]
| [spark]
| [dev]
[experimental]
: รุ่นที่ไม่ได้ทดสอบอย่างละเอียดและ/หรืออาจต้องมีขั้นตอนเพิ่มเติมในการติดตั้ง ตารางด้านล่างแสดงรายการอัลกอริธึมการแนะนำที่มีอยู่ในพื้นที่เก็บข้อมูลในปัจจุบัน สมุดบันทึกจะถูกเชื่อมโยงภายใต้คอลัมน์ตัวอย่างเป็นการเริ่มต้นอย่างรวดเร็ว ซึ่งแสดงตัวอย่างของอัลกอริทึมที่ใช้งานง่าย หรือเป็นการเจาะลึก ซึ่งอธิบายรายละเอียดเกี่ยวกับคณิตศาสตร์และการนำอัลกอริทึมไปใช้
อัลกอริทึม | พิมพ์ | คำอธิบาย | ตัวอย่าง |
---|---|---|---|
กำลังสองน้อยที่สุดสลับกัน (ALS) | การกรองการทำงานร่วมกัน | อัลกอริธึมการแยกตัวประกอบแบบเมทริกซ์สำหรับการตอบรับที่ชัดเจนหรือโดยนัยในชุดข้อมูลขนาดใหญ่ ปรับให้เหมาะสมสำหรับความสามารถในการปรับขนาดและความสามารถในการคำนวณแบบกระจาย มันทำงานในสภาพแวดล้อม PySpark | เริ่มต้นอย่างรวดเร็ว / ดำน้ำลึก |
การสลายตัวของค่าเอกพจน์แบบอะซิงโครนัสที่ตั้งใจ (A2SVD) * | การกรองการทำงานร่วมกัน | อัลกอริธึมตามลำดับที่มีจุดมุ่งหมายเพื่อบันทึกการตั้งค่าของผู้ใช้ทั้งระยะยาวและระยะสั้นโดยใช้กลไกความสนใจ มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
อันดับส่วนบุคคลของ Cornac/Bayesian (BPR) | การกรองการทำงานร่วมกัน | อัลกอริธึมการแยกตัวประกอบเมทริกซ์สำหรับการทำนายการจัดอันดับรายการพร้อมผลตอบรับโดยนัย มันทำงานในสภาพแวดล้อมของ CPU | ดำน้ำลึก |
ตัวเข้ารหัสอัตโนมัติแบบแปรผัน Cornac/ทวิภาคี (BiVAE) | การกรองการทำงานร่วมกัน | โมเดลกำเนิดสำหรับข้อมูลไดอะดิก (เช่น การโต้ตอบระหว่างผู้ใช้กับไอเท็ม) มันทำงานในสภาพแวดล้อม CPU / GPU | ดำน้ำลึก |
คำแนะนำการฝังลำดับแบบ Convolutional (ตัวพิมพ์) | การกรองการทำงานร่วมกัน | อัลกอริทึมที่อิงจากการโน้มน้าวใจที่มีจุดมุ่งหมายเพื่อจับทั้งการตั้งค่าทั่วไปของผู้ใช้และรูปแบบตามลำดับ มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
เครือข่ายการรับรู้ความรู้เชิงลึก (DKN) * | การกรองตามเนื้อหา | อัลกอริทึมการเรียนรู้เชิงลึกที่รวมกราฟความรู้และการฝังบทความไว้เพื่อให้คำแนะนำข่าวสารหรือบทความ มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว / ดำน้ำลึก |
เครื่องแยกตัวประกอบแบบลึกมาก (xDeepFM) * | การกรองการทำงานร่วมกัน | อัลกอริธึมการเรียนรู้เชิงลึกสำหรับการตอบรับโดยนัยและชัดเจนพร้อมฟีเจอร์ผู้ใช้/ไอเท็ม มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
FastAI การฝัง Dot Bias (FAST) | การกรองการทำงานร่วมกัน | อัลกอริธึมวัตถุประสงค์ทั่วไปที่มีการฝังและอคติสำหรับผู้ใช้และรายการ มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
LightFM/เครื่องแยกตัวประกอบ | การกรองการทำงานร่วมกัน | อัลกอริทึมเครื่องแยกตัวประกอบสำหรับการตอบกลับทั้งโดยนัยและชัดเจน มันทำงานในสภาพแวดล้อมของ CPU | เริ่มต้นอย่างรวดเร็ว |
ทรีเร่ง LightGBM/การไล่ระดับสี * | การกรองตามเนื้อหา | อัลกอริธึม Gradient Boosting Tree สำหรับการฝึกที่รวดเร็วและการใช้หน่วยความจำเหลือน้อยในปัญหาตามเนื้อหา มันทำงานในสภาพแวดล้อม CPU / GPU / PySpark | เริ่มต้นอย่างรวดเร็วใน CPU / เจาะลึกใน PySpark |
LightGCN | การกรองการทำงานร่วมกัน | อัลกอริทึมการเรียนรู้เชิงลึกซึ่งทำให้การออกแบบ GCN ง่ายขึ้นสำหรับการทำนายผลตอบรับโดยนัย มันทำงานในสภาพแวดล้อม CPU / GPU | ดำน้ำลึก |
จีโอไอเอ็มซี * | การกรองการทำงานร่วมกัน | อัลกอริธึมการเติมเมทริกซ์ให้สมบูรณ์ซึ่งคำนึงถึงผู้ใช้และคุณลักษณะของรายการโดยใช้การปรับการไล่ระดับสีคอนจูเกตของ Riemannian และปฏิบัติตามแนวทางทางเรขาคณิต มันทำงานในสภาพแวดล้อมของ CPU | เริ่มต้นอย่างรวดเร็ว |
กรู | การกรองการทำงานร่วมกัน | อัลกอริธึมแบบเรียงลำดับซึ่งมีจุดมุ่งหมายเพื่อบันทึกการตั้งค่าของผู้ใช้ทั้งระยะยาวและระยะสั้นโดยใช้โครงข่ายประสาทที่เกิดซ้ำ มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
VAE พหุนาม | การกรองการทำงานร่วมกัน | แบบจำลองเชิงกำเนิดสำหรับการทำนายการโต้ตอบของผู้ใช้/รายการ มันทำงานในสภาพแวดล้อม CPU / GPU | ดำน้ำลึก |
คำแนะนำทางระบบประสาทพร้อมการนำเสนอผู้ใช้ระยะยาวและระยะสั้น (LSTUR) * | การกรองตามเนื้อหา | อัลกอริธึมการแนะนำระบบประสาทสำหรับการแนะนำบทความข่าวด้วยการสร้างแบบจำลองความสนใจของผู้ใช้ระยะยาวและระยะสั้น มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
การแนะนำทางประสาทด้วยการเรียนรู้หลายมุมมองอย่างตั้งใจ (NAML) * | การกรองตามเนื้อหา | อัลกอริธึมการแนะนำระบบประสาทสำหรับการแนะนำบทความข่าวด้วยการเรียนรู้หลายมุมมองอย่างเอาใจใส่ มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
การกรองการทำงานร่วมกันของระบบประสาท (NCF) | การกรองการทำงานร่วมกัน | อัลกอริธึมการเรียนรู้เชิงลึกพร้อมประสิทธิภาพที่ได้รับการปรับปรุงสำหรับการตอบรับโดยนัยของผู้ใช้/รายการ มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว / ดำน้ำลึก |
การแนะนำระบบประสาทพร้อมความสนใจเฉพาะบุคคล (NPA) * | การกรองตามเนื้อหา | อัลกอริธึมการแนะนำระบบประสาทสำหรับการแนะนำบทความข่าวด้วยเครือข่ายความสนใจส่วนบุคคล มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
การแนะนำระบบประสาทด้วยการเอาใจใส่ตนเองแบบหลายศีรษะ (NRMS) * | การกรองตามเนื้อหา | อัลกอริธึมการแนะนำระบบประสาทสำหรับการแนะนำบทความข่าวที่มีการเอาใจใส่ตนเองหลายหัว มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
คำแนะนำรายการถัดไป (NextItNet) | การกรองการทำงานร่วมกัน | อัลกอริทึมที่อิงจากการบิดขยายและเครือข่ายที่เหลือซึ่งมีจุดมุ่งหมายเพื่อจับรูปแบบตามลำดับ โดยจะพิจารณาทั้งการโต้ตอบและฟีเจอร์ของผู้ใช้/สินค้า มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
เครื่องจักร Boltzmann แบบจำกัด (RBM) | การกรองการทำงานร่วมกัน | อัลกอริธึมที่ใช้โครงข่ายประสาทเทียมสำหรับการเรียนรู้การกระจายความน่าจะเป็นพื้นฐานสำหรับความคิดเห็นของผู้ใช้/รายการทั้งโดยชัดแจ้งหรือโดยปริยาย มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว / ดำน้ำลึก |
การสำเร็จเมทริกซ์ระดับต่ำของ Riemannian (RLRMC) * | การกรองการทำงานร่วมกัน | อัลกอริธึมการแยกตัวประกอบเมทริกซ์โดยใช้การเพิ่มประสิทธิภาพการไล่ระดับสีคอนจูเกตของ Riemannian ด้วยการใช้หน่วยความจำน้อยเพื่อทำนายการโต้ตอบของผู้ใช้/รายการ มันทำงานในสภาพแวดล้อมของ CPU | เริ่มต้นอย่างรวดเร็ว |
อัลกอริทึมอย่างง่ายสำหรับการแนะนำ (SAR) * | การกรองการทำงานร่วมกัน | อัลกอริธึมที่อิงความคล้ายคลึงกันสำหรับความคิดเห็นโดยนัยของผู้ใช้/รายการ มันทำงานในสภาพแวดล้อมของ CPU | เริ่มต้นอย่างรวดเร็ว / ดำน้ำลึก |
คำแนะนำตามลำดับการเอาใจใส่ตนเอง (SASRec) | การกรองการทำงานร่วมกัน | อัลกอริธึมที่ใช้หม้อแปลงไฟฟ้าสำหรับการแนะนำตามลำดับ มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
ผู้แนะนำแบบบูรณาการการตั้งค่าระยะสั้นและระยะยาว (SLi-Rec) * | การกรองการทำงานร่วมกัน | อัลกอริธึมตามลำดับที่มีจุดมุ่งหมายเพื่อจับการตั้งค่าของผู้ใช้ทั้งระยะยาวและระยะสั้นโดยใช้กลไกความสนใจ ตัวควบคุมที่รับรู้เวลา และตัวควบคุมที่รับรู้เนื้อหา มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
การสร้างแบบจำลองผู้ใช้ตามลำดับการรับรู้หลายความสนใจ (SUM) * | การกรองการทำงานร่วมกัน | โมเดลผู้ใช้ตามลำดับเครือข่ายหน่วยความจำที่ได้รับการปรับปรุง ซึ่งมีจุดมุ่งหมายเพื่อดึงดูดความสนใจที่หลากหลายของผู้ใช้ มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
การแนะนำตามลำดับผ่านหม้อแปลงส่วนบุคคล (SSEPT) | การกรองการทำงานร่วมกัน | อัลกอริธึมที่ใช้หม้อแปลงสำหรับการแนะนำตามลำดับพร้อมการฝังผู้ใช้ มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
วีเออีมาตรฐาน | การกรองการทำงานร่วมกัน | โมเดลกำเนิดสำหรับการทำนายการโต้ตอบของผู้ใช้/รายการ มันทำงานในสภาพแวดล้อม CPU / GPU | ดำน้ำลึก |
การสลายตัวของค่าเซอร์ไพรส์/ค่าเอกพจน์ (SVD) | การกรองการทำงานร่วมกัน | อัลกอริธึมการแยกตัวประกอบเมทริกซ์สำหรับการทำนายผลตอบรับการให้คะแนนที่ชัดเจนในชุดข้อมูลขนาดเล็ก มันทำงานในสภาพแวดล้อม CPU / GPU | ดำน้ำลึก |
ความถี่ภาคเรียน - ความถี่เอกสารผกผัน (TF-IDF) | การกรองตามเนื้อหา | อัลกอริธึมตามความคล้ายคลึงอย่างง่ายสำหรับคำแนะนำตามเนื้อหาพร้อมชุดข้อมูลข้อความ มันทำงานในสภาพแวดล้อมของ CPU | เริ่มต้นอย่างรวดเร็ว |
โวปาล วาบบิท (VW) * | การกรองตามเนื้อหา | อัลกอริธึมการเรียนรู้ออนไลน์ที่รวดเร็ว เหมาะสำหรับสถานการณ์ที่ฟีเจอร์/บริบทของผู้ใช้เปลี่ยนแปลงอยู่ตลอดเวลา ใช้ CPU ในการเรียนรู้ออนไลน์ | ดำน้ำลึก |
กว้างและลึก | การกรองการทำงานร่วมกัน | อัลกอริธึมการเรียนรู้เชิงลึกที่สามารถจดจำการโต้ตอบของฟีเจอร์และสรุปฟีเจอร์ของผู้ใช้ มันทำงานในสภาพแวดล้อม CPU / GPU | เริ่มต้นอย่างรวดเร็ว |
xLearn/เครื่องแยกตัวประกอบ (FM) และ Field-Aware FM (FFM) | การกรองการทำงานร่วมกัน | อัลกอริธึมที่รวดเร็วและมีประสิทธิภาพในการทำนายฉลากด้วยคุณสมบัติผู้ใช้/รายการ มันทำงานในสภาพแวดล้อม CPU / GPU | ดำน้ำลึก |
หมายเหตุ : * หมายถึงอัลกอริทึมที่คิดค้น/สนับสนุนโดย Microsoft
อัลกอริธึมและยูทิลิตีอิสระหรือแบบบ่มเพาะเป็นตัวเลือกสำหรับโฟลเดอร์ contrib สิ่งนี้จะรวบรวมการสนับสนุนที่อาจไม่สามารถใส่ลงในที่เก็บหลักได้อย่างง่ายดาย หรือต้องใช้เวลาในการปรับโครงสร้างใหม่หรือทำให้โค้ดสมบูรณ์และเพิ่มการทดสอบที่จำเป็น
อัลกอริทึม | พิมพ์ | คำอธิบาย | ตัวอย่าง |
---|---|---|---|
ซาร์พลัส * | การกรองการทำงานร่วมกัน | เพิ่มประสิทธิภาพการใช้งาน SAR สำหรับ Spark | เริ่มต้นอย่างรวดเร็ว |
เรามีสมุดบันทึกการวัดประสิทธิภาพเพื่อแสดงให้เห็นว่าอัลกอริทึมต่างๆ สามารถประเมินและเปรียบเทียบได้อย่างไร ในสมุดบันทึกนี้ ชุดข้อมูล MovieLens จะถูกแบ่งออกเป็นชุดการฝึก/การทดสอบที่อัตราส่วน 75/25 โดยใช้การแยกแบบแบ่งชั้น โมเดลคำแนะนำได้รับการฝึกอบรมโดยใช้อัลกอริธึมการกรองการทำงานร่วมกันแต่ละรายการด้านล่าง เราใช้ค่าพารามิเตอร์เชิงประจักษ์ที่รายงานในวรรณกรรมที่นี่ สำหรับการวัดการจัดอันดับ เราใช้ k=10
(รายการแนะนำ 10 อันดับแรก) เราทำการเปรียบเทียบบน Azure DSVM มาตรฐาน NC6s_v2 (6 vCPU, หน่วยความจำ 112 GB และ 1 P100 GPU) Spark ALS ทำงานในโหมดสแตนด์อโลนในเครื่อง ในตารางนี้ เราแสดงผลลัพธ์บน Movielens 100k ซึ่งใช้อัลกอริธึมเป็นเวลา 15 ยุค
อัลโก | แผนที่ | nDCG@k | พรีซิชั่น@เค | เรียกคืน@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 |
สว | 0.012873 | 0.095930 | 0.091198 | 0.032783 | 0.938681 | 0.742690 | 0.291967 | 0.291971 |
โครงการนี้ยินดีรับการสนับสนุนและข้อเสนอแนะ ก่อนบริจาค โปรดดูหลักเกณฑ์การบริจาคของเรา
โครงการนี้ปฏิบัติตามหลักจรรยาบรรณนี้เพื่อส่งเสริมชุมชนที่เป็นมิตรและสร้างแรงบันดาลใจสำหรับทุกคน
การทดสอบเหล่านี้เป็นการสร้างทุกคืน ซึ่งคำนวณการทดสอบแบบอะซิงโครนัส main
คือสาขาหลักของเรา และ staging
คือสาขาการพัฒนาของเรา เราใช้ pytest เพื่อทดสอบยูทิลิตี้หลามในตัวแนะนำและตัวดำเนินการสมุดบันทึกผู้แนะนำสำหรับโน้ตบุ๊ก
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไปป์ไลน์การทดสอบ โปรดดูเอกสารประกอบการทดสอบ
การทดสอบบิลด์ทุกคืนจะดำเนินการทุกวันบน AzureML
ประเภทการสร้าง | สาขา | สถานะ | สาขา | สถานะ | |
---|---|---|---|---|---|
ซีพียูลินุกซ์ | หลัก | การแสดงละคร | |||
ลินุกซ์ GPU | หลัก | การแสดงละคร | |||
ลินุกซ์ สปาร์ค | หลัก | การแสดงละคร |