1.用户画像概述
1.1什么是用户画像
用户画像是对现实世界中用户的数学建模
1.2用户画像特点
1.源于现实,高于现实
用户画像是描述用户的数据,是符合特定业务需求的对用户的形式化描述
2.源于数据,高于数据
用户画像是通过分析挖掘用户尽可能多的数据信息得到的。
1.3用户画像作用
2.用户画像构建
2.1标签标示方法
标签是某一种用户特征的符号标示,用户画像是一个整体,各个维度不孤立,标签之间有联系,所以用户画像本质上就是用标签的集合来标示
2.2标签数学标示
1.每个标签在特征空间里,都是一个基向量,现实中用户画像需要的用户特征往往是成百上千的标签,所以用户画像是特征空间中的高维向量。用户画像实质上就是特征空间中的高维向量。特征空间的描述最多只能做到三维,四维就是理论上的一个存在了。
2.基向量之间有关联(向量之间会存在一个角度),不一定是正交的。
2.3用户画像标签举例
2.4用户画像的挑战
1.记录和存储亿级用户的画像,非常消耗我们的存储
2.随着用户兴趣的升级,支持和扩展不断增加的维度和偏好
3.毫秒级的更新
4.支撑个性化推荐、广告投放和精细化营销等产品
3.用户画像系统流程
1.明确问题和了解数据
1.1.明确问题:是要解决分类问题,还是回归问题,是要确定用户是否流失,还是预测下一个月的销量。
1.2.追求需求和数据的匹配:比如评估用户是否存在欺诈行为或流失,都是需要了解用户的用卡习惯
1.3.明确需求:比如风险评估,用户流失都是分类问题,0和1.而聚类问题是对这一批数据未知,不知道把它分成几类,在现实问题中比如,我们有一堆文章进行分类。
1.4.数据的规模、重要特征的覆盖度等
2.数据预处理
2.1数据集成、数据冗余、数值冲突:数据是多种多样的,可能是微服务的数据,第三方传过来的,等等这些数据都不是很规范,比如,对同一维度的描述,可能有自己的一套定义接口的标准,举例对男女的描述,有的接口可能用M/F,有的用0,1,接口的规范不一样,所以需要进行预处理。
2.2数据采样:保证数据综合的覆盖所有可能出现的情况
2.3数据清洗、缺失值处理与噪声数据
3.特征工程
3.1特征概述
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已
特征:对所需解决问题有用的属性
特征的提取、选择和构造:
1.针对所解决的问题选择最有用的特征集合
2.通过相关系数等方式来计算特征的重要性(人工筛选、算法(随机森林)、PCA自动降维)
3.2特征提取:业务日志、WEB公开数据抓取、第三方合作
3.3特征处理:特征清洗、特征预处理(值处理、特征选择、特征组合、降维)、商业加工
3.4特征监控:
指标:时效性、覆盖率和异常值
可视化和预警:仪表盘监控
4.模型与算法
统计问题:
1.平滑:针对一些稀疏问题进行处理,在一些样本不够的情况下,一些样本特征比例为0的数据是我们不希望看到的就做平滑处理
2.归一化:归纳和统一,降低数据处理复杂度,把零散的数据降为0~1之间
分类问题:
2.1二分类:常见的算法有LR、SVM、RF、GBDT、NB
2.2多分类:RF、GBDT、最大熵、二分类+one vs all
回归问题:
常用的算法有ALS、Lasso、Ridge、回归树
聚类问题:
Kmeans等
语义分析:涉及到分词、LDA等
高维偏好:有些维度很高处理难度大,就进行降维可使用协同过滤里ALS、Slope算法
2.3常用模型实例
通常一个问题的解决需要尝试2~3种算法,但是最终可能选择其中的一种来上线(AB测试)。
逻辑回归一般效果还不错,模型非常简洁,而且效率很高,最重要的一点是适合并行的分布式处理,所以逻辑回归是用的非常多的非常简单高效的一种算法,下图是逻辑回归与支持向量机的使用准确率比较:
4.用户画像系统架构
1.架构概述图如下
数据采集—>数据预处理—>数据存储—>离线和实时计算—>存储模型到hive/hbase/redis—>针对不同问题选取不同算法—>结果推送给mysql/redis—>可视化输出
辅助监控系统:
Ozzie:任务调度
Nagios:预警
Ganglia:总体集群的监控
2.详细架构图如下:
数据收集—>数据预处理—>数据建模—>数据可视化
5.用户画像应用实例:性别预测
需求:性别预测问题
数据:
数据1:用户使用APP的行为数据
数据2:用户浏览网页的行为数据
步骤1:明确问题
1.数据挖掘常见问题中的哪一类,分类、聚类、推荐还是其他?
分类
2.数据集规模,数据集是否够大?
分类需要大的数据集
3.问题假设
所提供的数据是否满足所解决问题的假设?
男女行为不同的数据
步骤2:数据预处理
预处理后的数据如下图:
步骤3:特征工程
表1特征工程
1.单个特征的分析
1)数值型特征的处理,比如App的启动次数是个连续值,可以按照低、中、高三个档次将启动次数分段成离散值;
2)类别型特征的处理,比如用户使用的设备是三星或者联想,这是一个类别特征,可以采用0-1编码来处理;
3)数据归一化
2.多个特征的分析
1)设备类型是否决定了性别?做相关性分析,计算相关系数
2)App的启动次数和停留时长是否完全正相关,结果表明特别相关,去掉停留时长
3)如果特征太多,可能需要做降维处理
表2特征工程
1.典型的文本数据:网页->分词->去停用同->向量化
2.分词
1)jieba分词库等
2)去除停用词,停用词表除了加入常规的停用词外,还可以将DF(Doucument Frequency)比较高的词加入停用词表,作为领域停用词
3)向量化,一般是将文本转化为TF或TF-IDF向量
特征工程-结果
数据1特征工程后的结果
数据2特征工程后的结果
步骤4:算法和模型
选择算法和模型考虑的因素:
训练集的大小;
特征的维度大小;
所解决问题是否是线性可分的;
所有的特征是独立的吗?
需要不需要考虑过拟合的问题;
对性能有哪些要求?
奥卡姆剃刀原理:如无必要,勿增实体
选择算法和模型:
1)LR:
只要认为问题是线性可分的,就可采用LR
模型比较抗噪,而且可以通过L1、L2范数来做参数选择
效率高,可以应用于数据特别大的场景
很容易分布式实现
2)Ensemble方法
根据训练集训练多个分类器,然后综合多个分类器的结果,做出预测
步骤5:算法和模型的评价
评估方法:混淆矩阵——PR,ROC,AUC
1)正确率Precision: TP/(TP+FP)
预测为正例的样本中的真正正例的比例
正确率应用场景:疾病监测、反垃圾,保证准确为前提,提升召回
2)召回率Recall: TP/(TP+FN)
预测正例的真实正例占所有真实正例的比例
召回率应用场景:搜索领域,尽量找到与相关的商品
3)AUC面积(综合评价)
PR曲线:
目的:很难保证既要正确,又要召回,两者很难结合起来,此消彼长,所以只能在中间找个平衡点,达到两者兼顾,ROC的作用就是找到这个平衡点。
ROC曲线:
把不同阈值的坐标连起来,形成ROC曲线,如下图:
纵轴:真阳率: TP/(TP+FN)
横轴:假阳率: FP/(FP+TN)
最完美的模型,AUC的面积是1,但是通常来说是不存在这样的模型,所以我们只能不断地去逼近1,使得上面的面积越来越小
AUC的计算:
(1)就是上图ROC下面的阴影部分的面积
(2)另一种理解AUC的方法:负样本排在正样本前面的概率
计算方法:cat auc.raw | sort -t1==-1){++x;a+=y;}($1==1){++y;}END{print 1.0-a/(xy);}‘
其中:
xy:正负样本pair对
a:错误的pair对
a/xy:错误的概率
1-a/xy:正确的概率