คำนวณค่า Sparsity
ALS ทำงานได้ดีกับชุดข้อมูลแบบ sparse มาดูกันว่าเมทริกซ์ ratings ว่างเปล่าอยู่มากแค่ไหน
ค่า sparsity คำนวณจากจำนวนเซลล์ในเมทริกซ์ที่มีคะแนนอยู่ หารด้วยจำนวนค่าทั้งหมดที่เมทริกซ์สามารถบรรจุได้ตามจำนวนผู้ใช้และรายการ (ภาพยนตร์) กล่าวคือ นำจำนวนคะแนนที่มีอยู่ในเมทริกซ์หารด้วยผลคูณของจำนวนผู้ใช้และจำนวนภาพยนตร์ แล้วนำผลลัพธ์ที่ได้ไปลบออกจาก 1 จะได้ค่า sparsity หรือเปอร์เซ็นต์ของเมทริกซ์ ratings ที่ว่างเปล่า
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้าง Recommendation Engines ด้วย PySpark
คำแนะนำการฝึกหัด
- คำนวณ
numeratorของค่า sparsity โดยนับจำนวน ratings ทั้งหมดที่มีอยู่ในเมทริกซ์ratings - คำนวณจำนวน
userIdsและmovieIdsที่ไม่ซ้ำกัน (distinct()) ในเมทริกซ์ratings - คำนวณ
denominatorของค่า sparsity โดยคูณจำนวนผู้ใช้กับจำนวนภาพยนตร์ในเมทริกซ์ratings - คำนวณและแสดงผลค่า sparsity โดยนำ
numeratorหารด้วยdenominatorแล้วลบออกจาก 1 และคูณด้วย 100 โดยที่1.0ถูกเพิ่มเข้ามาเพื่อให้ค่า sparsity แสดงผลเป็นทศนิยม ไม่ใช่จำนวนเต็ม
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Count the total number of ratings in the dataset
numerator = ____.select("____").count()
# Count the number of distinct userIds and distinct movieIds
num_users = ____.select("____").____().count()
num_movies = ____.select("____").____().count()
# Set the denominator equal to the number of users multiplied by the number of movies
denominator = ____ * ____
# Divide the numerator by the denominator
sparsity = (1.0 - (____ *1.0)/____)*100
print("The ratings dataframe is ", "%.2f" % sparsity + "% empty.")