我有一个包含多个项目对象的站点。每个项目都有(例如):
- 多个标签
- 多个类别
- 尺寸
- 多种类型
- 等等
我想编写一种方法来根据上述标准获取所有“类似”项目。我可以轻松地单独检索上述每个项目的类似项目(即类似规模的项目或共享同一类别的项目等),但我希望它更加智能,然后只选择具有上述所有共同点的项目,或至少具有上述一项共同点的项目。
理想情况下,我想权衡每个标准,即具有共同标签的项目比大小接近的项目更“相似”。具有两个共同标签的项目更相似比具有一个共同标签等的项目要多。
我可以采取什么方法(实践上和数学上)来做到这一点?
最佳答案
处理这个问题的常用方法(至少在机器学习中)是创建一个衡量相似性的指标 - A Jaccard metric考虑到您有类型、类别、标签等,但它们并不是真正的数字,所以这里似乎是一个很好的匹配。
一旦有了度量,您就可以使用 KD 树、vp 树或其他度量树结构来加快搜索相似项目的速度,前提是您的度量遵循三角不等式 ( d(a,b) < d(a ,c) + d(c, b) )
关于math - 基于某些加权标准计算 'similar'对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866011/