Recommendation System Part 2 มารู้จัก Collaborative Filtering กันเถอะ
ในบทความก่อนหน้านี้ เราได้ทำความรู้จักกับระบบแนะนำ (Recommendation System) ทั้ง 4 ประเภทหลัก ได้แก่ Content-Based Filtering, Collaborative…
Recommendation System Part 2 มารู้จัก Collaborative Filtering กันเถอะ
ในบทความก่อนหน้านี้ เราได้ทำความรู้จักกับระบบแนะนำ (Recommendation System) ทั้ง 4 ประเภทหลัก ได้แก่ Content-Based Filtering, Collaborative Filtering, Knowledge-Based Filtering และ Hybrid Filtering ซึ่งแต่ละประเภทมีจุดเด่นและการใช้งานที่เหมาะสมในบริบทที่แตกต่างกันไป
ซึ่งในการสร้างระบบแนะนำ (Recommendation System) หากระบบมีข้อมูลการให้คะแนน (rating) จากผู้ใช้งาน ไม่ว่าจะเป็นสินค้าหรือบริการ ข้อมูลเหล่านี้สามารถนำมาใช้ในการวิเคราะห์ความชอบของผู้ใช้แต่ละคน และใช้ทำนายหรือแนะนำสิ่งที่พวกเขาอาจสนใจ โดยทั่วไปแล้ว วิธีการให้คะแนนสามารถแบ่งได้เป็น 2 ประเภทหลัก ๆ คือ
1. การให้คะแนนแบบทางตรง (Explicit Rating)
เป็นการที่ผู้ใช้งานให้คะแนนด้วยตัวเอง เช่น การให้คะแนนตั้งแต่ 0 ถึง 5 ดาว เพื่อแสดงระดับความพึงพอใจต่อสินค้า หรือบริการนั้นๆนั่นเอง ตัวอย่างเช่น
- ผู้ใช้งาน A ให้คะแนนภาพยนตร์เรื่อง the snake ที่ 5/5 : แสดงว่าชอบภาพยนตร์เรื่องนี้มาก
- แต่ให้คะแนนภาพยนตร์เรื่อง 404 run run ที่ 1/5 : อาจจะไม่ชอบภาพยนต์เรื่องนี้เลย


ตัวอย่างของหนังที่ user A ได้ให้ rating ไว้
การให้คะแนนแบบนี้มักใช้ในระบบแนะนำแบบ Single-Criteria ซึ่งใช้คะแนนเพียงหลักเกณฑ์เดียวในการพิจารณา แต่ในระบบที่มีความซับซ้อนมากขึ้น อาจจะมีการแยกการให้คะแนนตามคุณลักษณะของสินค้าหรือบริการ เช่น ให้คะแนนภาพยนตร์แยกเป็นด้านเนื้อเรื่อง, ฉากแอ็กชัน, การกำกับ, ภาพและเสียง ฯลฯ ซึ่งเรียกสิ่งนี้ว่า Multi-Criteria Recommendation System นั่นเอง แต่ข้อจำกัดของการใช้ Explicit Rating ก็มีเช่นกันครับ
ข้อจำกัดของ Explicit Rating
ผู้ใช้งานอาจไม่ได้ให้คะแนนกับทุกสินค้าหรือบริการ โดยเฉพาะเมื่อสินค้าหรือบริการนั้นมีจำนวนมากในระบบ ทำให้เกิดปัญหา ข้อมูลขาดหาย (Data Sparsity) ซึ่งส่งผลต่อความแม่นยำของการแนะนำ เพราะระบบมีข้อมูลไม่เพียงพอในการประเมินความชอบของผู้ใช้นั่นเองครับ
2. การให้คะแนนแบบทางอ้อม (Implicit Rating)
เป็นการเก็บข้อมูลจากพฤติกรรมของผู้ใช้โดยที่ผู้ใช้ ไม่ต้องให้คะแนนโดยตรงเช่น
- การคลิกดูสินค้า
- การเพิ่มสินค้าไว้ในตะกร้า
- การซื้อสินค้า
- การกดดูรายละเอียดหรือเล่นวิดีโอ
แม้ผู้ใช้จะไม่ได้ให้คะแนนโดยตรง แต่พฤติกรรมเหล่านี้สามารถบ่งบอกความสนใจได้ในระดับหนึ่งซึ่ง Implicit Rating มีข้อดีข้อเสียดังนี้ ข้อดี : มีข้อมูลปริมาณมาก และสามารถใช้ได้แม้กับผู้ใช้ที่ไม่เคยให้คะแนนเลย ข้อเสีย : ไม่สามารถรู้ได้แน่ชัดว่าผู้ใช้ ชอบ สินค้าจริงหรือไม่ เป็นเพียงการคาดเดาจากพฤติกรรมเท่านั้นครับ
โดยอันดับต่อไปนั้น เราจะเจาะลึกไปยังหัวใจสำคัญของระบบแนะนำประเภทหนึ่งที่ได้รับความนิยมอย่างแพร่หลายในโลกของ Data Science นั่นก็คือ Collaborative Filtering โดยสามารถแบ่งออกได้เป็น 3 แนวทางหลัก ได้แก่
- Memory-based : การหาความสัมพันธ์จากข้อมูลระหว่างผู้ใช้งานกับสินค้า เป็นการคาดเดาคะแนนจากผู้ใช้ หรือผลิตภัณฑ์ที่มีความใกล้เคียงกัน (similarity-based approach)
- Model-based : ใช้เทคนิคการเรียนรู้จากข้อมูล เช่น การแยกเมทริกซ์ (Matrix Factorization) เพื่อค้นหา latent features ที่ซ่อนอยู่ในพฤติกรรมของผู้ใช้และรายการของสินค้า
- Hybrid : นำจุดแข็งของทั้ง Memory-based และ Model-based เข้าด้วยกัน เพื่อลดข้อจำกัดของแต่ละแนวทางและเพิ่มประสิทธิภาพในการแนะนำที่แม่นยำยิ่งขึ้น

