问题可以简化为:已知部分参数,在大量数据中选出"相似"的数据
问题的核心是两个字 "相似" 怎么衡量 ?人可以靠感觉,但计算机只能处理数据。
这样就从"相识" 牵扯出了一个更有趣的话题 "度量"。
笛卡尔有句名言:如果我们能够用语言精确的描述,一个形状或者运动,那么我们也同样可以用数值模式来描述这个形状或者运动,并将其标示成一组方程。
套用在我们程序员身上就是:任何感觉都是一个变量,只要你能用自然语言说明白具体是个啥东西,我总归能写个函数来描述它。
那么我们现在就需要用我们的感觉为"相似"写一个方程,比如:
function similar (a,b){
return x*sizeSimilar(a,b) + y*priceSimilar(a,b) + z*describeSimilar(a,b)
}
当然这个函数的写法很多,取决于你对 "相似"这个概念的理解,这是最考验人观察能力的地方,大学有个竞赛"数学建模" 核心玩的就是它。往往你对世界的观察的越细致,考虑的维度越多,你的函数就越复杂。
在函数里x,y,z就是权重,对于权重的设置,也是一个很有趣的话题。这可能也是题主最关心的,怎么设置权重?我要上图了!
目前的作法方式有很多:
1.直接测量
比如这个
这是一家厂商在去年Epic 中国开发者大会上展示的例子。
他们为了渲染效果更逼