【问题标题】:How to integrate a recommendation system into an Android app?如何将推荐系统集成到 Android 应用程序中?
【发布时间】:2015-10-26 08:50:48
【问题描述】:

我想在我的 Android 应用程序中添加一个推荐系统(特别是协作过滤)。我已经创建了后端 使用 django rest API。

现在我不确定我应该在哪里加入推荐引擎。我环顾四周并了解django-recommender 包,但我不确定它处理大量数据的能力如何。或者我应该选择一些大数据选项,我已经在 HPCC 平台上工作过。

如果是,我应该如何将它与我的应用程序集成。

【问题讨论】:

  • 请详细说明“数据量大”
  • 好吧,我不确定它以后会处理多少数据。我只是小心翼翼地避免将来出现可伸缩性问题
  • 我现在不会担心它。我不知道您使用的是哪个数据库,但 Postgres/mySql 可以轻松处理数百万条记录,这就是它们的目的,HPCC 听起来有点矫枉过正。您最终会花费太多时间来使您的应用程序可扩展。在基本 SQL 数据库无法处理负载量之前需要一段时间。
  • 好酷,我正在使用 postgres db,所以对于协同过滤实现,我应该选择基于 django 的库,如 django-recommender 或crab 吗??
  • 似乎 django-recommender 不再被开发(最后一次签入是在 2008 年),所以不推荐它。寻找其他解决方案或构建自己的解决方案

标签: android django recommendation-engine collaborative-filtering


【解决方案1】:

首先,您需要准备好 API,并实现所需的推荐算法(引擎)。通常通过向端点发送 HTTP 请求从您的 Android 应用程序访问此 API(请参阅how to send HTTP requests in Android)。

现在有两种方法可以访问推荐引擎。

  1. 自己构建 - 这通常涉及对多种方法进行广泛研究、学习新的编程语言(例如 Neo4J 等)以及实施和托管此引擎(月费可能相当高)​​

  2. 利用 推荐算法即服务 库,例如 Abracadabra Recommender API。设置非常简单:您只需向 API 发送 HTTP 调用即可训练您的模型并接收建议。 View the docs.

借助 Abracadabra Recommender API,在使用 Java 时,您首先将数据添加到您的模型中:

// These code snippets use an open-source library. http://unirest.io/java
HttpResponse<JsonNode> response = Unirest.post("https://noodlio-abracadabra-recommender-systems-v1.p.mashape.com/add/subjects?recommenderId=rec1&subjectId=See+docs")
.header("X-Mashape-Key", "<required>")
.header("Accept", "application/json")
.header("Content-Type", "application/json")
.asJson();

然后您通过评分或喜欢主题(例如电影)来训练模型:

// These code snippets use an open-source library. http://unirest.io/java
HttpResponse<JsonNode> response = Unirest.post("https://noodlio-abracadabra-recommender-systems-v1.p.mashape.com/rate/subject?recommenderId=rec1&subjectId=gameofthrones&subjectWeight=10&userId=user1")
.header("X-Mashape-Key", "<required>")
.header("Accept", "application/json")
.header("Content-Type", "application/json")
.asJson();

完成后,您会收到基于基于内容、协作或混合过滤的建议,如下所示:

// These code snippets use an open-source library. http://unirest.io/java
HttpResponse<JsonNode> response = Unirest.post("https://noodlio-abracadabra-recommender-systems-v1.p.mashape.com/recommend?method=content&recommenderId=rec1&userId=user1")
.header("X-Mashape-Key", "<required>")
.header("Accept", "application/json")
.header("Content-Type", "application/json")
.asJson();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-28
    • 2013-08-16
    • 1970-01-01
    • 2014-06-10
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    相关资源
    最近更新 更多