ระบบการแนะนำเป็นหนึ่งในแอปพลิเคชัน Machine Learning ที่ประสบความสำเร็จและน่าทึ่งที่สุด ไซต์ต่างๆ เช่น Netflix, YouTube, Yelp ใช้เพื่อแนะนำภาพยนตร์ วิดีโอ หรือบริการที่เราอาจชอบ ความต้องการทางธุรกิจและผลิตภัณฑ์ที่แตกต่างกันทำให้เกิดอัลกอริธึมที่หลากหลายซึ่งสามารถใช้สำหรับระบบผู้แนะนำได้ มีการใช้อย่างแพร่หลายในการสตรีมวิดีโอ การสตรีมเพลง หรือแอปพลิเคชันขายปลีก ทำให้ระบบการแนะนำเป็นสิ่งที่ผู้สนใจด้านวิทยาศาสตร์ข้อมูลต้องรู้

โดยทั่วไป ระบบผู้แนะนำจะสร้างรายการคำแนะนำผ่าน การกรองร่วมกันหรือผ่านการกรองตามเนื้อหา ผู้แนะนำสมัยใหม่ผสมผสานทั้งสองแนวทางเข้าด้วยกัน วิธีการกรองร่วมกันจะขึ้นอยู่กับความคล้ายคลึงกันจากการโต้ตอบของผู้ใช้ และวิธีการกรองตามเนื้อหาจะคำนวณความคล้ายคลึงกันของคุณลักษณะของรายการ ในบทความนี้ เราจะเน้นที่การทำความเข้าใจ การแยกตัวประกอบเมทริกซ์ ซึ่งเป็นโซลูชันการกรองร่วมกันสำหรับคำแนะนำ โดยใช้ตัวอย่างง่ายๆ

ในส่วนที่เหลือของบทความ เราจะแนะนำงานการแนะนำ อภิปรายสั้น ๆ เกี่ยวกับเทคนิคการกรองร่วมกันสำหรับระบบผู้แนะนำ และอธิบายการแยกตัวประกอบเมทริกซ์โดยละเอียด

งานแนะนำ

เรามีชุดผู้ใช้ Uและชุดของรายการ I เป้าหมายคือการแนะนำรายการจาก ฉัน ให้กับผู้ใช้ตามความต้องการของพวกเขา เพื่อแก้ปัญหานี้ เราต้องเรียนรู้ฟังก์ชันจากข้อมูลในอดีตที่คาดการณ์ว่าแต่ละรายการ i∈I จะเป็นคำแนะนำที่เหมาะสมสำหรับผู้ใช้ u ∈U.

การกรองการทำงานร่วมกัน

วิธีการกรองร่วมกันนั้นขึ้นอยู่กับการรวบรวมและวิเคราะห์ข้อมูลจำนวนมากเกี่ยวกับพฤติกรรม กิจกรรม หรือการตั้งค่าของผู้ใช้ และคาดการณ์ว่าผู้ใช้จะชอบอะไรโดยพิจารณาจากความคล้ายคลึงกับผู้ใช้รายอื่น

สมมติฐานพื้นฐานเบื้องหลังเทคนิคการกรองร่วมกันคือการตั้งค่าผู้ใช้ที่คล้ายคลึงกันเหนือรายการต่างๆ สามารถนำไปใช้ประโยชน์เพื่อแนะนำรายการเหล่านั้นให้กับผู้ใช้ที่ไม่เคยเห็นหรือใช้งานมาก่อน พูดง่ายๆ ก็คือ เราถือว่าผู้ใช้ที่ตกลงไว้ในอดีต (ซื้อผลิตภัณฑ์เดียวกันหรือดูภาพยนตร์เรื่องเดียวกัน) จะเห็นด้วยในอนาคต

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

นับตั้งแต่ ""Netflix Price Challenge"" การแยกตัวประกอบแบบเมทริกซ์ถือเป็นเทคนิคการกรองแบบร่วมมือที่มีชื่อเสียงและใช้กันอย่างแพร่หลายที่สุดวิธีหนึ่ง เพื่ออธิบายการแยกตัวประกอบเมทริกซ์ เราจะใช้ตัวอย่างง่ายๆ ของการแนะนำภาพยนตร์ ให้เราถือว่านักแสดงต่อไปนี้เป็นผู้ใช้ระบบผู้แนะนำ: Ben Affleck, Robert Downey Jr., Ryan Reynolds, Chris Evans, Henry Cavill ต่อไปนี้เป็นรายชื่อภาพยนตร์ที่ดูและให้คะแนนในระดับ 5 คะแนนโดยผู้ใช้: Avengers Infinity War, Batman vs Superman, Deadpool, Aquaman, Green Lantern เพื่อให้เข้าใจง่าย เราจะแสดงโดยใช้ u1-u5 และ i1-i5 ตามลำดับ