Collaborative Filtering รูปแบบต่างๆ
ซึ่งข้อดีและข้อจำกัดของ Collaborative Filtering มีดังนี้
ข้อดีของ Collaborative Filtering :
- ใช้งานได้กับสินค้าทุกประเภท โดยไม่ต้องพึ่งข้อมูลคุณลักษณะของสินค้าโดยตรงเลย
- ใช้ข้อมูลจากพฤติกรรมหรือความชอบของผู้ใช้งานอื่นในการแนะนำแทน
ข้อจำกัด :
- หากมีผู้ใช้งานใหม่ หรือสินค้ายังไม่มีใครให้คะแนน ระบบจะไม่สามารถทำการแนะนำได้แม่นยำเท่าที่ควร
- ปัญหานี้เรียกว่า Cold-Start Problem จะเกิดเมื่อไม่มีข้อมูลเริ่มต้นสำหรับผู้ใช้งานหรือมีสินค้าใหม่เข้ามาในระบบ
โดยในอันดับต่อไป เราจะไปทำความเข้าใจเบื้องหลังของทั้ง Memory-based และ Model-based โดยจะมีทั้งตัวอย่างการคำนวณ การประยุกต์ใช้จริง และการเปรียบเทียบข้อดี-ข้อเสียของแต่ละวิธีอย่างชัดเจน
1. Collaborative Filtering : Memory-based
Memory-based Collaborative Filtering เป็นแนวทางที่อิงจากข้อมูลพฤติกรรมเดิมของผู้ใช้ทั้งหมดโดยตรง โดยระบบจะพยายามค้นหาผู้ใช้ที่มีพฤติกรรมคล้ายกับผู้ใช้ที่เราสนใจ หรือค้นหารายการที่คล้ายกับรายการที่ผู้ใช้เคยชอบ แล้วนำข้อมูลเหล่านั้นมาใช้ในการแนะนำรายการใหม่
วิธีนี้แบ่งออกเป็น 2 รูปแบบย่อยได้ดังนี้
- User-based CF : ค้นหาผู้ใช้ที่มีพฤติกรรมหรือความชอบคล้ายคลึงกับผู้ใช้ที่เราสนใจ แล้วแนะนำรายการที่ผู้ใช้นั้นชื่นชอบ หรืออธิบายได้ง่ายๆก็คือแนะนำสินค้าโดยเลือกจากพฤติกรรมที่ใกล้เคียงกันกับเราเป็นหลักนั่นเอง (หา user ที่คล้ายกัน)
- Item-based CF : จะพิจารณาจากข้อมูลของรายการสินค้าเป็นหลัก โดยอิงจากแนวคิดที่ว่า หากสินค้ารายการ A มีความคล้ายคลึงกับสินค้ารายการ B เมื่อผู้ใช้งานแสดงความสนใจหรือเลือกสินค้ารายการ A ระบบจะแนะนำสินค้ารายการ B ให้อัตโนมัติ เนื่องจากมีความเป็นไปได้สูงว่าผู้ใช้อาจมีแนวโน้มที่จะชอบสินค้ารายการ B เช่นกัน (หา item ที่คล้ายกัน)
เทคนิคนี้เหมาะสำหรับระบบที่มีข้อมูลผู้ใช้จำนวนมากและมีความหนาแน่นของข้อมูลพอสมควร อย่างไรก็ตาม หากข้อมูลมีความเบาบาง (sparse) หรือมีผู้ใช้/รายการใหม่เข้ามา (cold-start) ประสิทธิภาพของระบบนี้อาจลดลงได้นั่นเอง

