支持多输出指向的人格匹配测验算法 公平排序输出方案咨询
人格测验多输出项公平排序算法实现方案
核心思路:消除不同输出项的总分天花板差异,用相对匹配度替代绝对得分排序
方案1:最大潜在得分归一法(最通用,无历史数据也可实现)
这是解决你提到的分值偏差问题的首选方案,实现逻辑简单且效果稳定:
- 预计算阶段:遍历整份测验的所有题目、所有选项,统计每个输出项可获得的最大潜在总分,记为
max_score[X](X为对应输出项,比如A/B/C)。如果存在减分项,同步统计每个输出项的最小潜在总分min_score[X] - 用户作答阶段:按规则累加每个输出项的实际得分,记为
actual_score[X] - 匹配率计算:对每个输出项计算匹配度,公式为
match_rate[X] = (actual_score[X] - min_score[X]) / (max_score[X] - min_score[X]),没有减分项的场景下可以简化为match_rate[X] = actual_score[X] / max_score[X] - 最终排序直接按
match_rate从高到低排列即可
举个直观例子:如果输出项A总潜在满分是100分,用户实际得70分,匹配率为70%;输出项C总潜在满分是50分,用户实际得40分,匹配率为80%,此时C的排序优先于A,完全消除了总分天花板带来的偏差。
方案2:单题加权归一法(适合题目权重不同的场景)
如果你的测验存在核心题、普通题的权重区分,可以用更精细的单题维度归一:
- 给每道题设置独立权重,比如核心人格题权重为2,边缘行为题权重为1
- 每道题作答后,先统计该题内每个输出项的得分,除以该题对应输出项的最大可获得分,得到单题匹配率,再乘以当前题目的权重,累加到总匹配分中
- 最终按总匹配分排序即可
方案3:百分位对齐法(适合有大量历史作答数据的场景)
如果已经积累了足够多的用户作答数据,可以用群体分布校准偏差:
- 基于历史数据,给每个输出项的得分绘制分布曲线,划分0-100的百分位区间
- 用户作答得到实际得分后,匹配到对应输出项的百分位数值,按百分位数值高低排序
这种方案的优势是还能同时消除题目设计不合理带来的其他偏差,比如某类选项被选中概率过高带来的得分倾斜。
注意事项
如果某道题的所有选项都不给某个输出项加减分,该题的分值不要计入对应输出项的max_score/min_score统计,避免分母偏大拉低匹配率。
内容的提问来源于stack exchange,提问作者user8811409
相关产品推荐
相关产品推荐