ดูเหมือนทุกคนจะรัก Deadpool ยกเว้นกัปตัน เพราะ "ว้าว! ภาษา!!”

จากเมทริกซ์การให้คะแนน จะสังเกตได้ง่ายว่า u2 และ u4 มีความชื่นชอบภาพยนตร์ที่คล้ายกัน -โดยพื้นฐานแล้วเป็นพี่น้องกัน นอกจากนี้ u1 และ u5 ยังมีความชอบในภาพยนตร์ที่คล้ายกัน - เพราะชื่อแม่ของพวกเขา และ u3 นั้นมีเอกลักษณ์ - เพราะเขาเจ๋งมาก การแยกตัวประกอบแบบเมทริกซ์ใช้ประโยชน์จากความคล้ายคลึงนี้ในการตั้งค่าและการโต้ตอบของผู้ใช้เพื่อให้คำแนะนำ

ลองนึกถึงสถานการณ์ที่ u4ไม่ได้ดู i5 เราต้องการทราบว่า u4 จะชอบ i5 หรือไม่ ตรรกะคือการค้นหาผู้ใช้ที่มีค่ากำหนดคล้ายกับผู้ใช้ที่ใช้งานอยู่ u4 รับการให้คะแนนที่กำหนดสำหรับ i5โดยผู้ใช้รายนั้น และถือว่าเป็นการให้คะแนนโดย u4สำหรับรายการนั้น การใช้การให้คะแนนนี้ที่ได้รับจากการพึ่งพาผู้ใช้ เราสามารถบอกได้ว่า u4จะชอบ i5 หรือไม่

จุดมุ่งหมายคือการค้นหาการพึ่งพาผู้ใช้และรายการทั้งหมดในเมทริกซ์

วิธีแก้ไขปัญหานี้คือ การแยกตัวประกอบเมทริกซ์ แล้วการแยกตัวประกอบคืออะไร? พูดง่ายๆ ก็คือการแยกตัวประกอบเป็นวิธีการแสดงบางสิ่งที่ยิ่งใหญ่เป็นผลคูณของปัจจัยที่เล็กกว่า