การเปรียบเทียบความแตกต่างระหว่าง User-based และ Item-based
ตัวอย่างการใช้ User-based Collaborative Filtering
หากต้องการแนะนำหนังสำหรับ User U1 โดยทำนายคะแนน Movie C และ Movie E โดยอิงจากผู้ใช้ที่คล้ายกัน (U2 และ U3) ตามลำดับโดยมีการ rating หนังแต่ละเรื่องดังรูป

ตารางการ rating ของหนังแต่ละเรื่องของ user
โดยขั้นตอนที่จะทำการแนะนำหนังให้กับ User U1 นั้นมีขั้นตอนดังนี้
Step 1 : User ที่คล้ายกัน (User Similarity)
ทำการใช้ Cosine Similarity (วัดมุมระหว่างเวกเตอร์) แล้วเราจะเปรียบเทียบพฤติกรรมของ U1 กับ U2 และ U3 และทำการตัด Movie C และ E ออกก่อน เพราะ User U1 ยังไม่ได้ให้คะแนนนั่นเอง

Cosine similarity Equation
การคำนวณ Cosine Similarity ของแต่ละ User โดยอิงกับ user U1 โดยใช้ rating ของ Movie A, B, D
- U1 : [5, 3, 1] (Movie A, B, D)
- U2: [4, 3, 1]
- U3: [1, 5, 4]

การคำนวน Cosine Similarity ของ U1 กับ U2

การคำนวน Cosine Similarity ของ U1 กับ U3
จากการคำนวนโดยใช้ Cosine Similarity แล้วนั้น user U1 มีความใกล้เคียงกับ user U2 มากกว่า U3 นั่นเอง
Step 2 : ทำนายคะแนน (Predict Rating)
หลังจากที่เราได้วัดความคล้ายกันของ user แล้วนั้น ในอันดับต่อไปเราจะทำการทำนาย rating ของหนังที่ user U1 ที่ยังไม่เคยได้รับชม (Movie C, E) ซึ่งการทำนายถึง rating ของหนังแต่ละเรื่องนั้นสามารถคำนวนได้จาก Weighted Average ว่าหนังแต่ละเรื่องนั้นหาก user U1 ได้รับชมแล้วนั้นจะได้รับคะแนน rating ประมาณเท่าใดนั่ซึ่งจากข้อมูลที่เรามีนั้นเป็นสามารถคำนวนได้ดังนี้
Movie C

ตารางข้อมูลการ rating และความ similarity ของ Movie C

การใช้ Weighted Average ในการหา rating ของ Movie C
Movie E

ตารางข้อมูลการ rating และความ similarity ของ Movie E

การใช้ Weighted Average ในการหา rating ของ Movie E
Step 3 : การแนะนำหนัง (Recommend)
หลังจากที่เราได้คะแนน rating ของหนังแต่ละเรื่องแล้วนั้นเราจะพิจารณาในการแนะนำหนังได้ดังนี้

