常见离线策略评估方法的实现。
项目描述
线下政策评估
Python中常见的离线策略评估方法的实现和示例。有关离线策略评估的更多信息,请参阅本教程。
安装
pip install offline-evaluation
用法
from ope.methods import doubly_robust
获取之前策略生成的一些历史日志:
df = pd.DataFrame([
{"context": {"p_fraud": 0.08}, "action": "blocked", "action_prob": 0.90, "reward": 0},
{"context": {"p_fraud": 0.03}, "action": "allowed", "action_prob": 0.90, "reward": 20},
{"context": {"p_fraud": 0.02}, "action": "allowed", "action_prob": 0.90, "reward": 10},
{"context": {"p_fraud": 0.01}, "action": "allowed", "action_prob": 0.90, "reward": 20},
{"context": {"p_fraud": 0.09}, "action": "allowed", "action_prob": 0.10, "reward": -20},
{"context": {"p_fraud": 0.40}, "action": "allowed", "action_prob": 0.10, "reward": -10},
])
P(action | context)
定义一个在新策略下计算的函数:
def action_probabilities(context):
epsilon = 0.10
if context["p_fraud"] > 0.10:
return {"allowed": epsilon, "blocked": 1 - epsilon}
return {"allowed": 1 - epsilon, "blocked": epsilon}
进行评估:
doubly_robust.evaluate(df, action_probabilities)
> {'expected_reward_logging_policy': 3.33, 'expected_reward_new_policy': -28.47}
这意味着新策略比日志记录策略差得多。与其在线 A/B 测试这个新策略,不如先离线测试一些其他策略。
有关更详细的教程,请参阅示例。
支持的方法
- 反向倾向评分
- 直接法
- 双重稳健(纸)