设计L1和L2距离函数来评估银行客户的相似性。每个客户都具有以下属性

时间:2018-02-09 05:19:45

标签: algorithm distance knn

我对下面的问题很难过。我不确定我是否正确,但无论哪种方式,如果有人有时间解释,我需要一些帮助进一步了解它,请做。

设计L1和L2距离函数以评估银行客户的相似性。每个客户都具有以下属性: - 年龄(顾客的年龄,这是一个最大年龄为90岁,最小年龄为15岁的实际数字) - Cr(“信用评级”),这是一个序数属性,其值为“非常好”,“良好”,“中等”,“差”和“非常差”。 - Av_bal(平均账户余额,这是一个平均值为7000的实数,标准差为4000)

  1. 使用L1距离函数计算以下2个客户之间的距离:c1 =(55,good,7000)和c2 =(25,poor,1000)。 [15分]
  2. 使用L2距离函数计算上述2个客户之间的距离

    使用L2距离函数计算上述2个客户之间的距离。 回答L1

    d(c1,c2)=(c1.cr-c2.cr)/ 4 +(c1.avg.bal -c2.avg.bal / 4000)*(c1.age-mean.age / std.age ) - (c2.age-mean.age / std.age)

1 个答案:

答案 0 :(得分:0)

这个问题,留下了一些解释空间。主要是因为未完全指定相似性。我将尝试解释标准方法是什么。

通常,在开始之前,您希望将值标准化,使它们在相同范围内变得粗糙。否则,您的相似性将由具有最大方差的特征支配。

如果您没有关于分布的信息,而只是您想要尝试将它们正常化为[0,1]的值的范围。对于您的示例,这意味着

  

norm_age =(age-15)/(90-15)

对于名义值,如果要使用L p -Norms,则要查找到序数值的映射。注意:这并不总是可行的(例如,颜色不能直观地映射到序数值)。在这种情况下,您可以像这样转换信用评级

cr = {0如果'非常好',1如果'好,2如果'中等',3如果'差',4如果'非常'}

之后你可以做与年龄相同的规范化

  

norm_cr = cr / 4

最后,对于正态分布值,您通常通过减去平均值并除以标准差来执行标准化。

  

norm_av_bal =(av_bal-7000)/ 4000

现在你已经规范了你的值,你可以继续定义距离函数:

  

L1(c1,c2)= | c1.norm_age - c2.norm_age | + | c1.norm_cr - c2.norm_cr |   + | c1.norm_av_bal - c2.norm_av_bal |

  

L2(c1,c2)= sqrt((c1.norm_age - c2.norm_age) 2 +(c1.norm_cr -   c2.norm_cr) 2 +(c1.norm_av_bal -   c2.norm_av_bal) 2