rating ที่ได้จากการใช้ user-based
จากการคำนวน rating ของหนังแต่ละเรื่องโดยใช้ user-based แล้วนั้นให้คะแนนของหนังแต่ละเรื่องออกมาโดยการแนะนำหนังเรื่องใดนั้นอาจจะพริจารณาตามความเหมาะสมได้ซึ่งคะแนนที่ได้นั้นอาจจะสามารถอธิบายได้ว่า ควรแนะนำ movie C มากกว่า movie E แต่ถึงอย่างไรนั้นเราอาจจะนำปัจจัยอื่นๆมาช่วยในการตัดสินใจได้ด้วยเช่นกัน
หลังจากเราแนะนำหนังจากการใช้ user-based แล้วนั้นขั้นตอนต่อไปเราจะแนะนำโดยใช้ item-based โดยมีวิธีการใช้งานดังนี้
ตัวอย่างการใช้ Item-based Collaborative Filtering
ต่างจากแบบ User-based ที่มองคนที่คล้ายกัน แต่ Item-based จะมองรายการ (items/movies) ที่คล้ายกันแทน

Step 1 : หา Item Similarity
เราใช้ Cosine Similarity ระหว่างภาพยนตร์ที่ต้องการทำนาย (Movie C, E) กับภาพยนตร์ที่ U1 เคยให้คะแนนไว้ (Movie A, B, D) ซึ่งจากการคำนวนได้ similarity ของหนังแต่ละเรื่องดังนี้ Similarity ระหว่าง Movie C กับ A, B, D
- similarity(C, A) ≈ 0.651
- similarity(C, B) ≈ 0.998
- similarity(C, D) ≈ 0.977
Similarity ระหว่าง Movie E กับ A, B, D
- similarity(E, A) ≈ 0.739
- similarity(E, B) ≈ 0.998
- similarity(E, D) ≈ 0.941
Step 2 : ทำนายคะแนน (Predict Rating)
- การทำนายคะแนนของผู้ใช้ U1 ต่อ Movie C

การใช้ Weighted Average ในการหา rating ของ Movie C
- การทำนายคะแนนของผู้ใช้ U1 ต่อ Movie E

การใช้ Weighted Average ในการหา rating ของ Movie E
Step 3 : การแนะนำหนัง (Recommend)
หลังจากที่เราได้คะแนน rating ของหนังแต่ละเรื่องแล้วนั้นเราจะพิจารณาในการแนะนำหนังได้ดังนี้

