参考文章:Spark(二)—— 标签计算、用户画像应用

一、标签计算

数据

86913510 {"reviewPics":[],"extInfoList":null,"expenseList":null,"reviewIndexes":[1,2],"scoreList":[{"score":5,"title":"环境","desc":""},{"score":5,"title":"服务","desc":""},{"score":5,"title":"口味","desc":""}]}86913510    {"reviewPics":null,"extInfoList":[{"title":"contentTags","values":["午餐","分量适中"],"desc":"","defineType":0},{"title":"tagIds","values":["684","240"],"desc":"","defineType":0}],"expenseList":null,"reviewIndexes":[2],"scoreList":null}77287793    {"reviewPics":null,"extInfoList":null,"expenseList":null,"reviewIndexes":[1,2],"scoreList":null}77287793  {"reviewPics":null,"extInfoList":[{"title":"contentTags","values":["干净卫生","服务热情"],"desc":"","defineType":0},{"title":"tagIds","values":["852","22"],"desc":"","defineType":0}],"expenseList":null,"reviewIndexes":[1,2],"scoreList":null}

处理过程分析

(1) 第一步:筛选出extInfoList不为空的记录,并去除values中的标签值

获取到的记录形式

86913510 午餐,分量适中
77287793 干净卫生,服务热情

(2) 第二步:分离标签

获取到的记录形式

86913510 午餐,1
86913510 午餐,1
86913510 分量适中,1
77287793 干净卫生,1
77287793 服务热情,1

(3) 第三步:统计标签

获取到的记录形式

JSON解析代码

public class JsonParse {public static String parseTag(String json) {JSONObject jsonObject = JSONObject.parseObject(json);JSONArray extInfoList = jsonObject.getJSONArray("extInfoList");if (extInfoList == null) {return "";}for (Object obj : extInfoList) {JSONObject jsonObject1 = (JSONObject) obj;if (jsonObject1.getString("title").equals("contentTags")) {String array2 = jsonObject1.getString("values");return array2.replace("[", "").replace("]", "").replace("\"", "");}}return "";}
}

Spark统计代码 

object TagCompute {def main(args: Array[String]): Unit = {// 创建Spark配置对象val conf = new SparkConf().setMaster("local[4]").setAppName("MyApp")// 通过conf创建scval sc = new SparkContext(conf)// 读取文件val rdd1 = sc.textFile("/Users/opensource/dev-problem/source/temptags.txt");// 计算val rdd2 = rdd1.map(line => line.split("\t")).map(e => e(0) -> JsonParse.parseTag(e(1)))// (77287793,环境优雅,性价比高,干净卫生,停车方便,音响效果好).filter(e => e._2.length > 0)// (70611801,["环境优雅","性价比高"]).map(e => e._1 -> e._2.split(",")(0))//     (77287793,环境优雅,性价比高,干净卫生,停车方便,音响效果好).flatMapValues(e => e)// ((70611801,价格实惠),1).map(e => (e._1, e._2) -> 1)// ((78824187,干净卫生),7).reduceByKey(_ + _)// (73963176,List((环境优雅,6))).map(e => e._1._1 -> List((e._1._2, e._2)))// (83084036,List((干净卫生,1), (价格实惠,1))).reduceByKey(_ ::: _)// (79197522,List(服务热情:2, 干净卫生:1, 技师专业:1, 体验舒服:1, 放松舒服:1, 价格实惠:1)).map(e => e._1 -> e._2.sortBy(_._2).reverse.take(10).map(a => a._1 + ":" + a._2.toString));/* * 85648235 List(味道赞:17, 服务热情:15, 干净卫生:13, 上菜快:12, 回头客:11, * 性价比高:10, 体验好:9, 价格实惠:8, 环境优雅:8, 分量足:7) */rdd2.map(e => e._1 + "\t" + e._2).foreach(println);}
}

二、用户画像

用户画像介绍

根据用户的信息和行为动作,用标签将用户的特征描绘出来,用于描绘的标签就是用户画像。这些标签都是根据一些行为来推算出来。构建用户画像的核心工作,主要是利用存储在服务器上的海量日志和数据库里的大量数据进行分析和挖掘,给用户贴“标签”,而“标签”是能表示用户某一维度特征的标识。

用户画像作用

挑战

