请问如何计算两个人的“相似度”?

现在有两个人的数据:

属性 ---- 张三 ---- 李四
年龄 ---- 28 ------ 30 (岁)
身高 ---- 170 ----- 175 (cm)
体重 ---- 65 ------ 68 (kg)
婚否 ---- 已婚 ---- 未婚
学历 ---- 本科 ---- 硕士

我希望算出一个数,在[0, 1]区间里,表示两人的“相似度”(0=一点不像,1=完全相同),请问该如何计算呢?谢谢大家!

阅读 4.2k
2 个回答

首先要针对具体的需求给每个属性响应的权重,比如:未婚、已婚属性和本科、硕士属性,然后对每个属性进行归一化。
假设:
本科 10 ,硕士 20,博士 30
已婚 0,未婚 1
张三:[28 170 65 0 10] 李四:[30 175 68 1 20]

计算余弦距离:
余弦距离

这样计算的距离可能与希望的不一致,因为,身高的数值大,未婚、已婚的数值小,可以在这个基础上给每个属性乘以一个权重,再进行计算

把已婚未婚01化,把学历量化。
这样一个人就是一个向量,问题转化为向量距离计算,常见的有欧式距离、马氏距离、余弦夹角等。
需要注意把每个量都要归一化,避免某个量影响太大(如身高值很大),也可以自己按需设计权重。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题