rating ที่ได้จากการใช้ item-based
จากการคำนวณค่าคะแนน (rating) ที่ผู้ใช้ U1 มีต่อภาพยนตร์เรื่อง Movie C และ Movie E ด้วยเทคนิค Item-Based Collaborative Filtering พบว่าคะแนนที่ได้มีความแตกต่างจากวิธี User-Based Collaborative Filtering ที่เคยนำมาทดลองใช้ก่อนหน้านี้อย่างเห็นได้ชัด ตัวอย่างเช่น คะแนนที่ได้จากการทำนาย Movie C เท่ากับ 2.75 และ Movie E เท่ากับ 2.85 โดยอิงจากความคล้ายของหนังแต่ละเรื่อง (item similarity) ที่ผู้ใช้เคยให้คะแนนมาแล้ว เช่น Movie A, B และ D
ในทางตรงกันข้าม วิธี User-Based จะมองหาผู้ใช้คนอื่นที่มีพฤติกรรมใกล้เคียงกับ U1 แล้วดูว่าผู้ใช้เหล่านั้นให้คะแนน Movie C และ E อย่างไร ซึ่งอาจได้ค่าที่ต่างออกไป เพราะพฤติกรรมของผู้ใช้ อาจมีความผันผวนและหลากหลายมากกว่าความคล้ายกันของหนังนั่นเอง
การเลือกใช้วิธีใดจึงขึ้นอยู่กับลักษณะของข้อมูลและวัตถุประสงค์ของระบบแนะนำ หากต้องการระบบที่ะมีเสถียรภาพแม้ผู้ใช้น้อย หรือในกรณีที่มีหนังใหม่เข้ามาในระบบจำนวนมาก วิธี Item-Based Collaborative Filtering มักจะมีประสิทธิภาพมากกว่า เพราะเน้นความสัมพันธ์ระหว่างสิ่งที่ผู้ใช้ให้คะแนนแล้ว ซึ่งมักจะมีข้อมูลมากกว่านั่นเอง
ซึ่งกล่าวโดยสรุปแล้วนั้น User-Based เหมาะสำหรับระบบที่ต้องการเข้าใจความชอบของกลุ่มผู้ใช้ ขณะที่ Item-Based เหมาะกับการแนะนำรายการที่คล้ายกับสิ่งที่ผู้ใช้เคยชอบ โดยไม่ต้องพึ่งพาการเปรียบเทียบผู้ใช้มากนัก
2. Collaborative Filtering : Model-based
Model-based Collaborative Filtering เป็นวิธีแนะนำสินค้าหรือเนื้อหาที่อาศัย Machine Learning ในการทำนายความชอบของผู้ใช้งานที่มีต่อ item ต่างๆ โดยแนวทางนี้จะเน้นไปที่การเรียนรู้จากข้อมูลที่มีอยู่ เพื่อหา Latent Features ของผู้ใช้และสินค้า แล้วใช้รูปแบบเหล่านี้ในการทำนายคะแนนหรือความชอบที่ยังไม่เคยให้ไว้นั่นเอง โดยหลักการสำคัญของ Model-based มีดังนี้
- Rating Prediction โดยใช้โมเดลในการเรียนรู้พฤติกรรมของผู้ใช้งาน
- แปลงข้อมูลการให้คะแนนที่มีอยู่ให้เป็น เมทริกซ์ขนาดเล็กลง เพื่อจับความสัมพันธ์เชิงลึกที่อาจไม่สามารถเห็นจากข้อมูลตรงๆได้
- สร้าง User Weight และ Item Weight จากเมทริกซ์ใหม่ ซึ่งจะช่วยให้ระบบสามารถประมาณความชอบของผู้ใช้อย่างแม่นยำยิ่งขึ้น
สำหรับใครที่ฟังแล้วยังรู้สึกงงๆอยู่ ไม่ต้องตกใจครับเพราะผมก็งง 5555 เดี๋ยวเราจะมี ตัวอย่าง ประกอบให้เข้าใจง่ายขึ้นแน่นอน เพราะวิธี Model-based Collaborative Filtering นั้นมีหลายแบบ ไม่ว่าจะเป็น
- การแยกเมทริกซ์ (Matrix Factorization)
- Deep Learning
- Clustering
แต่ในที่นี้ เราจะพาไปเจาะลึกที่ Matrix Factorization ซึ่งเป็นหัวใจสำคัญของเทคนิค Model-based Collaborative Filtering กันครับผม

รูปแบบต่างๆของ model-based
Matrix Factorization
Matrix Factorization คือการนำ เมทริกซ์ขนาดใหญ่ ที่แสดงคะแนนการให้คะแนนของผู้ใช้ต่อสินค้า (เรียกว่า Utility Matrix หรือ R Matrix) มาแยกออกเป็นเมทริกซ์ขนาดเล็ก 2 ชุด ซึ่งจะช่วยให้เรามองเห็น (Latent Features) ของผู้ใช้และสินค้าได้ชัดเจนมากขึ้น โดยลักษณะของเมทริกซ์เป็นดังนี้
- Row (i) : User
- Column (j) : สินค้า
- ค่าในแต่ละช่องคือ คะแนน Rating ที่ผู้ใช้ i ให้สินค้า j

