私のファクト テーブルにはスパース データが含まれており、3 つの列 (user、movie、normalized_score ) があります。例:
('u1', 'm3', 0.3) ('u1', 'm4', 0.1) ('u1'、'm7'、0.6) ('u2', 'm1', 0.33) ('u2', 'm3', 0.33) ('u2', 'm7', 0.33) ('u3', 'm2', 0.6) ('u3', 'm6', 0.4) ...
ご覧のとおり、ユーザーごとに sum(normalized_score)=1 です。
私は 2 つの次元を持っています:
- User_info (user, Cat_Level1, Cat_Level2)
-Movie_info (movie, Genre_Level1, Genre_Level2)
平均スコアで上位の映画が必要です。平均の計算では、選択したディメンションから関連するすべてのユーザーが考慮されます。
たとえば、最下位レベルでは、average('m3')
上記は になります(0.3+0.3)/3
。分母は2 ではなく3であることに注意してください。
基本的に、選択したディメンションには対応するユーザー数があり、それが分母になります。
方法がわかりません。助けてください!