mahout中canopy算法应用于广告点击用户类别识别

canopy算法基本思想如下:

  1. 将数据集向量化得到一个线性集合后放入内存,选择两个距离阈值:T1和T2,其中T1 > T2,T1和T2的值可以用交叉校验来确定;
  2. 从线性集合中任取一点P,用低计算成本方法快速计算点P与所有Canopy之间的距离(如果当前不存在Canopy,则把点P作为一个Canopy),如果点P与某个Canopy距离在T1以内,则将点P加入到这个Canopy;
  3. 如果点P曾经与某个Canopy的距离在T2以内,则需要把点P从线性集合中删除,这一步是认为点P此时与这个Canopy已经够近了,因此它不可以再做其它Canopy的中心了;
  4. 重复步骤2、3,直到线性集合为空结束。

通常用户id是没有任何逻辑关联的,如果是递增产生的id则只有时间线性关联。

所以直接对id采用canopy算法采样的话得出的集合基本没有什么意义。如果是任意生成的随机数字id则更加的恐怖,生成的数据特征集合不仅无意义,甚至还有问题。

而且广告点击用户id作为特征集合来计算粒度有些过细,因为一般情况下获取的用户id是匿名id,多数情况下为一次性数据,做用户集群的特征化分析意义不大。

如果粒度需要到用户级别,则要将用户id向区域和时间两个维度混合,使用户id具有地区化的维度特征或者时间维度特征,单一的用户id没有利于canopy算法分析的意义。

原文地址:https://www.cnblogs.com/AI001/p/3996894.html