Matrix R (i x j) ก่อนถูก Factorization
การทำ Matrix Factorization จะแยก Matrix R ออกเป็น
- เมทริกซ์ U : แสดงถึง คุณลักษณะของผู้ใช้ (User Factors)
- เมทริกซ์ V : แสดงถึง คุณลักษณะของสินค้า (Item Factors)
จากนั้นนำ U และ V มาคูณกันเพื่อประมาณค่า R เดิมใหม่อีกครั้ง เพื่อใช้เติมเต็มค่าที่หายไป
โดยจุดสำคัญคือ : เมทริกซ์ย่อยเหล่านี้จะมีมิติน้อยลง เช่น จากเมทริกซ์ 1000x500 (Matrix R) อาจแยกเป็น 1000x10 (Matrix U) และ 10x500 (Matrix V) ซึ่งช่วยลดความซับซ้อนของข้อมูล และค้นหา ความสัมพันธ์ที่ซ่อนอยู่ระหว่างผู้ใช้กับสินค้า

ตัวอย่างของการทำ Matrix Factorization
ตัวอย่างของ Matrix Factorization และ การหา latent feature

ตัวอย่างของระบบแนะนำรูปแบบหนึ่งที่มีการ rating ดังรูป

User Matrix (42) x Item Matrix (25) latent feature 2 ค่า (action, comedy)
ภาพนี้แสดงตัวอย่างการทำ Matrix Factorization ด้วย Latent Features 2 ค่า คือ Comedy และ Action โดยที่
เราต้องการแยก (factor) ตารางคะแนนที่ผู้ใช้ให้หนัง ออกเป็น 2 ตารางย่อย
- User Matrix (4×2) → ความชอบของผู้ใช้แต่ละคนในแนว
ComedyและAction - Item Matrix (2×5) → หนังแต่ละเรื่องเกี่ยวข้องกับแนว
ComedyและActionมากแค่ไหน
แล้วเอาสองตารางนี้มาคูณกัน (dot product) เพื่อสร้างตารางคะแนนทำนายขึ้นมาใหม่ โดยที่ User Matrix และ Item Matrix ตีความได้ดังนี้

Item Matrix (2×5)
สามารถตีความได้ว่า
- M1 เป็นแนว comedy (3), มี action เล็กน้อย (1)
- M3 เป็นแนว action จ๋า (4), มี comedy ปานกลาง (3)
- M4 ออกแนว comedy มากที่สุด (4), action น้อย (1)

User Matrix (4×2)
สามารถตีความได้ว่า
- User A: ชอบแนว Comedy เท่านั้น
- User B: ชอบแนว Action เท่านั้น
- User C: ชอบแนว Comedy เท่านั้น
- User D: ชอบทั้ง Comedy และ Action

