วันเสาร์ที่ 14 กันยายน พ.ศ. 2562

ระบบแนะนำ (Recommender Systems) โดยใช้ Cosine similarity


" ระบบแนะนำ(Recommender Systems) คืออะไร ? " 
ระบบแนะนำ (Recommender Systems) คือระบบที่ใช้แนะนำ บริการสินค้า 
ยกตัวอย่างเช่น เราดูหนังใน Netflix เดือนนึงหลายเรื่อง ซึ่งหนังที่เราดูส่วนมากคือหนัง Action และทุกครั้งที่เข้าไปในเว็บ Netflix สิ่งที่ทางเว็บแนะนำหนังกับเรา ส่วนมากก็เป็นแนว Action สะด้วย ซึ่งเว็บไซต์จะรู้เองว่าเราชอบหนังแนว Action แล้วแนะนำหนังมาให้เรา 
จากตัวอย่างแสดงว่าเว็บไซต์ Netflix มีระบบแนะนำ(Recommender System)
 " แล้วระบบรู้ได้ไงว่าต้องแนะนำอะไร ? "  
ระบบแนะนำส่วนมากจะแบ่งเป็น 2 แบบคือ “Content-Base” และ “Collaborative Filtering (CF)”
    • Collaborative Filtering (CF) คือ การหาความเหมือนกันของกลุ่มคนที มีความชอบหรือไม่ชอบหนังชนิดเดียวกัน ยกตัวอย่างเช่น
      นาย ก ชอบ Spider man, Superman ,Iron man
      นาย ข ชอบ Spider man, Superman
      จะเห็นว่า นาย ก กับนาย ข ชอบดูหนังคล้ายๆกัน เราจึงขอสรุปว่า หาก นาย ก ชอบดู Iron man นาย ข อาจจะชอบด้วยเช่นกันเราจึงแนะนำหนัง Iron man ให้นาย ข
    • Content-Base คือ การหาความเหมือนของสินค้า ยกตัวอย่างเช่น
      นาย ก ชอบ Spider man, Superman , Iron man
      จะเห็นว่า นาย ก ชอบหนังที่มีเนื้อหาเป็น แนวฮีโร่ แสดงว่า นาย ก อาจจะชอบดูหนังเรื่อง Ant man ด้วยเช่นกันเนื่องจาก Ant man เป็นหนังแนวฮีโร่เหมือนกัน

Collaborative Filtering (CF) ในโพสน์นี้เราจะพูดถึงระบบ Recommender System ในแบบ Collaborative Filtering (CF) กันเนื่องจากง่ายต่อการเข้าใจและใช้กันอย่างหลากหลาย โดยโพสน์นี้เราจะใช้สมการที่ชื่อว่า cosine similarity ในการคำนวณความเหมือนกัน

การคำนวณ Cosine similarity Cosine similarity คือการหาความเหมือนกันของข้อมูลซึ่งสูตรจะเป็นดังนี้

จากสมการดังรูปค่า cosine ที่ได้จะมีค่าอยู่ระหว่าง 0 ถึง 1 โดยค่า
1 จะหมายถึงข้อมูล A และข้อมูล B มีความเหมือนกัน
ส่วนค่า 0 จะหมายถึงข้อมูล A และข้อมูล B ไม่มีความเหมือนกันเลย
(สามารถทำความเข้าใจเพิ่มเติมได้ที่ http://9golfy.com/2016/12/12/คำนวณลักษณะนิสัยใจตรงก-2/)

หลักการทำงานของ ระบบแนะนำ (Recommender System) เพื่อให้เห็นภาพมากขึ้นจึงได้ยกตัวอย่างการทำงานของ ระบบแนะนำหนัง โดยสมมุติเก็บข้อมูลดังนี้

จากตารางจะมีการเก็บการให้คะแนนความชอบของหนังแต่ละคน ซึ่งค่าของคะแนนนั้นมีตั้งแต่ 1 – 5 (ค่า 0 หมายถึงคนนั้นยังไม่เคยดูหนังเรื่องนี้มาก่อน) ทำการปรับโครงสร้างตารางเป็นดังนี้
หลังจากปรับโครงสร้างตารางแล้วต่อไปเราจะหาความเหมือนกัน โดยการคำนวณ Cosine ของแต่ละคนเช่น ถ้าเราอยากหาความเหมือนกันของ นาย ก กับ นาย ข เราสามารถทำได้โดยใช้สูตร Cosine ดังนี้
สมมุติให้ นาย ก คือ A
สมมุติให้ นาย ข คือ B
จากการคำนวณค่า Cosine Similarity ระหว่าง นาย ก และ นาย ข แสดงให้เห็นว่ามีความเหมือนกันอยู่ 0.682793 หรือ 68.2793 เปอร์เซ็นต์
หลังจากนั้นก็วนหา Cosine ระหว่าง นาย ก กับ นาย ค , นาย ก กับ นาย ง, นาย ข กับ นาย ค, นาย ข กับ นาย ง, นาย ค กับ นาย ง จนครบทุกคนก็จะได้ข้อมูลมาเป็นตารางดังนี้
จากตารางแสดงให้เห็นว่า
นาย ก เหมือนกับ นาย ก เปะ เพราะค่าเป็น 1 หรือเหมือน 100 เปอร์เซ็นต์
นาย ก เหมือนกับ นาย ข ประมาณ 68.2793 เปอร์เซ็นต์
นาย ก เหมือนกับ นาย ค ประมาณ 42.4264 เปอร์เซ็นต์
นาย ก เหมือนกับ นาย ง ประมาณ 82.2192 เปอร์เซ็นต์
แสดงให้เห็นว่ารสนิยมในการดูหนังของ นาย ก คล้ายกับ นาย ง มากที่สุด ดังนั้นหาก นาย ง ชอบดูหนังเรื่องใหนก็เป็นไปได้ว่า นาย ก ชอบดูหนังเรื่องนั้นด้วยเช่นกัน

2 ความคิดเห็น:

  1. ขอบคุณมากครับที่แบ่งปันความรู้ ขอให้เจริญก้าวหน้าในศาสตร์ยิ่งขึ้นไปครับ

    ตอบลบ