PersonasTree

用户画像技术研究

基于用户画像的典型的场景 1: 搜索引擎 在搜索的时候考虑用户的画像标签,返回用户感兴趣的内容。比如同一个关键字“诸葛亮”, 王者荣耀的爱好者搜索的时候应该返回“诸葛亮”相关的内容,比如如何加“铭文”,如何“五杀”, 而历史爱好者搜索的时候,应该返回三国相关的内容。
  2: 推荐系统
      推荐系统可以根据用户的喜好和特征,也就是用户的画像,推荐相关的内容。比如,给一个
    用户定位的画像是美妆达人,那么就应该给她多推送一些面膜之类的东西,而不是一堆零食。
数据来源
      用户画像的数据来源主要包括两个方面:
          1)属性数据
             这部分数据一般是用户的注册信息,也可以是从其他数据中分析得出的,比如生日,住址,爱好等。
          2)行为数据
             这部分数据一般都是用户的访问日志记录的行为数据,比如常用的一些后端日志数据,
             前端埋点数据等等。

      通过这两部分数据,就能刻画出用户的画像,其实就是给用户打上一个标签,比如高富帅,白富美。
数据特性
      1)在用户的数据中,属性数据一般不会改变,但是行为数据是随时会发生改变的,这部分数据
         应该动态的更新到用户的画像上。
      2)时间上,比如最近下雨,用户想购买雨伞,如果几天后才捕捉到用户的需求,此时天已经
         放晴;另一方面,空间上,用户在不同的领域喜好不同,可能在新闻领域是个军事迷,但是在
         网购时,优势一个小清新,因此需要考虑不同空间用户不同的需求场景,刻画对应的画像。

用户画像建模
     用户的画像分为定量画像和定性画像,
         1)定性画像
            是指在小规模的数据中分析出用户的画像,比如问卷调查,访谈等
         2)定量画像
            是在大规模的数据中分析,比如日志等。 
知识工程
      需要领域专家配合来做机器智能的分析。
      知识工程的大体过程为:
          知识的获取-->验证-->表示-->推论-->解释和理由

      在用户画像中,就是配合用户和物品的属性,建立对应关系,这部分的对应关系需要知识专家进
      行鉴别推理和构建。比如有一些“专家”会把电影分为几类,爱情片,动作片,科幻片,恐怖片等,
      这些都是需要领域专家来设定的,而不是靠人工分层分类的。
构建的过程
      在构建用户画像时,大致可以按照下面的步骤:
          1)构建领域词汇
             不同的领域会有不同的词汇,描绘人的,电影的,书籍的词汇都是不同的。这部分参考
          同类的其他产品,如果是独创的领域,就需要这个领域资深的“玩家”来定义。
          2)确定分类之间的层次
             画像也是由层次的,比如电影的里面人分为演员,导演,观众等,需要对标签归类处理
          3)定义属性
             为不同的画像定义属性,包括对象属性和数值属性,比如在电影的场景中,对象属性
          是上映的时间,导演,数值属性是观看量,时长等。
          5)定义实例
             实例就是最终的画像,是由分类和属性组成的
          6)定义约束
             这个是描述一个物品的规则,比如电影(名称,类型,时长,导演,主演)等等属性组
          成,那么任何一个电影都可以由这种方式来定义。

计算用户画像之间的相似度,参考公式

群体用户画像
      用户画像是用来描述目标用户的画像,而群体用户画像则是描述一类人的,比如成熟稳重型,可爱萝莉型。
          1)获取用户画像
          2)计算用户画像的相似度
          3)用户画像聚类
          5)群体用户画像生成。

定义用户画像之间的相似度
      如上图:
          其中wk标识第k个画像的权重,比如在电影里面,用户喜欢的电影类型比重要比电影的时长
      重要的多,在计算相似度的时候权重也应该更大一些。

      
      计算相似度有很多种方法:
          比如:
              1)欧式距离
              2)曼哈顿距离
              3)夹角余弦
              5)皮尔逊相关系数
              6)杰卡德距离
          每一种都有自己适合的场景。

画像聚类
      画像聚类的方式由很多,比如K-means,原理就是随机几个点,看各个点的数据跟哪个点接近,
      就归为哪一类。然后不断的调整中心点,达到最终聚合的效果。       
用户画像的存储
    用户画像有很多种表示方法,比如:
      1)关键词法
         用一堆的关键词描述画像,这种方式最容易理解
      2)评分矩阵法
         用二维矩阵的方式,通过评分表示,这种在协同过滤器中很常见
      3)向量空间表示法
         这种是基于向量的方式描述画像
      5)本体表示法

      不同的表示方法,对于存储的方式来说,也会不同
       
      一般用户画像像常用的存储引擎有:
           1)关系型数据库,通过中间表的方式存储用户与画像之间的关系,优点是查询块,缺点是数据量大的时候扛不住
           2)Nosql数据库,常见的就是KV键值数据库,如Redis, 列数据库Hbase,文档数据库
           Mongodb 图数据库 neo4j,每种数据库都有自己适合的场景
           3)数据仓库 数据仓库是一种面向主题的存储,可以更好的解决领域分析的问题,而且他
           保留了数据的时间变化,对于分析历史来说,非常有帮助,但是不适合实时查询。
画像的更新
     1)设置更新的条件,比如购买达到1万元,立马升级VIP标识
     2)设置固定的时间周期更新画像,比如每天凌晨跑一个更新画像的定时任务
     3)从增量的数据中计算画像,然后对比旧的数据,考虑是否更新用户的画像。