CreateML Recommender Training Error: Item IDs in the recommender model must be numbered 0, 1, ..., num_items - 1

CreateML Recommender Training Error: Item IDs in the recommender model must be numbered 0, 1, ..., num_items - 1

我正在使用 CreateML 使用以下格式的隐式数据集生成推荐模型:用户 ID、项目 ID。数据以大约 40 万行的 CSV 格式加载到 CreateML。

尝试 'Train' 模型时,我收到以下错误:

Training Error: Item IDs in the recommender model must be numbered 0, 1, ..., num_items - 1

我的数据集采用以下格式:

"user_id","item_id"
"e7ca1b039bca4f81a33b21acc202df24","f7267c60-6185-11ea-b8dd-0657986dc989"
"1cd4285b19424a94b33ad6637ec1abb2","e643af62-6185-11ea-9d27-0657986dc989"
"1cd4285b19424a94b33ad6637ec1abb2","f2fd13ce-6185-11ea-b210-0657986dc989"
"1cd4285b19424a94b33ad6637ec1abb2","e95864ae-6185-11ea-a254-0657986dc989"
"31042cbfd30c42feb693569c7a2d3f0a","e513a2dc-6185-11ea-9b4c-0657986dc989"
"39e95dbb21854534958d53a0df33cbf2","f27f62c6-6185-11ea-b14c-0657986dc989"
"5c26ca2918264a6bbcffc37de5079f6f","ec080d6c-6185-11ea-a6ca-0657986dc989"

我已经尝试将 Item ID 和 User ID 都修改为枚举 ID,但我仍然收到训练错误。示例:

"item_ids","user_ids"
0,0
1,0
2,0
2,0
0,225
400,225
409,225
0,282
0,4
8,4
8,4

我在 CreateML UI 中和在 Swift 游乐场中使用 CreateML 时都收到此错误。我还尝试删除重复项并验证每列的最大 ID 为 (num_items - 1).

我已经搜索了有关 ID 集的确切要求的文档,但不幸的是。

提前感谢您帮助澄清此错误消息。

尝试将未命名的第一列添加到您的 csv 数据中,该列从 0 开始计算行 ... 项目数 - 1

喜欢

"","userID","itemID","rating"
0,"a","x",1
1,"a","y",0
...

我想今天添加此专栏后它开始为我工作。我在我的训练模型中使用 UUID 作为 userID 和 itemID。并确保按 itemID 对行进行排序,以便一个 itemID 的所有行彼此接近

我在 WWDC2020 期间与 Apple 的 CoreML 开发人员讨论了这个问题。他们将此描述为一个已知错误,将在即将推出的 OS (Big Sur) 中修复。此错误的解决方法是:

在 CSV 数据集中,为与所有项目交互的单个用户创建记录,并为与所有用户交互的单个项目创建记录。

在python中使用pandas,我基本上实现了以下内容:

# Find the unique item ids
item_ids = ratings_df.item_id.unique()

# Find the unique user ids
user_ids = ratings_df.user_id.unique()

# Create a 'dummy user' which interacts with all items
mock_item_interactions_df = pd.DataFrame({'item_id': item_ids, 'user_id': 'mock-user'})
ratings_with_mocks_df = ratings_df.append(mock_item_interactions_df)

# Create a 'dummy item' which interacts with all users
mock_item_interactions_df = pd.DataFrame({'item_id': 'mock-item', 'user_id': user_ids})
ratings_with_mocks_df = ratings_with_mocks_df.append(mock_item_interactions_df)

# Export the CSV
ratings_with_mocks_df.to_csv('data/ratings-w-mocks.csv', quoting=csv.QUOTE_NONNUMERIC, index=True)

使用此 CSV,我使用 CreateML 成功生成了 CoreML 模型。