Android移动应用程序的兴趣和基于位置的算法



我正在尝试在Android移动应用程序上工作,在该应用程序中,我有一个功能可以根据兴趣和位置找到匹配项。许多约会应用程序已经在执行某种功能,例如基于位置,性别和年龄等的Tinder匹配。

如果已经完成,我不想重新发明轮子。我已经在Google上进行了搜索,有些人建议将群集算法用于该算法,以使具有相似兴趣的人的聚类用户相似性算法

让我以这种JSON格式具有用于用户的数据

User1: {location: "Delhi, India", interests: ["Jogging", "Travelling", "Praying"] }
User2: {location: "Noida, India", interests: ["Running", "Eating", "Praying"] }
User3: {location: "Bangalore, India", interests: ["Exercise", "Visiting new places", "Chanting"] }

我正在编写一种匹配算法,该算法与标准低于标准 -

  1. 如果User1对"慢跑"有兴趣,而另一个用户2对"运行"感兴趣,那么慢跑和运行是一种练习,因此它们应该匹配配置文件,并且应该像它一样位置也是明智的,因为最近应该在顶部。

  2. 算法在大规模运行时应具有相当的性能。这意味着我想避免将每个用户分别与用户进行比较。对于N用户,这是O(n^2(操作。理想情况下,我想开发某种"得分",我可以孤立地为每个用户生成,因为这仅涉及一次循环一次。然后,我可以找到其他分数相似的用户,并根据该分数确定最佳匹配。

任何人都可以在firebase-cloud-functionfirebase-database的帮助下对我的某些实施建议。

我认为硬编码相似性是一种错误的方法。仅供参考,主要的搜索引擎都不依赖于此类映射。

一种更好的方法是成为更多数据驱动的方法。创建一个临时方法开始,一旦您拥有足够的数据构建机器学习模型来对匹配进行排名。这样,您就不必假设任何事情。

对于该位置,具有某种半径(最好是用户可以设置(并匹配半径内的人。

首先,我要说的是摆脱数据集中的冗余功能,慢跑和运行可能是1个功能,而不是2个功能,此后您也可以使用K-Means算法进行分组以无监督的方式数据要了解有关K均值的更多信息,您可以转到此链接:https://www.coursera.org/learn/machine-learning/lecture/93vpg/k-means-algorithm

当您构建在线系统时,它必须每天改善自己您可以观看此信息以了解有关在线学习的更多信息https://www.coursera.org/learn/machine-learning/lecture/abo2q/online-learning

也https://www.coursera.org/learn/machine-lelecture/dorhj/dorhj/stochastic-gradient-descent这个随机梯度将有助于知道。

这些是概念视频不会自己实施任何内容,您可以随时使用TensorFlow https://www.tensorflow.org/

之类的库

我知道这看起来很难理解,但是您需要这些知识才能构建自己的自定义推荐系统。

最新更新