如何计算具有异构属性的两个向量之间的相似度
How to compute a similarity between two vectors with heterogeneous attributes
我有一个优化问题,我有一组供应商 P
销售对象 Op
具有不同性能向量 Pv=[p1, p2, p3, ..., pn]
的不同类型和一组客户端请求 R
要求对象 Or
具有预期的性能向量 Er=[e1, e2, ..., en]
.
我想计算提供者的哪些对象足够接近客户在给定性能向量的情况下所请求的对象,我已经查看了一些措施,例如:欧几里得平方距离,但我不确定如何使用它由于性能向量的单位不同,即 p1 以秒为单位,p2 以美元为单位,依此类推...
任何人都可以阐明一些方法并提出方法吗?
您应该尝试的第一个想法是在比较之前独立地缩放每个特征。
例如,获取所有 p1
个样本,计算均值和标准差,然后将样本转换为 (s - mean)/std
。对每个特征执行此操作,除了那些已经是二进制 (0/1) 的特征。
那你可以先用欧几里得距离来分析点远不远。
相似性度量是不同的,但相似,你可以使用类似 e^(-distance(x, y))
的东西来获得 0 和 1 之间的相似性,还有其他度量也可以尝试。你应该在缩放数据上使用这些,而不是原始数据。
我有一个优化问题,我有一组供应商 P
销售对象 Op
具有不同性能向量 Pv=[p1, p2, p3, ..., pn]
的不同类型和一组客户端请求 R
要求对象 Or
具有预期的性能向量 Er=[e1, e2, ..., en]
.
我想计算提供者的哪些对象足够接近客户在给定性能向量的情况下所请求的对象,我已经查看了一些措施,例如:欧几里得平方距离,但我不确定如何使用它由于性能向量的单位不同,即 p1 以秒为单位,p2 以美元为单位,依此类推...
任何人都可以阐明一些方法并提出方法吗?
您应该尝试的第一个想法是在比较之前独立地缩放每个特征。
例如,获取所有 p1
个样本,计算均值和标准差,然后将样本转换为 (s - mean)/std
。对每个特征执行此操作,除了那些已经是二进制 (0/1) 的特征。
那你可以先用欧几里得距离来分析点远不远。
相似性度量是不同的,但相似,你可以使用类似 e^(-distance(x, y))
的东西来获得 0 和 1 之间的相似性,还有其他度量也可以尝试。你应该在缩放数据上使用这些,而不是原始数据。