ในส่วนนี้คือตารางที่เกิดจากการ Dot Product ระหว่าง User Matrix กับ Item Matrix เพื่อ ทำนาย คะแนนที่ผู้ใช้น่าจะให้หนังแต่ละเรื่องนั่นเอง
ทำไมต้องทำ Matrix Factorization
การทำ Matrix Factorization เป็นขั้นตอนสำคัญในระบบแนะนำ (Recommender Systems) โดยเฉพาะในเทคนิค Model-based Collaborative Filtering เพราะช่วยให้ระบบสามารถเข้าใจ ความชอบที่ซ่อนอยู่ ของผู้ใช้และสินค้าได้อย่างมีประสิทธิภาพมากขึ้น โดยมีเหตุผลหลัก ๆ ดังนี้ครับ
1. ลดขนาดข้อมูลที่ใหญ่เกินไป (Dimensionality Reduction)
ลองนึกภาพดูครับว่าเรามีผู้ใช้เป็นหมื่น ๆ คน แล้วก็มีสินค้าหลายพันรายการ ซึ่งผู้ใช้แต่ละคนก็ไม่ได้ให้คะแนนสินค้าทุกชิ้นแน่นอน เลยกลายเป็นว่าตารางคะแนนที่เรามีมันทั้ง ใหญ่และมีช่องว่างเต็มไปหมด หรือที่เราเรียกว่า (Data Sparsity)
การทำ Matrix Factorization มันก็เหมือนกับการย่อข้อมูลพวกนี้ให้เล็กลงเหลือแค่เมทริกซ์ U กับ V ที่เล็กกว่าเดิมเยอะมาก แต่ยังเก็บข้อมูลสำคัญเอาไว้ครบ แบบที่ระบบยังเข้าใจได้เหมือนเดิมนั่นเอง
ซึ่งข้อดีนั้นจะทำให้เราสามารถประมวลผลได้เร็วขึ้น ใช้หน่วยความจำน้อยลง ไม่หนักเครื่องด้วยครับ
2. การหา (Latent Features) ของผู้ใช้และสินค้า
บางทีผู้ใช้งานเองก็ไม่ได้พูดตรงๆหรอกครับ ว่าเค้าชอบอะไร เช่น เขาอาจจะชอบหนังผจญภัย หนังไซไฟ แต่ไม่ได้เคยระบุไว้ ระบบก็ไม่สามารถรู้ได้ตรงๆ
แต่การแยกเมทริกซ์นี่แหละช่วยจับสัญญาณพวกนี้ได้จากพฤติกรรมอย่างดีเลย เช่น เคยดูหนังแนวไหนแล้วให้คะแนนดี ระบบก็จะค่อย ๆ เดาได้ว่า เอ๊ะ คนนี้น่าจะชอบแนวนี้
ตัวอย่างเช่น
- ผู้ใช้ A อาจจะมีรสนิยมชอบ หนังแอ็กชันกับพระเอกหล่อ
- ส่วนหนัง B ก็อาจจะมีลักษณะเป็น หนังแอ็กชันและมีนักแสดงชื่อดัง
พอจับคู่กันได้ ระบบก็จะรู้ว่าคู่นี้ไปกันได้ แล้วก็แนะนำให้เลยนั่นเอง
3. เติมช่องว่างที่ไม่มีข้อมูล (Prediction)
ในตาราง R ของเรา จะเห็นว่ามีหลายช่องที่ไม่มีคะแนนเลย เพราะผู้ใช้อาจยังไม่เคยดูสินค้านั้นมาก่อน
Matrix Factorization จะช่วยคาดเดาค่าคะแนนในช่องพวกนี้ เช่น ถ้าเรารู้ว่าผู้ใช้ A มีแนวโน้มชอบหนังไซไฟ แล้วหนัง C ก็มีลักษณะเป็นไซไฟเหมือนกัน ระบบก็จะทำนายออกมาว่าคนนี้จะให้ประมาณ 4 ดาว แล้วก็ใช้ค่านี้ในการแนะนำต่อได้เลย
4. ช่วยให้เริ่มต้นแนะนำได้ แม้จะยังมีข้อมูลน้อย (Warm-start)
จริงอยู่ที่มันยังไม่สามารถแก้ปัญหา Cold-start ได้ทั้งหมด (เช่น สินค้าใหม่ ๆ ที่ไม่มีใครเคยให้คะแนนมาก่อน) แต่ถ้ามีข้อมูลแค่นิดหน่อย เช่น ผู้ใช้อย่างน้อยเคยให้คะแนนมา 2–3 รายการ ระบบก็เริ่มจับความชอบของเค้าได้แล้วครับ โดยอาจใช้งานร่วมกับ Content-based ก็ได้
5. ใช้งานจริงในระดับโลก และแม่นยำมาก
ไม่ใช่แค่แนวคิดบนกระดาษเท่านั้นน้าา เพราะ Matrix Factorization นี่แหละ เป็นเทคนิคที่ถูกใช้งานจริงในระบบแนะนำของเจ้าใหญ่อย่าง Netflix, Amazon, Spotify เลย

จำนวน parameter หากในระบบของเรามี 2000 user และ 1000 movie (ก่อนทำ Matrix Factorization)

จำนวน parameter หากในระบบของเรามี 2000 user และ 1000 movie (หลังทำ Matrix Factorization)

การเปรียบเทียบจำนวน parameter ระหว่างก่อนทำและหลังทำ Matrix Factorization
การทำงานของ Matrix Factorization
1. Random Weight
ตอนเริ่มต้น ค่าต่างๆ ใน Matrix U และ I จะเป็นค่าที่ สุ่มมาแบบงงๆ ก่อนเลยครับ แล้วโมเดลจะพยายามค่อยๆ ปรับค่าพวกนี้ให้แม่นขึ้นเรื่อยๆ โดยใช้เทคนิคที่เรียกว่า Gradient Descent เช่น
- ถ้า User 1 เคยให้คะแนน M1 = 3
- แต่ตอนแรกโมเดลทำนายได้แค่ 1.44 → ต้องทำการปรับ parameter
- โมเดลก็จะปรับค่าภายในเพื่อให้ครั้งหน้า ทำนายได้ใกล้ 3 มากขึ้น โดย Backpropagation นั่นเอง

