我正在尝试创建一个代理,根据给出最大奖励的状态选择一个动作。
为了简单起见,我会将其保留为两个动作和24个不同的状态。
状态是模仿一天中的小时,这两个动作是向用户显示的某些网页。
我仍在试图弄清楚如何给予奖励以及政策将如何取决于奖励。最合理的是:
在0和1之间将确定100%的概率。最有可能采取的行动是奖励最多的行动。
如果用户显示第1页(操作)并保留在其上(操作),那么第1页将获得奖励。
x =第1页为此状态的奖励金额= 1 y =第2页为此状态给出的奖励金额= 0
第1页+第2页= 1.0 偶然x =((x + y)/ x)= 1/1 = 1.0 偶然y =((x + y)/ y)= 1/0 = 0.0 第1页是该状态的正确动作的1.0次机会 0.0第2页是该状态的正确动作的可能性
如果在此状态下显示第1页,则由于奖励更高的风险,向用户显示第1页(操作)。但是,如果用户导航到第2页,那么第2页将获得奖励。
x =第1页为此状态的奖励金额= 1 y =第2页为此状态提供的奖励金额= 1
第1页+第2页= 1.0 偶然x =((x + y)/ x)= 2/1 = 0.5 机会y =((x + y)/ y)= 2/1 = 0.5 0.5页概率第1页是该状态的正确动作 第2页是该状态的正确动作的可能性为0.5
如果用户显示在第1页(操作)并停留在第1页,则第1页将获得其他奖励。
x =第1页= 2为此状态提供的奖励金额 y =第2页为此状态提供的奖励金额= 1
第1页+第2页= 1.0 偶然x = 1.0 /((x + y)* x)= 1.0 / 3 * 2 = 2/3 偶然y = 1.0 /((x + y)* x)= 1.0 / 3 * 1 = 1/3 2/3的可能性,第1页是该状态的正确操作 1/3的可能性,第2页是该状态的正确行动
当你看到它更新并学习时。
但是,只有在所有日子都相同的情况下,这才会起作用,我们知道它们并非如此。用户可以使用第1周第1页和下一周第2页以及该第1页之后的那一周等等。因此,还需要以某种方式找到一种模式。
我有以下输入数据(状态):
{
location: 'Möllevångstorget, 21424, Malmö',
weekday: 'monday',
time: '07:31'
}
可替换地:
{
lat: 55.591538,
lon: 13.007153,
timestamp: '2015-03-03 07:31'
}
或者:
{
lat: 55.591538,
lon: 13.007153,
timestamp: 1427864271 // unix epoch time
}
如您所见,您可以操纵输入。虽然包括位置和何时发生这一点很重要。
如前所述,寻找模式是我最担心的。我希望预测用户何时使用该应用程序(显示该页面),该状态是在用户使用该应用程序时创建的。
我可以看到的另一个问题是,让我们说用户在一周07:30使用该应用程序,然后在下一个使用它07:35而第三周使用它来自在相同的位置,算法应该能够确定用户(环境)将选择一个特定的页面(动作)。
基本上预测用户将选择的操作。
答案 0 :(得分:1)
我认为你不应该使用群集。您只需要实现良好的函数逼近。如果你有地理位置,只需将其反编码到国家。然后使用country&城市作为国家的输入,例如:您的功能可能最终成为:
is_america
is_africa
is_middle_east
is_new_york
is_morning
is_afternoon
etc
如果您的国家/地区列表变得过大,请考虑通过relational reinforcement learning
进行