Examples
Examples
Try the starting example
- JSON Recommendations [item ID,historical interaction count]
- [["A",50],["B",10],["C",0]]
- Total historical interactions
- 1000
- Catalog size (count)
- 100
- Additive smoothing alpha
- 1
- Mean popularity surprisal (bits)
- 7.059335
- Per-recommendation surprisal (bits)
- [["A",4.43086246644],["B",6.64385618977],["C",10.1032878084]]
Try another scenario
- JSON Recommendations [item ID,historical interaction count]
- [["A",100],["B",20],["C",5]]
- Total historical interactions
- 1000
- Catalog size (count)
- 100
- Additive smoothing alpha
- 1
- Mean popularity surprisal (bits)
- 5.558124
- Per-recommendation surprisal (bits)
- [["A",3.44507632566],["B",5.71097038563],["C",7.51832530769]]
Calculation method
Calculation method
Mean popularity surprisal (bits)
sum(-math.log2((r[1]+d)/(b+d*c)) for r in a)/len(a)
Per-recommendation surprisal (bits)
J([[r[0],-math.log2((r[1]+d)/(b+d*c))] for r in a])
Symbols and units
- a
- JSON Recommendations [item ID,historical interaction count]
- b
- Total historical interactions
- c
- Catalog size (count)
- d
- Additive smoothing alpha
Use the units shown. A list keeps the order in which you enter its values. The symbol ^ means “raised to the power of”.
Calculation steps and notation
sum(list) adds all entries in the list.
Assumptions & limits
Assumptions & limits
- User-supplied popularity counts with alpha>0; counts≤total interactions, positive total. Popularity surprisal is a novelty proxy, not user-perceived novelty or recommendation utility. Supported limits: All numeric inputs must be finite. Only the explicitly described mathematical scenario is supported.
Are these inputs private?
These calculations run in your browser. A shared link contains the values you choose to share. Only questions submitted to the separate AI finder are sent to OpenAI.