Я хочу реализовать рекомендацию статьи, используя Q-learning в Python. Наш набор данных содержит, например, четыре категории статей, в том числе о здоровье, спорте, новостях и образе жизни, и 10 статей для каждой категории (всего 40 статей). Идея состоит в том, чтобы показать пользователю несколько случайных статей (например, пять статей, и они могут быть из любой категории) и получить его / ее отзыв. Затем агент изучает предпочтения (то есть категорию статьи) пользователя и снова рекомендует некоторые соответствующие статьи.
Чтобы сформулировать это как проблему RL, я знаю, что должен определить действия, состояния и функцию вознаграждения. Изучив несколько статей, я придумал:
Действие: рекомендация статьи;
Состояние: мне не очень ясно об этом, но из других статей я узнал, что состояние может быть:
а) след недавно изученных пользователем статей;
б) интерес пользователя (не уверен, как это может быть состояние);
Награда: очень простая награда. Может быть +1, если пользователь изучает рекомендуемую статью, или -1 для бесполезной рекомендации.
Что касается Q-обучения, я не уверен, как мне создать Q-таблицу, содержащую состояния в виде строк и действий в качестве столбцов.
Для других простых проблем с RL, таких как MountainCar, разработка q-таблицы не так уж и сложна, но то, как здесь не очень ясны состояния, меня смутило.
Буду очень признателен, если вы поможете мне предложить решение, чтобы сформулировать это как проблему RL и несколько строк кода, чтобы вдохновить меня, как начать его кодировать.