  • 记录和存储亿级用户的画像
  • 支持和扩展不断增加的维度和偏好
  • 毫秒级更新
  • 支撑个性化推荐、广告投放、精细化营销的产品

用户画像处理流程

  1. 明确问题、需求、数据预处理
  2. 数据清洗、缺失值处理、噪声数据

特征工程

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。

特征:对解决问题有帮助的属性。

特征的提取、选择与构造:

  • 特征提取

    • 业务日志
    • WEB公开数据抓取
    • 第三方合作
  • 针对所解决的问题选择最有用的特征集合
  • 通过相关系数计算特征的重要性
    • 人工筛选
    • 算法筛选:Random Forest
    • 维度过多,PCA自动降维

模型与算法

用户画像系统架构

用户画像实现

(1) 实例一:性别判断

性别判断属于数据挖掘中分类问题。

(2) 需求描述

根据用户数据判断用户性别。

(3) 已知数据

  • 数据1:用户使用App的行为数据
  • 数据2:用户浏览网页的行为数据

(4) 实现代码

object UserPicture {def main(args: Array[String]): Unit = {// 创建Spark配置对象val conf = new SparkConf().setMaster("local[4]").setAppName("MyApp");val spark = SparkSession.builder().appName("Spark SQL basic example").config(conf).getOrCreate();// 创建训练集val training = spark.createDataFrame(Seq((1.0,Vectors.dense(2.0,1.1,0.1)),(1.0,Vectors.dense(2.0,1.1,0.1)),(1.0,Vectors.dense(2.0,1.1,0.1)),(1.0,Vectors.dense(2.0,1.1,0.1)))).toDF("label","features");val lr = new LogisticRegression();println(lr.explainParams())// Set the maximum number of iterations.lr.setMaxIter(10)//Set the regularization parameter..setRegParam(0.01)// Fits a model to the input data.val model1 = lr.fit(training)var paramMap = ParamMap(lr.maxIter -> 20).put(lr.maxIter,30).put(lr.regParam -> 0.1,lr.threshold -> 0.55)// The parent estimator that produced this model.// extractParamMap with no extra values.println(model1.parent.extractParamMap())}
}

参考文档

Spark大数据互联网项目实战推荐系统
腾讯防刷负责人:基于用户画像大数据的电商防刷架构
让机器读懂用户--大数据中的用户画像
大数据开发用户画像案例分析
大数据工程师 dmp用户画像系统开发项目(完)
Spark大数据互联网项目实战推荐系统(全套)

spark标签计算及用户画像应用相关推荐

  1. 数据标签体系与用户画像

    1.什么是数据标签体系? 用户的数据标签是指通过对用户的社会属性.消费习惯.偏好特征等多个维度的数据进行采集和处理,实现对用户或产品属性特征的刻画,并对这些特征进行分析.统计,挖掘潜在价值,从而抽象出 ...

  2. 用户画像标签维度_用户画像详解:关于用户画像的What、Why、How

    今天谈谈大家经常听到却又一肚子懵逼的"用户画像". What 基础概念扫盲 用户画像(User Profile):也称人物角色,是根据用户社会属性.生活习惯和消费行为等信息而抽象出 ...

  3. 用户画像标签维度_用户画像标签 数据挖掘系列:用户头像的用户标签

    在寻找人的业务场景中,用户可以直接找到各个垂直类别的专家帐户,并且可以通过跟踪专家帐户直接获取各个垂直类别的高质量内容.在热门的微博业务场景中,内容流来自垂直类别的专家帐户:在发布特定类别的高质量内容 ...

  4. 干货|一文从0到1掌握用户画像知识体系

    作者介绍 上海@王松 客户数据平台产品经理 欢迎交流学习 00 引言 前段时间上了一个用户画像的课程,授课老师是<用户画像:方法论与工程化解决方案>的作者赵宏田老师:另外也研读了一些讲述用 ...

