การแยกตัวประกอบเมทริกซ์ด้วย SVD
เมทริกซ์ผู้ใช้–รายการ การแยกตัวประกอบ SVD ปัจจัยแฝง และการใช้งานไลบรารี Surprise
การแยกตัวประกอบเมทริกซ์ด้วย SVD เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงใช้การแยกตัวประกอบเมทริกซ์
เมทริกซ์ผู้ใช้-รายการมีขนาดใหญ่และส่วนใหญ่ว่างเปล่า การแยกตัวประกอบเมทริกซ์จะบีบอัดเมทริกซ์นี้ให้เป็นเมทริกซ์ขนาดเล็กสองชุดที่ประกอบด้วยปัจจัยแฝง ชุดหนึ่งสำหรับผู้ใช้และอีกชุดหนึ่งสำหรับรายการ เมื่อนำมาคูณกันจะสร้างคะแนนเดิมขึ้นมาใหม่และเติมคะแนนที่ขาดหายไป วิธีนี้รองรับข้อมูลเบาบางได้ดีกว่าวิธีที่อาศัยผู้ใช้ข้างเคียงอย่างมาก
แนวคิดเบื้องต้นของปัจจัยแฝง
ผู้ใช้และรายการแต่ละรายการจะถูกอธิบายด้วยเวกเตอร์สั้น ๆ ของคุณลักษณะที่ซ่อนอยู่ เช่น ความเป็นภาพยนตร์แอ็กชันหรือความเป็นภาพยนตร์ตลก เวกเตอร์คะแนนที่คาดการณ์คือ ผลคูณเชิงจุดของเวกเตอร์ผู้ใช้กับเวกเตอร์รายการ ซึ่งเรียนรู้จากข้อมูลเพียงอย่างเดียว
SVD ในระบบแนะนำ
แบบจำลองรูปแบบ SVDเรียนรู้ปัจจัยเหล่านี้โดยลดความคลาดเคลื่อนของการคาดการณ์จากคะแนนที่ทราบให้ต่ำที่สุด พร้อมใช้การทำให้เป็นระเบียบ ไลบรารีเซอร์ไพรส์มี SVD ที่พร้อมใช้งานและปรับให้เหมาะกับระบบแนะนำ ซึ่งได้รับความนิยมจากการแข่งขัน Netflix Prize
ไลบรารีเซอร์ไพรส์
นำเข้าส่วนประกอบที่ต้องใช้ ได้แก่ อัลกอริทึม ตัวห่อหุ้มชุดข้อมูล และตัวอ่านที่อธิบายรูปแบบข้อมูลของคุณ
from surprise import SVD, Dataset, Reader
from surprise.model_selection import cross_validateตัวอ่านและมาตราส่วนการให้คะแนน
ตัวอ่านจะแจ้งช่วงคะแนนที่ใช้ได้ให้ไลบรารีเซอร์ไพรส์ผ่าน มาตราส่วนการให้คะแนน ควรกำหนดให้ตรงกับข้อมูลของคุณ เช่น ดาว 1 ถึง 5 ดวง มิฉะนั้นการคาดการณ์จะไม่ได้รับการปรับเทียบอย่างถูกต้อง
reader = Reader(rating_scale=(1, 5))การโหลด DataFrame
โหลด DataFrame ที่มีสามคอลัมน์ตามลำดับที่กำหนดเท่านั้น ได้แก่ ผู้ใช้ รายการ และคะแนน
data = Dataset.load_from_df(
df[["user_id", "item_id", "rating"]],
reader
)การตรวจสอบไขว้
cross_validate ประเมินแบบจำลองผ่านการแบ่งข้อมูลหลายส่วน และรายงานตัวชี้วัดความคลาดเคลื่อน เพื่อให้คุณประเมินความแม่นยำกับข้อมูลที่กันไว้อย่างเป็นธรรม
results = cross_validate(
SVD(), data,
measures=["RMSE", "MAE"],
cv=5,
verbose=True
)RMSE และ MAE
- RMSE (รากที่สองของความคลาดเคลื่อนกำลังสองเฉลี่ย) ลงโทษความคลาดเคลื่อนขนาดใหญ่อย่างมาก
- MAE (ความคลาดเคลื่อนสัมบูรณ์เฉลี่ย) คือค่าความคลาดเคลื่อนสัมบูรณ์โดยเฉลี่ย จึงตีความได้ง่ายกว่า
ค่าที่ต่ำกว่าดีกว่าสำหรับทั้งสองตัวชี้วัด โดย RMSE เป็นตัวชี้วัดหลักมาตรฐานสำหรับการคาดการณ์คะแนน
การฝึกด้วยชุดข้อมูลทั้งหมด
หลังจากตรวจสอบความถูกต้องแล้ว ให้ฝึกแบบจำลองด้วยชุดข้อมูลทั้งหมดก่อนนำไปให้บริการการคาดการณ์
trainset = data.build_full_trainset()
algo = SVD()
algo.fit(trainset)การสร้างการคาดการณ์
algo.predict(uid, iid) ส่งคืนออบเจ็กต์การคาดการณ์ โดยฟิลด์ .est คือคะแนนโดยประมาณสำหรับคู่ผู้ใช้-รายการนั้น
pred = algo.predict(uid="user_42", iid="item_99")
print(pred.est) # estimated ratingการปรับแต่งพารามิเตอร์ไฮเปอร์พารามิเตอร์
พารามิเตอร์สำคัญของ SVD ได้แก่ n_factors (มิติของปัจจัยแฝง), n_epochs, lr_all (อัตราการเรียนรู้) และ reg_all (การทำให้เป็นระเบียบ) ใช้ GridSearchCV เพื่อค้นหาชุดค่าที่ดีที่สุดโดยพิจารณาจาก RMSE
from surprise.model_selection import GridSearchCV
grid = {"n_factors": [50, 100], "reg_all": [0.02, 0.1]}
gs = GridSearchCV(SVD, grid, measures=["rmse"], cv=3)
gs.fit(data)
print(gs.best_params["rmse"])ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับการแยกตัวประกอบเมทริกซ์ของคุณ
สรุปทบทวน
คุณได้เรียนรู้ การแยกตัวประกอบเมทริกซ์ผ่าน SVD ซึ่งสร้างเวกเตอร์ผู้ใช้และรายการที่เป็นปัจจัยแฝง และใช้ผลคูณเชิงจุดเพื่อคาดการณ์คะแนน ด้วยไลบรารีเซอร์ไพรส์ คุณได้กำหนด มาตราส่วนการให้คะแนน โหลดข้อมูล เรียกใช้ cross_validate พร้อม RMSE/MAE ใช้ fit และเรียก algo.predict(uid, iid) บทถัดไปคือการกรองแบบอิงเนื้อหา
คำถามที่พบบ่อย
บทเรียน “การแยกตัวประกอบเมทริกซ์ด้วย SVD” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การแยกตัวประกอบเมทริกซ์ด้วย SVD” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การแยกตัวประกอบเมทริกซ์ด้วย SVD”
เมทริกซ์ผู้ใช้–รายการ การแยกตัวประกอบ SVD ปัจจัยแฝง และการใช้งานไลบรารี Surprise คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การแยกตัวประกอบเมทริกซ์ด้วย SVD” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การกรองแบบร่วมมือ: อิงผู้ใช้และอิงรายการ
- การแยกตัวประกอบเมทริกซ์ด้วย SVD
- การกรองตามเนื้อหา
- ระบบผสมและตัวชี้วัดการประเมิน