Набор данных RecoGym от? - PullRequest
       54

Набор данных RecoGym от?

0 голосов
/ 04 марта 2019

Я пытаюсь составить таксономию алгоритмов обучения путем подкрепления для системы онлайн-покупок (о которой у меня есть данные).

Для этого я решил использовать RecoGym, но не могу найти способ поместить в него свои собственные данные.Они чисто выдуманы?Есть ли способ для алгоритма подкрепления учиться только на основе исторических данных, которые у меня есть?

Я прилагаю код использования RecoGym, чтобы посмотреть, сможете ли вы его увидеть.

import gym, reco_gym

# env_0_args is a dictionary of default parameters (i.e. number of products)
from reco_gym import env_1_args

# you can overwrite environment arguments here:
env_1_args['random_seed'] = 42

# initialize the gym for the first time by calling .make() and .init_gym()
env = gym.make('reco-gym-v1')
env.init_gym(env_1_args)

# .reset() env before each episode (one episode per user)
env.reset()
done = False

# counting how many steps
i = 0 

while not done:
    action, observation, reward, done, info = env.step_offline()
    print(f"Step: {i} - Action: {action} - Observation: {observation} - Reward: {reward}")
    i += 1

# instantiate instance of PopularityAgent class
num_products = 10
agent = PopularityAgent(num_products)

# resets random seed back to 42, or whatever we set it to in env_0_args
env.reset_random_seed()

# train on 1000 users offline
num_offline_users = 1000

for _ in range(num_offline_users):

    #reset env and set done to False
    env.reset()
    done = False

    while not done:
        old_observation = observation
        action, observation, reward, done, info = env.step_offline()
        agent.train(old_observation, action, reward, done)

# train on 100 users online and track click through rate
num_online_users = 100
num_clicks, num_events = 0, 0

for _ in range(num_online_users):

    #reset env and set done to False
    env.reset()
    observation, _, done, _ = env.step(None)
    reward = None
    done = None
    while not done:
        action = agent.act(observation, reward, done)
        observation, reward, done, info = env.step(action)

        # used for calculating click through rate
        num_clicks += 1 if reward == 1 and reward is not None else 0
        num_events += 1

ctr = num_clicks / num_events


print(f"Click Through Rate: {ctr:.4f}")

Документ об окружающей среде здесь: https://arxiv.org/pdf/1808.00720.pdf

1 Ответ

0 голосов
/ 17 июня 2019

Данные чисто смоделированы, мы думаем, что это разумно, но это чисто суждение.С вашими данными из реального мира вы обнаружите, что у вас будет только журнал прошлых действий и того, насколько хорошо они выполнялись.Это затрудняет оценку алгоритмов, которые выполняют разные действия.Хотя вы можете использовать показатель обратной склонности (IPS), он часто будет неприемлемо шумным для многих важных приложений.

Роль RecoGym заключается в том, чтобы помочь вам оценить алгоритмы с использованием симулированного теста AB.В него включены несколько агентов, которые вы можете попробовать (и добавляются другие), но он не нацелен на создание готового решения вашей проблемы, а является песочницей, чтобы помочь вам протестировать и оценить алгоритмы.

...