ในทำนองเดียวกัน การแยกตัวประกอบเมทริกซ์จะค้นหาเมทริกซ์สี่เหลี่ยมสองตัวที่มีขนาดน้อยกว่าเพื่อแสดงถึง เมทริกซ์การให้คะแนน(RM ขนาดใหญ่ ปัจจัยเหล่านี้ยังคงรักษาการขึ้นต่อกันและคุณสมบัติของเมทริกซ์การให้คะแนน เมทริกซ์หนึ่งสามารถมองได้ว่าเป็น เมทริกซ์ผู้ใช้ (UM) โดยที่แถวแสดงถึงผู้ใช้และคอลัมน์คือ k ปัจจัยแฝง . เมทริกซ์อีกอันคือ เมทริกซ์รายการ(IM) โดยที่แถวเป็น k ปัจจัยแฝงและคอลัมน์เป็นตัวแทนของรายการ ที่นี่ k ‹ จำนวนรายการ และ k ‹จำนวนผู้ใช้

ปัจจัยแฝงจะเรียกว่าเป็นคุณลักษณะ คุณลักษณะคือคุณลักษณะของรายการ ในกรณีของเรา คุณสมบัติของภาพยนตร์อาจเป็นประเภท นักแสดง โครงเรื่อง ฯลฯ คุณสมบัติที่เลือกโดยการแยกตัวประกอบแบบเมทริกซ์ไม่เกี่ยวข้องกับวิธีแก้ปัญหา ขณะนี้เมทริกซ์การให้คะแนนจะแสดงเป็น ผลิตภัณฑ์ดอทของผู้ใช้และเมทริกซ์รายการ

ตอนนี้เราจะพยายามทำความเข้าใจคุณลักษณะและผลคูณดอทของเมทริกซ์ตัวประกอบโดยใช้รูปด้านล่าง เราจะเพิกเฉยต่อการให้คะแนนอื่นๆ ในภาพเมทริกซ์การให้คะแนนเพื่อให้เข้าใจง่าย เราจะถือว่าเมทริกซ์แยกตัวประกอบมีเพียงสองคุณลักษณะเท่านั้น F1 และ F2 เมื่อคำนึงถึงไรอัน เรย์โนลด์สแล้ว เราจะถือว่า F1 เป็น "ถ้าเป็นภาพยนตร์ที่มีตัวละครจาก Marvel" และ F2 เป็น " ถ้า Ryan อยู่ในหนังเรื่องนี้ด้วยเหรอ?"

เมทริกซ์ผู้ใช้:จากข้อมูลของ Ryan หากเป็นภาพยนตร์ Marvel เขาจะให้คะแนน 3 คะแนน และหากเขาอยู่ในภาพยนตร์ เขาจะให้คะแนนเพิ่มอีก 2 คะแนน (ปกติ Ryan! ) รายการเมทริกซ์:รายการเมทริกซ์ประกอบด้วยค่าไบนารีโดยที่ค่าเป็น 1 หากเงื่อนไขของคุณสมบัติที่กล่าวถึงข้างต้นเป็นไปตามเงื่อนไขและเป็น 0 หากไม่เป็นเช่นนั้น ด้วยการดำเนินการดอทโปรดัคของเมทริกซ์ผู้ใช้และเมทริกซ์รายการ Infinity War ได้ 3 และ Deadpool ได้ 5

ตอนนี้คำถามสำคัญคือ:

“เราจะหาปัจจัยที่เหมาะสมสำหรับเมทริกซ์ได้อย่างไร”

แมชชีนเลิร์นนิงคือคำตอบ แบบจำลองเรียนรู้ที่จะค้นหาปัจจัยแฝงเพื่อแยกตัวประกอบเมทริกซ์การให้คะแนน เพื่อให้ได้ค่าประมาณปัจจัยที่ดีที่สุด RMSE(ข้อผิดพลาดรากกำลังสองเฉลี่ย)คือฟังก์ชันต้นทุนที่ต้องย่อให้เล็กสุด หลังจากการแยกตัวประกอบเมทริกซ์เสร็จสิ้น จะมีการคำนวณข้อผิดพลาดกำลังสองสำหรับการจัดเรตภาพยนตร์ทุกเรื่องในเมทริกซ์การจัดเรตติ้ง และค่ารากของค่าเฉลี่ยของค่าความผิดพลาดกำลังสองจะลดลง เพื่อลด RMSE ให้เหลือน้อยที่สุดเพื่อเรียนรู้ปัจจัยต่างๆ "Gradient Descent" และ "Alternating Least Squares" จึงเป็นสองเทคนิคที่ใช้มากที่สุด

เอาล่ะ! ขณะนี้เรามี USER Matrixและ ITEM Matrixแล้ว

จะใช้เมทริกซ์แยกตัวประกอบสำหรับคำแนะนำได้อย่างไร

ฉันเชื่อว่าทุกคนจะมีข้อสงสัยว่าทำไมเราถึงสร้างเมทริกซ์นี้ขึ้นมา การใช้เมทริกซ์เหล่านี้ที่เราใช้เวลาทำความเข้าใจมามากคืออะไร?

ในสถานการณ์จริง ผู้ใช้ทุกคนคงไม่ได้ดูหนังที่เป็นไปได้ทั้งหมด ดังนั้นเมทริกซ์การให้คะแนนจะดูว่างเปล่ามากขึ้น - เมทริกซ์กระจัดกระจาย ในกรณีนี้ โมเดลยังคงเรียนรู้ที่จะแยกตัวประกอบเมทริกซ์แบบกระจาย แต่ RMSE จะถูกคำนวณเฉพาะสำหรับการให้คะแนนที่มีอยู่ในเมทริกซ์เท่านั้น หลังจากได้รับปัจจัยที่ดีที่สุดเพื่อประมาณการจัดอันดับที่เรามีแล้ว เราจะดำเนินการดอทโปรดัคของเมทริกซ์ตัวประกอบเพื่อเติมรายการที่ขาดหายไปในเมทริกซ์การจัดอันดับ การให้คะแนนที่กรอกเหล่านี้จะถูกนำมาใช้เพื่อให้คำแนะนำแก่ผู้ใช้

ฉันเชื่อว่าบทความข้างต้นมีประโยชน์สำหรับคุณในการตอบคำถาม "การกรองร่วมกันคืออะไร", "การแยกตัวประกอบเมทริกซ์คืออะไร" และ “จะใช้เมทริกซ์แยกตัวประกอบเพื่อให้คำแนะนำได้อย่างไร”

หัวข้อนี้ยังมีอะไรมากกว่านั้น เช่น อัลกอริธึมที่จะใช้เพื่อลดฟังก์ชันข้อผิดพลาดและเทคนิคการแนะนำอื่นๆ ดังที่กล่าวไว้ข้างต้น เราสามารถลดฟังก์ชันข้อผิดพลาดให้เหลือน้อยที่สุดได้โดยใช้วิธี Alternative Least Squares สำหรับกระบวนการเรียนรู้แบบขนานหรือการไล่ระดับแบบไล่ระดับ ข้อมูลนั้นใช้สำหรับโพสต์บล็อกอื่น

ขอบคุณสำหรับการอ่านบทความ! กรุณาแสดงความคิดเห็นอันมีค่าของคุณในความคิดเห็น!

ผู้เขียน

“สาวิตา เวนเกศวารัน”

“ซูบิกชา เซนติลกุมาร์”

“ศชิน ประภู ทันดาปานี”