การทำนายค่าของ User 1 ซึ่งได้ค่า rating ที่ 1.44
2. Update Weight to Best Parameter
เมื่อโมเดลเรียนรู้ไปซักระยะ มันจะเก่งขึ้น เราก็สามารถใช้มัน ทำนายคะแนนหนังที่ผู้ใช้นั้นๆ ยังไม่เคยดูได้แม่นยำขึ้น นำไปสู่การแนะนำหนังใหม่ๆ ที่ผู้ใช้น่าจะชอบ จริงๆ ได้เลยครับ


รูปด้านซ้ายคือ model ที่ได้รับการปรับ parameter เรียบร้อยแล้ว และขวา คือการทำนายค่า rating กับข้อมูลที่ยังไม่มีการ rating นั่นเอง
โดยสรุปแล้วนั้น Matrix Factorization คือเทคนิคที่ แยกตารางคะแนนออกมาเป็นความชอบของผู้ใช้ และคุณสมบัติของหนัง แล้วใช้วิธีคูณกลับเข้าไปเพื่อทำนายคะแนนที่ขาดหายไป โดยช่วยให้เราสร้างระบบแนะนำที่แม่นยำขึ้น มีความเข้าใจในตัวผู้ใช้มากขึ้น และแนะนำหนังที่ตรงใจมากขึ้นครับ
จากที่เราได้เรียนรู้ในบทความนี้ จะเห็นได้ว่า Collaborative Filtering เป็นหนึ่งในเทคนิคที่ทรงพลังที่สุดของระบบแนะนำ โดยอาศัยความชอบหรือพฤติกรรมของผู้ใช้งานในอดีต เพื่อทำนายและแนะนำสิ่งที่พวกเขาอาจสนใจในอนาคต ไม่ว่าจะเป็นแบบ User-based ที่เน้นหาผู้ใช้ที่มีความชอบคล้ายกัน หรือแบบ Item-based ที่มองหาสินค้าที่คล้ายกัน ระบบนี้สามารถนำไปประยุกต์ใช้ได้หลากหลาย ทั้งในแพลตฟอร์มภาพยนตร์ อีคอมเมิร์ซ ไปจนถึงแอปพลิเคชันโซเชียลมีเดียต่างๆ
แม้ Collaborative Filtering จะมีจุดแข็งมากมาย แต่ก็ยังมีข้อจำกัด เช่น ปัญหา Cold-Start หรือความเบาบางของข้อมูล ซึ่งในโลกความจริง การพัฒนา Recommendation System ที่มีประสิทธิภาพสูงมักต้องอาศัยการผสานหลายเทคนิคเข้าด้วยกัน
หวังว่าบทความนี้จะช่วยให้ทุกคนเข้าใจแนวคิดและหลักการของ Collaborative Filtering ได้อย่างชัดเจนยิ่งขึ้น และสามารถนำความรู้นี้ไปต่อยอดได้อีกด้วยครับ ไว้เจอกันใหม่ตอนหน้า ;>
Source :
메타데이터
- post_id
- 3d55df3cef1b
- slug
- recommendation-system-part-2-มารู้จัก-collaborative-filtering-กันเถอะ-3d55df3cef1b
- url
- https://medium.com/@4ommyx/recommendation-system-part-2-%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%88%E0%B8%B1%E0%B8%81-collaborative-filtering-%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B9%80%E0%B8%96%E0%B8%AD%E0%B8%B0-3d55df3cef1b
- canonical_url
- https://medium.com/@4ommyx/recommendation-system-part-2-%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%88%E0%B8%B1%E0%B8%81-collaborative-filtering-%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B9%80%E0%B8%96%E0%B8%AD%E0%B8%B0-3d55df3cef1b
- author_url
- https://medium.com/@4ommyx
- status
- ok
- fetched_at
- 2026-06-13 07:35:29