返回介绍

Filter

发布于 2025-02-22 11:29:55 字数 2227 浏览 0 评论 0 收藏 0

Filter 可以在评估时根据一定规则来过滤掉部分数据。 Filter 的过滤对象是由 recommender 产生的 recommendedList,recommendedList 由一组 recommendedItem 构成,每个 recommendedItem 表示为一个三元组:(userId itemId value)。 目前支持的过滤器为 GenericRecommendedFilter,其功能是返回 recommendedList 中包含指定 userId 或 itemId 的 recommendedItem,指定的 userId 和 itemId 在 GenericRecommendedFilter 中以列表的形式提前设置。 目前 Filter 仅支持在 Java 代码中使用。

GenericRecommendedFilter 过滤效果:

userIdList = {"1", "2"}
recommendedList = {
  {userId:1 itemId:1 value:1.0},
  {userId:1 itemId:2 value:2.0},
  {userId:1 itemId:3 value:3.0},
  {userId:2 itemId:1 value:4.0},
  {userId:2 itemId:2 value:5.0},
  {userId:2 itemId:3 value:6.0},
  {userId:3 itemId:1 value:7.0},
  {userId:3 itemId:2 value:8.0},
  {userId:3 itemId:3 value:9.0}
}
filtered recommendedList = {
  {userId:1 itemId:2 value:2.0},
  {userId:2 itemId:3 value:6.0},
  {userId:1 itemId:1 value:1.0},
  {userId:2 itemId:1 value:4.0},
  {userId:2 itemId:2 value:5.0},
  {userId:1 itemId:3 value:3.0}
}

GenericRecommendedFilter 使用示例:


// specify the userIds and itemIds for filter
userIdList = new ArrayList<>();
itemIdList = new ArrayList<>();
for (int i=1; i<=2; i++) {
  userIdList.add(Integer.toString(i));
  itemIdList.add(Integer.toString(4-i));
}

// generate recommendedList by recommender
Configuration conf = new Configuration();
Resource resource = new Resource("rec/cf/userknn-test.properties");
conf.addResource(resource);
DataModel dataModel = new TextDataModel(conf);
dataModel.buildDataModel();
RecommenderContext context = new RecommenderContext(conf, dataModel);
RecommenderSimilarity similarity = new PCCSimilarity();
similarity.buildSimilarityMatrix(dataModel);
context.setSimilarity(similarity);
Recommender recommender = new UserKNNRecommender();
recommender.setContext(context);
recommender.recommend(context);
List<RecommendedItem> recommendedItemList = recommender.getRecommendedList();

// filter the recommendedList with GenericRecommendedFilter
GenericRecommendedFilter filter = new GenericRecommendedFilter();
filter.setUserIdList(userIdList);
filter.setItemIdList(itemIdList);
recommendedItemList = filter.filter(recommendedItemList);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文