我想开发一个网站,可以根据它们的功能比较两种产品。
我想将特征作为属性存储在数据库中。例如,手机是一种产品,因此“屏幕类型”和“屏幕分辨率”是属性,它们的值可以是 LED/AMOLED 和 800x400/340x230。
数据库可以是手机/笔记本电脑/电视,但数据库只能用于一种产品类型。
我想知道是否有任何算法可以根据它们的属性找出两者中最好的?
任何建议/指针将不胜感激。
这是一个可能的算法,但它不适用于多个用户/客户,除非他们共享相同的偏好(和可支配收入!)。我在找公寓的时候大致做了这样的事情:
第 1 步:对于每个特征,将不同的选项映射到一个数值。我对手机屏幕了解不多,但假设您认为 AMOLED 屏幕比 LED 屏幕值 20%。已经是数字的值可以离散映射或使用方程映射。
第 2 步:给每个特征一个权重。
第三步:对每个特征,将权重乘以值;把这些加起来,你就有了每个产品的分数。得分最高的产品获胜。
例如,假设每部手机都有以下参数:
将每个参数映射到一个值,使得两倍有价值的东西高两倍:
Screen type: LED => 1.0, AMOLED => 1.2
Weight: w => 50/(w+3)
Screen size: (L,W) => sqrt(L^2 + W^2) / 3
Screen DPI: (L,W,X,Y) => sqrt((X*Y)/(L*W)) / 100
Battery life: T => T / 20
你的相对权重是:
Screen type: 3
Weight: 1
Screen size: 4
Screen DPI: 2
Battery life: 2
使用 800x400 像素、3x4 英寸、LED 屏幕、重 40 克、电池续航时间为 48 小时的手机 #1 计算得分:
3*1.0 + 1*50/(40+3) + 4*sqrt(3^2*4^2)/3 + 2*sqrt(800*400/(3*4))/100 + 2*48/20
= 28.23
使用 100x100 像素、2x1.5 英寸、AMOLED 屏幕、重 8 克、电池续航时间为 200 小时的手机 #2 的计算得分为:
3*1.2 + 1*50/(8+3) + 4*sqrt(2^2*1.5^2)/3 + 2*sqrt(100*100/(2*1.5))/100 + 2*200/20
= 33.3
所以第二部手机是“最好的”。其他参数,尤其是成本,可能应该包含在分数中。
准确的结果需要准确地映射到数字尺度和准确的相对权重——这不是一件容易的事,即使是自己决定也是如此。您可以允许用户设置自己的相对权重,也许......
如果您想为每个产品找到一个分数,您需要找到不好或不适合该类别的产品。wilson-score 区间计算出 5% 的错误率,您可以对产品进行排序。