  5. 推荐 :一文从0到1掌握用户画像知识体系

    00 引言 前段时间上了一个用户画像的课程,授课老师是<用户画像:方法论与工程化解决方案>的作者赵宏田老师:另外也研读了一些讲述用户画像的文章. 基于对上述学习内容的理解,同时结合工作实践 ...

  6. 一篇文章带你从0到1掌握用户画像知识体系

    00.引言 前段时间上了一个用户画像的课程,授课老师是<用户画像:方法论与工程化解决方案>的作者赵宏田老师:另外也研读了一些讲述用户画像的文章. 基于对上述学习内容的理解,同时结合工作实践 ...

  7. 手把手教你做用户画像:3种标签类型、8大系统模块

    导读:在互联网步入大数据时代后,用户行为给企业的产品和服务带来了一系列的改变和重塑,其中最大的变化在于,用户的一切行为在企业面前是可"追溯""分析"的.企业内保 ...

  8. 标签体系下的用户画像建设小指南

    点击上方蓝色字体,选择"设为星标 一. 什么是用户画像 用户画像是指根据用户的属性.用户偏好.生活习惯.用户行为等信息而抽象出来的标签化用户模型.通俗说就是给用户打标签,而标签是通过对用户信 ...

  9. 如何构建用户画像,给用户打“标签”?

    前言 大家好,我是云祁! 和大家分享一本近期读完的非常不错的技术书籍,赵宏田老师的<用户画像:方法论与工程化解决方案>. 用户画像是目前在技术公司广泛使用的技术,是根据客户人口统计信息.社 ...

  10. 深度解析用户画像标签体系构建方法

     标签体系概览 1.什么是对象 2.什么是标签? 标签是人为设定的.根据业务场景需求,对目标对象运用一定的算法得到的高度精炼的特征标识. 标签是对对象某个维度特征的描述与刻画,是某一种用户特征的符号表 ...

最新文章

  1. python基础题-Python基础30道测试题(字符串相关)
  2. leetcode874
  3. 定了!2021年数据中心《能源管理师》考试,全国报名入口!
  4. Alpha版使用说明
  5. C#刷遍Leetcode面试题系列连载(3): No.728 - 自除数
  6. 计算机相关货品类别,工业计算机的种类以及产品供应链
  7. excel文件存入mysql_解析excel文件并将数据导入到数据库中
  8. Java Map遍历方式的选择
  9. 敏捷结果30天练习即将开始
  10. 表格嵌套_HTML |2| 表格与列表
  11. IDEA 和 Eclipse 使用对比
  12. 如何证明NP-Hard Problems
  13. kindlefire刷安卓系统_[原创]安卓4.0完美运行 Kindle Fire刷机教程
  14. 【建议收藏】三月份开始,二十二个爬虫项目,无套路,附上源码 全部拿走
  15. Subclipse使用说明
  16. 游戏制作之路(51)地形细节工具
  17. 手机卫星定位系统_中国北斗:已启用全球定位服务,我们如何使用手机北斗卫星导航?...
  18. 阿里云域名配置以及https证书(ssl证书)配置
  19. 三大思维导图软件比较
  20. word中统一修改mathtype公式和大小对应

热门文章

  1. excel文件因服务器未响应无法打开,excel打开显示兼容模式(未响应)
  2. 《老子五千言》 ——《道德经》帛书版(珍藏原著)
  3. Vuex持久化,刷新,vuex-along最详细教程
  4. 【转载】Excel中批量填充公式有5个方法
  5. MyBatis--逆向工程
  6. 卡方检验的统计量推导_卡方检验的卡方检验法的基本原理和步骤
  7. 爬虫抓图2022年全网最新方法,这一次终于是4k高清美图
  8. python读取nc文件并转换成csv_python - 在python 3中读取Crystal Report .rpt文件并将其转换为.csv或.xlsx - 堆栈内存溢出...
  9. Axure8.0使用教程
  10. SSRS----Report Builder 同时冻结首行和前两列的一种方法