如何在 AWS 上部署机器学习推荐系统

How to Deploy ML Recommender System on AWS

我正在涉足 ML,并且能够学习教程并让它满足我的需要。这是一个使用 TfidfVectorizer 和 linear_kernel 的简单推荐系统。我 运行 对如何通过 Sagemaker 部署它有一个端点有疑问。

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel 
import json
import csv

with open('data/big_data.json') as json_file:
    data = json.load(json_file)

ds = pd.DataFrame(data)

tf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df=0, stop_words='english')
tfidf_matrix = tf.fit_transform(ds['content'])
cosine_similarities = linear_kernel(tfidf_matrix, tfidf_matrix)

results = {}

for idx, row in ds.iterrows():
    similar_indices = cosine_similarities[idx].argsort()[:-100:-1]
    similar_items = [(cosine_similarities[idx][i], ds['id'][i]) for i in similar_indices]

    results[row['id']] = similar_items[1:]

def item(id):
    return ds.loc[ds['id'] == id]['id'].tolist()[0]

def recommend(item_id, num):
    print("Recommending " + str(num) + " products similar to " + item(item_id) + "...")
    print("-------")
    recs = results[item_id][:num]
    for rec in recs:
        print("Recommended: " + item(rec[1]) + " (score:" + str(rec[0]) + ")")

recommend(item_id='129035', num=5)

作为起点,我不确定 tf.fit_transform(ds['content']) 的输出是模型还是 linear_kernel(tfidf_matrix, tfidf_matrix) 的输出。

我得出的结论是我不需要通过 SageMaker 部署它。由于最终 linear_kernel 输出是一个字典,我可以进行快速 ID 查找以找到相关性。

我让它在 AWS 上与 API Gateway/Lambda、DynamoDB 和 EC2 服务器一起工作,以收集、处理数据并将其插入 DynamoDB 以进行快速查找。不需要昂贵的 SageMaker 端点。