0Pricing
Learn AI with Python · บทเรียน

การแยกตัวประกอบเมทริกซ์ด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกรองแบบร่วมมือ: อิงผู้ใช้และอิงรายการ
  2. การแยกตัวประกอบเมทริกซ์ด้วย SVD
  3. การกรองตามเนื้อหา
  4. ระบบผสมและตัวชี้วัดการประเมิน
← กลับไปที่ Learn AI with Python