具有惊喜SVD的推荐算法

Recommendation Algorithm with surprise SVD

提问人:Schorschii 提问时间:7/3/2023 更新时间:7/3/2023 访问量:62

问:

我正在尝试实现一种协作过滤算法,以获得对训练数据集中未出现的新用户的预测。但是,ChatGBT对此并没有真正的帮助。有没有另一种方法,在不重新训练模型的情况下,根据用户提供的 2 或 3 个他喜欢的项目来预测用户对数据集内所有项目进行评分。我对协作过滤相当陌生,对不起,也许这是错误的方法。我非常热衷于听取反馈。先谢谢你。

如果它有帮助,这是我目前的方法,可悲的是不包括新用户,所以它只是猜测,而不考虑提供的评级。

data = load_trainings_data()
        trainset = data.build_full_trainset()

        # Embed user preferences
        st.info("Embedding user preferences...")
        user_id = trainset.n_users
        user_ratings = [(user_id, trainset.to_inner_iid(item_id), 5) for item_id in selected_ids]
        trainset_new = trainset.build_testset()
        trainset_new += user_ratings

        # Use the SVD model to predict 
        item_ids = trainset.all_items()
        predictions = [algo.predict(user_id, item_id) for item_id in item_ids]

        # Rank and print the recommendations
        recommended_items = sorted(predictions, key=lambda x: x.est, reverse=True)
        top_recommendations = recommended_items[:10]  # Get top 10 recommendations

        for recommendation in top_recommendations:
            item_id = recommendation.iid
            print(f'Recommended item: {item_id}')

        print(f"Top 10 recommendations for user {user_id}:")
        for recommendation in top_recommendations:
            #item_id = trainset.to_raw_iid(recommendation.iid, True)
            print(f'Recommended item: {recommendation}')

        # Rank and print the recommendations
        st.info("Ranking recommendations...")
        recommended_items = sorted(predictions, key=lambda x: x.est, reverse=True)
        top_recommendations = recommended_items[:10]  # Get top 10 recommendations

        for recommendation in top_recommendations:
            item_id = recommendation.iid
            print(f'Recommended item: {item_id}')

        print(f"Top 10 recommendations for user {user_id}:")
        for recommendation in top_recommendations:
            #item_id = trainset.to_raw_iid(recommendation.iid, True)
            print(f'Recommended item: {recommendation}')
Python SVD 协作过滤

评论


答: 暂无答案