0

我有一个 ALS 示例正在工作并提供看似准确的结果。让我感到困惑的是我在网上看到的其他例子,它们的做法有点不同。

例如https://gist.github.com/himanshk96/21594b9f49a8b3060ff1f00d0a0d8ec5,适合:

sparse_item_user = sparse.csr_matrix((data['event'].astype(float), (data['item_id'], data['visitor_id'])))

并调用推荐方法:

sparse_user_item = sparse.csr_matrix((data['event'].astype(float), (data['visitor_id'], data['item_id'])))

另一方面,我使用以下方法来拟合和调用推荐方法:

sparse_customer_item = sparse.csr_matrix((grouped_df['Quantity'].astype(float), (grouped_df['customer_id'], grouped_df['item_id'])))

我尝试了另一种方法,但结果不准确。难道我做错了什么?我的代码如下。

unique_customers = grouped_df.CustomerID.unique()
customer_ids = dict(zip(unique_customers, np.arange(unique_customers.shape[0], dtype=np.int32)))

unique_items = grouped_df.StockCode.unique()
item_ids = dict(zip(unique_items, np.arange(unique_items.shape[0], dtype=np.int32)))

grouped_df['customer_id'] = grouped_df.CustomerID.apply(lambda i: customer_ids[i])
grouped_df['item_id'] = grouped_df.StockCode.apply(lambda i: item_ids[i])

#sparse_item_customer = sparse.csr_matrix((grouped_df['Quantity'].astype(float), (grouped_df['item_id'], grouped_df['customer_id'])))
sparse_customer_item = sparse.csr_matrix((grouped_df['Quantity'].astype(float), (grouped_df['customer_id'], grouped_df['item_id'])))

model = implicit.als.AlternatingLeastSquares(factors=20, regularization=0.1, iterations=50)

alpha = 15
data = (sparse_customer_item * alpha).astype('double')
model.fit(data)

user_id = 2
recommended = model.recommend(user_id, sparse_customer_item[user_id])
print(recommended)
4

0 回答 0