Признаки (фичи) данных нужно представлять правильно. Математика сетей такова, что если Вы представляете признак числом, то наблюдения со значениями признака 5 и 4 будут "ближе", чем, например, 5 и 100. Но если признак — это идентификатор группы (т.н. категориальный признак) пользователя, то их числовая близость ничего не значит.
Аналогично с выходом. Если предсказывать одно число, то это эквивалентно предположению, что предсказать 21 вместо 20 не так страшно, как выдать 1000. Опять же, для категориальных признаков это неправда.
Итого, если вход состоит из 20 категориальных признаков, то каждый признак нужно заменить на множество новых, получаемых one-hot-кодированием (так же известным как dummy variables): для каждого значения такого признака создаётся новый признак-индикатор, равный 1 только если соответствующий признак данного наблюдения равен соответствующему значению.
Аналогично с выходом.