machine-learning - 使用自定义效用函数进行分类
问题描述
我有一个问题涉及随着时间的推移优化操作:
- 假设我有一组输入变量
X
,其中每个变量在每个X_i_t
时间点都有一个值t = 0 ... T
。 - 对于每个时间点,我想选择一
a_t
组动作中的一个动作A
, - 使得效用函数
U(a0, ..., a_T)
最大化。
请注意,效用函数没有封闭形式的解决方案,其值取决于整个动作序列a_0 ... a_T
。
我将如何实现这样的事情?我对可以用来查找相关文献的关键字非常满意。我不需要完整的解决方案。- 虽然如果有人可以指向我执行此操作的 python sklearn 函数,我绝对不会拒绝...
我的第一个直觉是“逻辑回归”,但无法a_t
在 time为动作分配“正确标签” t
,因为效用取决于时间序列中早晚采取的动作。
解决方案
如果您打算将神经网络与 TensorFlow 或 Pytorch 一起使用,那将很容易。只要您可以U
在框架内表达函数并且效用函数合理地接近连续,您就可以将效用反向传播到网络。您只需要求优化器最大化效用,仅此而已。
如果效用函数是离散的,它会变得很棘手,但您可以尝试一些技巧。其中之一是REINFORCE 算法(蒙特卡洛策略梯度)。另一个非常流行的技巧是Gubmle softmax,它允许对离散动作进行采样并将错误传播到网络。
如果您打算使用不同的分类器(例如决策森林或其他),您可以尝试基于模仿学习的方法,例如SEARN 算法。
推荐阅读
- c# - nunit - 在类上使用多个 TestFixtureSource
- javascript - 如何从输入字段中获取 ID 并在 ReactJS 和 Axios 中通过该 ID 删除
- facebook - 自定义选项卡的测试模式 Facebook 页面
- python - 在列上使用多个条件来分配新列的值
- linux - 如何读取最新创建的文件|选择一个是最新的
- java - ClassNotFoundException(mysql-connector,jdbc)
- python-3.x - Bigquery Python API 不支持数组
- django - 如何将我的对象保存在另一个表中?
- java - 为什么需要自定义异常类
- javascript - 如何在 ace 编辑器中启用每个关键事件的自动完成功能?