【大数据技术与推荐系统(5)】用户画像系统
本文代码仓库地址:我的推荐系统学习求职之路
什么是用户画像系统
大数据时代人的数据化
什么是用户画像
用户画像的作用
构建用户画像系统
标签表示法
标签是特征空间中的维度
用户画像标签举例
用户画像系统的挑战
- 记录和存储亿级用户的画像
- 支持和扩展不断增加的维度和偏好
- 毫秒级更新
- 支撑个性化推荐、广告投放和精细化营销等产品
用户画像系统流程
用户画像处理流程 - 明确问题和数据的匹配
- 追求需求和数据的匹配
- 明确需求
- 分类、聚类、推荐和其他
- 数据的规模、重要特征的覆盖度等
- 数据预处理
- 数据集成,数据冗余,数值冲突
- 数据采样
- 数据清洗、缺失值处理和噪声数据
- 特征工程
- 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
- 特征:对所需解决问题有用的属性
- 特征的提取、选择和构造
- 针对所解决的问题选择最有用的特征集合
- 通过相关系数等方式来计算特征的重要性
- 人工筛选
- 有些算法输出特性:Random Forest
- 维度过多,PCA自动降维
- 特征提取
- 业务日志
- WEB公开数据抓取
- 第三方合作
- 特征处理
- 特征清洗
- 特征预处理:值处理、特征选择、特征组合、降维
- 商业加工
- 特征监控
- 指标:时效性、覆盖率和异常值
- 可视化&预警
- 模型与算法
问题及常用模型
用户画像系统架构
用户标签生成案例
实例:“性别预测
性别预测问题:根据用户数据预测性别
已知数据:数据1,用户使用APP的行为数据、数据2,用户浏览网页的行为数据
- 步骤1:明确问题
- 数据挖掘常见问题中的哪一类?
- 分类、聚类、推荐还是其他?(分类)
- 数据集规模
- 数据集是否够大?(分类需要大的数据集)
- 问题假设
- 数据是否满足所解决问题的假设?(男女行为不同?)
- 步骤2:数据预处理
- 表1:数据1预处理后的结果
- 表2:数据2预处理后的结果
- 步骤3:表1特征工程
- 单个特征分析
- 数值型特征的处理,比如App的启动次数是个连续值,可以按照低、中、高三个档次将启动次数分段成离散值;
- 类别特征的处理,比如用户使用的设备是三星或者苹果,这是一个类别特征,可以采用0-1编码来处理;
- 数据归一化
- 多个特征的分析
- 设备类型是否决定了性别?做相关性分析,计算相关系数
- App的启动次数和停留时长是否完全正相关,结果表明特别相关,去掉停留时长
- 如果特征过多,可能需要做降维处理
- 步骤3:表2特征工程
- 典型的文本数据
- 网页->分词->去停用词->向量化
- 分词
- 可以使用jieba分词或ICTCLAS
- 去除停用词,停用词表除了加入常规的停用词外,还可以将DF比较高的词加入停用词,作为领域停用词
- 向量化,一般是将文本转化为TF或TF-IDF向量
- 结果:
数据1特征工程后的结果:
数据2特征工程后的结果:
- 步骤4:算法和模型
- 选择算法和模型考虑的因素
- 训练集的大小
- 特征的维度大小
- 所解决问题是否是线性可分的
- 所有的特征是独立的吗?
- 需要不需要考虑过拟合的问题
- 对性能有哪些要求?
- 奥卡姆剃刀原理:如无必要,勿增实体
- LR
- 只要认为模型是线性可分的,就可采用LR
- 模型比较抗噪,而且可以通过L1、L2范数来做参数选择
- 效率高,可以应用于数据特别大的场景
- 很容易分布式实现
- Ensemble方法
- 根据训练集训练多个分类器,然后综合多个分类器的结果,做出预测
- 算法和模型评价
准确率,召回率,ROC和AUC
Spark ML代码实现 - 重要概念
- DataFrame
- 用于学习的数据集
- 可以包含多种类型
- 管道组件
- Transformers:transform()
- 把一个DF转换成另一个DF的算法
- Estimators:fit()
- 应用在一个DF上生成一个转换器算法
- 如何工作
- 其他
- 参数
- 所有转换器和评估器共享一个公共API
- 参数名Param是一个参数
- ParamMap是一个参数的集合(parameter,value)
- 传递参数的两种方式:
- 为实例设置参数
- 传递ParamMap给fit()或transform()方法
- 保存和加载管道
Sprak ML代码实例
- 实例:Estimator,Transformer,and Param
- 步骤:
- 准备带标签和特征的数据
- 创建逻辑回归的评估器
- 使用setter方法设置参数
- 使用存储在lr中的参数来训练一个模型
- 使用paramMap选择指定的参数
- 准备测试数据
- 预测结果
- 实例:Pipeline
- 步骤:
- 准备训练文档
- 配置ML管道,包含三个stage:
- Tokenizer,HashingTF和lr
- 安装管道到数据上
- 保存管道到磁盘
- 包括安装好的和未安装好的
- 加载管道
- 准备测试文档
- 预测结果
- 实例:模型调优
- 步骤:
- 准备训练数据
- 配置ML管道,包含三个stage:
- Tokenizer,HashingTF和lr
- 使用ParamGridBuilder构造一个参数网络
- 使用CrossValidator来选择模型和参数
- CrossValidator需要一个Estimator,一个评估器参数集合和一个Evaluator
- 运行交叉校验,选择最好的参数集
- 准备测试数据
- 预测结果
- 实例:通过训练校验分类来调优模型
- 步骤:
- 准备训练和测试数据
- 使用ParamGridBuilder构造一个参数网格
- 使用TrainValidationSplit来选择模型和参数
- CrossValidator需要一个Estimator,一个评估器参数集合和一个Evaluator
- 运行训练校验分离,选择最好的参数
- 在测试数据上做预测,模型是参数组合中执行的最好的一个
用户画像系统应用
案例1:用户信用等级分级
案例2:在大数据营销中的应用
案例3:用户流失预警
案例4:潜在用户分析
案例5:异常检测与分析-离群点分析