การแยกตัวประกอบเมทริกซ์

การแยกตัวประกอบเมทริกซ์เป็นโมเดลการฝังแบบง่ายๆ เนื่องจาก เมทริกซ์ความคิดเห็น A Rm×nโดยที่ m คือ จำนวนผู้ใช้ (หรือคำค้นหา) และ n คือจำนวนรายการ โมเดลจะเรียนรู้ว่า

  • ผู้ใช้ฝังเมทริกซ์ URm×d ที่แถว i คือการฝังสำหรับผู้ใช้ i
  • เมทริกซ์ที่ฝังรายการ VRn×d โดยที่แถว j คือการฝังสำหรับรายการ j

ภาพการแยกตัวประกอบเมทริกซ์โดยใช้ตัวอย่างภาพยนตร์ที่เกิดซ้ำ

ระบบจะเรียนรู้การฝังเพื่อให้ผลิตภัณฑ์ UVT เป็น การประมาณที่ดีของเมทริกซ์ความคิดเห็น A สังเกตว่า (i,j) รายการ U.VT ก็คือผลิตภัณฑ์แบบจุด Ui,Vj ของการฝังของผู้ใช้ i และรายการที่ต้องการ jซึ่งต้องอยู่ใกล้กับ Ai,j

เลือกฟังก์ชันวัตถุประสงค์

ฟังก์ชันวัตถุประสงค์ทั่วไปฟังก์ชันหนึ่งคือระยะทางยกกำลัง 2 วิธีการคือ ลดผลรวมของข้อผิดพลาดยกกำลังสองของรายการที่สังเกตได้ทุกคู่:

minURm×d, VRn×d(i,j)obs(AijUi,Vj)2.

ในฟังก์ชันวัตถุประสงค์นี้ คุณจะรวมได้เฉพาะคู่ที่สังเกตการณ์ (i, j) นั่นคือ มากกว่าค่าที่ไม่ใช่ 0 ในเมทริกซ์ความคิดเห็น อย่างไรก็ตาม การสรุปเพียงอย่างเดียว สำหรับค่าหนึ่งๆ ไม่ใช่แนวคิดที่ดี เมทริกซ์ของทุกค่าจะมี การสูญเสียน้อยที่สุดและสร้างโมเดลที่ไม่สามารถให้คำแนะนำที่มีประสิทธิภาพ และเป็นภาพรวมที่ไม่ดี

ภาพประกอบของ 3 เมทริกซ์: สังเกตเฉพาะการแยกตัวประกอบเมทริกซ์ การแยกตัวประกอบแบบถ่วงน้ำหนัก และการแยกส่วนค่าเอกพจน์

บางทีคุณอาจปฏิบัติต่อค่าที่ตรวจไม่พบว่าเป็น 0 และรวมทั้งหมด รายการในเมทริกซ์ ซึ่งสอดคล้องกับการลดขนาด โฟรเบเนียสยกกำลังสอง ระยะห่างระหว่าง A ถึงค่าประมาณ UVT:

minURm×d, VRn×dAUVTF2.

คุณสามารถแก้โจทย์กำลังสองนี้ผ่าน การแยกค่าเดี่ยวๆ (SVD) ของเมทริกซ์ อย่างไรก็ตาม SVD ไม่ใช่โซลูชันที่ดีเช่นกัน เพราะในการใช้งานจริง เมทริกซ์ A อาจมีปริมาณน้อย ตัวอย่างเช่น ลองนึกถึงวิดีโอทั้งหมด บน YouTube เทียบกับวิดีโอทั้งหมดที่ผู้ใช้รายหนึ่งเคยดู ผลเฉลย UVT (ซึ่งสอดคล้องกับค่าประมาณของโมเดล ของเมทริกซ์อินพุต) ก็น่าจะอยู่ใกล้ 0 และนำไปสู่ การเพิ่มประสิทธิภาพโดยรวม

ในทางตรงกันข้าม การใช้แฟกเตอร์เมทริกซ์แบบถ่วงน้ำหนักจะแยกวัตถุประสงค์ ให้เป็นผลรวม 2 รายการต่อไปนี้

  • ผลรวมของรายการที่สังเกตได้
  • ผลรวมของรายการที่ตรวจไม่พบ (นับเป็น 0)

minURm×d, VRn×d(i,j)obs(AijUi,Vj)2+w0(i,j)obs(Ui,Vj)2.

ในที่นี้ w0 คือไฮเปอร์พารามิเตอร์ที่ถ่วงน้ำหนักคำทั้งสอง เพื่อให้วัตถุประสงค์ไม่ถูกควบคุมโดยฝ่ายใดฝ่ายหนึ่ง การปรับแต่งไฮเปอร์พารามิเตอร์นี้สำคัญมาก

(i,j)obswi,j(Ai,jUi,Vj)2+w0i,jobsUi,Vj2

โดยที่ wi,j คือฟังก์ชันของความถี่ของคำค้นหา i และรายการ j

ลดฟังก์ชันของวัตถุประสงค์ให้เหลือน้อยที่สุด

อัลกอริทึมทั่วไปที่ใช้ลดฟังก์ชันของวัตถุประสงค์ให้น้อยที่สุดมีดังนี้

  • การไล่ระดับสีแบบสโตแคติก (SGD) เป็นวิธีทั่วไปในการลดฟังก์ชันการสูญเสียข้อมูล

  • สี่เหลี่ยมจัตุรัสน้อยที่สุดแบบสลับแบบถ่วงน้ำหนัก (WALS) เหมาะสำหรับการตั้งค่านี้ วัตถุประสงค์ที่เฉพาะเจาะจง

วัตถุประสงค์คือกำลังสองในสองเมทริกซ์ U และ V (โปรดทราบว่า แต่ปัญหาจะไม่นูนขึ้นมาพร้อมกัน) WALS ทำงานโดยการเริ่มต้น ระบบจะฝังแบบสุ่ม จากนั้นจะสลับสับเปลี่ยนระหว่าง

  • กำลังแก้ไข U และแก้ปัญหาสำหรับ V
  • กำลังแก้ไข V และแก้ปัญหาสำหรับ U

แต่ละขั้นตอนสามารถแก้ได้อย่างแม่นยำ (ผ่านทางคำตอบของระบบเชิงเส้น) และสามารถ ที่จะนำไปเผยแพร่ เรารับประกันว่าเทคนิคนี้จะบรรจบกันเพราะแต่ละขั้นตอน สามารถลดการสูญเสียได้

SGD กับ WALS

SGD และ WALS มีข้อดีและข้อเสีย ตรวจสอบข้อมูลด้านล่างเพื่อดูการเปรียบเทียบ

SGD

ยืดหยุ่นมาก อาจใช้การสูญเสียอื่นๆ ได้ ฟังก์ชัน

โหลดพร้อมกันได้

ช้าลง - ไม่บรรจบกันเร็ว

ยากต่อการจัดการรายการที่ระบุไม่ได้ (ต้องการ เพื่อใช้การสุ่มตัวอย่างเชิงลบหรือแรงโน้มถ่วง)

WALS

ใช้ใน Loss Squares เท่านั้น

โหลดพร้อมกันได้

ผสานรวมเร็วกว่า SGD

จัดการรายการที่มองไม่เห็นได้ง่ายขึ้น