Recommendations
Play around with the weights and settings to check out different resultsMap
Selected:
Weights
weighted avg rating from users who rated the diff
Overall multiplier for the descriptor scores provided in ../assets/descriptors.json
when ranked within settings.proximityMonths months of the seed
per nominator shared with the set
per mapper shared with the diff
how much higher the cohort rates the diff vs everyone else
share of the cohort vs everyone so big playerbases get less bump
pearson correlation of how similar users rated both diffs
how close the diffs are in star rating
Settings
abs(diff rank date - TARGET) <= window
max fraction of raters
avoid overfiltering cuz of the share settings
n = u need 50% of the cohortLift value
diminish the effect of cohort if the rater base is n large
exponent setting so 90% shared raters is more than twice vs 45%
similar to bayes avg, correlations are shrunk by n/(n+this)
diffs need at least this many shared raters to use cohort math
ignore candidates correlated below this (0 = anything negatively)
SR diff via fraction, so 0.5 = 50% of the diff's SR as the limit
Live Formulas
Pre-Filters (Candidates must pass all):
1. Must share at least one: Rater, Descriptor, Nominator, Mapper, or Correlation
2. n_c ≤ max(, × N)
1. Must share at least one: Rater, Descriptor, Nominator, Mapper, or Correlation
2. n_c ≤ max(, × N)
DB Variables:
Seed: The map you are looking at right now and selected above
Candidate: The map that will potentially be suggested
N: # of seed raters
n_c: # of seed raters that also rated the candidate map
CohortAvg: Average rating of the candidate map by the shared raters
GlobalAvg: Average weighted rating of the candidate map. This is the rating you see on the charts page for a beatmap
SeedMo: Ranked date for the seed map
CandMo: Ranked date for the candidate map
SeedSR: Seed map's star rating
CandSR: Candidate map's star rating
SharedNoms: # of nominators that are the same between the seed and candidate map
SharedMappers: The overlap of mappers between the seed and candidate maps
(SharedMappers / (SeedTotalMappers + CandTotalMappers - SharedMappers))
D: A sum of the weights of matching descriptors, or 0 if a diametrically opposed descriptor is found in the candidate map
Seed: The map you are looking at right now and selected above
Candidate: The map that will potentially be suggested
N: # of seed raters
n_c: # of seed raters that also rated the candidate map
CohortAvg: Average rating of the candidate map by the shared raters
GlobalAvg: Average weighted rating of the candidate map. This is the rating you see on the charts page for a beatmap
SeedMo: Ranked date for the seed map
CandMo: Ranked date for the candidate map
SeedSR: Seed map's star rating
CandSR: Candidate map's star rating
SharedNoms: # of nominators that are the same between the seed and candidate map
SharedMappers: The overlap of mappers between the seed and candidate maps
(SharedMappers / (SeedTotalMappers + CandTotalMappers - SharedMappers))
D: A sum of the weights of matching descriptors, or 0 if a diametrically opposed descriptor is found in the candidate map
Base Variables (Cohort variables degrade to 0 if n_c < ):
L (Cohort Lift) = (CohortAvg - GlobalAvg) × (n_c / (n_c + ))
C (Cohort Coverage) = max(0, 1 - (N / )) × (n_c / N)
T (Time Prox.) = max(0, 1 - (|SeedMo - CandMo| / ))
Corr (Shrunk R) = R × (n_c / (n_c + ))
P (SR Prox.) = max(0, 1 - (|SeedSR - CandSR| / (SeedSR × )))
L (Cohort Lift) = (CohortAvg - GlobalAvg) × (n_c / (n_c + ))
C (Cohort Coverage) = max(0, 1 - (N / )) × (n_c / N)
T (Time Prox.) = max(0, 1 - (|SeedMo - CandMo| / ))
Corr (Shrunk R) = R × (n_c / (n_c + ))
P (SR Prox.) = max(0, 1 - (|SeedSR - CandSR| / (SeedSR × )))
Total Recommendation Score (Stotal):
Stotal = (GlobalAvg × ) + (L × ) + ( × C) +
(D × ) + (T × ) + (SharedNoms × ) +
(SharedMappers × ) + (Corr × ) + (P × )
Stotal = (GlobalAvg × ) + (L × ) + ( × C) +
(D × ) + (T × ) + (SharedNoms × ) +
(SharedMappers × ) + (Corr × ) + (P × )
Results
Pick a map and hit Get Recommendations
