该技能面向心理实验中“预测参与者下一选择”的任务,处理人类行为实验的文本转录,其中参与者每次作答以 <<KEY>> 形式记录,风格类似 Psych-101 / Psych-201 数据集。
用途:给定一个条目列表,每项包含 {study, history, options[, options_text]},history 是截至待预测作答的会话文本(含指导语、先前试次、参与者本人此前的 <<KEY>> 作答与结果),并可额外提供其他参与者的训练会话 {study, text, responses: [{pos, response, options}]}。交付物是按条目顺序排列的字符串列表,每个元素取自该项 options 中的合法键。
主要能力:
- 基线:众数预测,即取合法键中出现频率最高的先前作答(并列时取最近者,无则取第一个键),对应 scilib.psych.mode_prediction。
- 统一接口 fit_predict(items, train_sessions=None, method="auto", extra_items=None, seed=0, return_proba=False, population_prior=True, llm_answers=None, llm_weight=0.35),支持 mode、last、kernel、qlearn(带 softmax 与 perseveration 的 Q 学习)、wsls、personal(三种历史模型的 BIC 加权混合)、gbdt(基于历史特征的 LightGBM,用训练会话与条目历史拟合)、auto(personal 与 gbdt 各半)、all(返回所有方法键的字典);操作符为 choice_next_response_predict。
- 交叉验证:cross_validate(sessions, method, n_splits=4, per_session=4, seed=0, extra_methods=()) 按研究给出相对众数基线的折外准确率,操作符 choice_model_cross_validate,并提供 make_pseudo_items、parse_trials、trial_features 等辅助函数。
- 语言模型路线:build_prompts(items, style="transcript" | "long" | "model") 构建提示,在画布上使用 llm 节点(模板 {item},解析为 text,小 max_tokens;代码节点不能调用模型),再经 parse_answers(replies, items) 解析,最后用 fit_predict(..., llm_answers=[answers]) 把答案占比混入模型概率;操作符为 choice_llm_prompts、choice_llm_answers_parse。语言模型可读取指导语文本,而历史模型不读取。
- 路由建议:对出现在训练会话中的研究,使用按参与者的 qlearn(或经 cross_validate 选出的 qlearn、personal、wsls 中最优者);对未出现的研究,使用池化的 gbdt:调用 fit_predict(method="all") 并按条目的 study id 是否出现在训练会话中逐条选择方法。仅在可见的 study id 上切换,绝不依据目标值切换。
使用方式:调用 scilib.psych.fit_predict 等接口,按需选择方法或语言模型混合路线;评估使用微平均准确率,非法键计为错误。
适用场景:心理实验行为数据的下一选择预测、方法基线与模型对比、按参与者分组的交叉验证评估,以及结合语言模型读取指导语信息的预测增强。
限制与规则:只使用作答标记之前的文本,不得使用后续试次或记录的目标值;交叉验证的折必须按参与者分组,除条目自身先前历史外不得用被预测条目拟合;输出必须只含合法键,并按要求的顺序与长度。少量条目的准确率噪声较大,建议采用按参与者分组的交叉验证。