数据分析理论与实践 | 青训营笔记
数据分析
全景图
埋点:
1.埋点数据是指上报的记录着触发原因和状态信息的日志数据。按照上报方来看,可以划分为"服务端埋点”和"客户端埋点”,按照上报形式,可以划分为"代码埋点”、“可视化全埋点” 。
2.埋点包含的要素:who
when
where
how
what
how_ much
案例
Activation(激活)-新用户激活转化分析
这是一份漏斗转化数据。
如果某一步出现很低的转化率,你有什么优化建议吗?
机器学习
一般流程
类别
主要分为三大类:
- 监督/非监督学习
- 非监督学习(Unsupervised Learning): 训练数据没有标注。
- 半监督学习(Semisupervised Learning): 训练数据部分有标注。
- 批量/在线学习
- 批量学习(Batch Learning):系统训练时使用所有的训练数据,如果收到新数据,必须与旧数据合并重新训练,对计算机资源有较高的要求。
- 在线学习(Online Learning): 系统可以持续读入新数据并更新模型,快速便宜。缺陷:如果传入了异常数据,它的表现会迅速劣化,需要监控。
- 基于实例/模型学习
- 基于实例学习(Instance-based Learning): 系统铭记旧数据,比较新数据与旧数据的相似度,来推测新数据所属的类。- K-Nearest Neighbors Regression
- 基于模型学习(Model-based Learning): 根据数据,选定一种模型进行训练,然后用训练过的模型预测新数据。 - Linear Regression- Polynomial Regression
挑战
算法方面
- 过拟合
- 欠拟合
解决方案:zhuanlan.zhihu.com/p/356298455
数据问题
- 训练数据太少
- 训练数据不具备代表性
- 数据本身质量差
- 噪音、缺漏、异常等会使得系统更难发现内在的规律和模式,需要数据清洗。
- 比如人体扫描仪识别一个人的身材维度,在识别算法较差的情况下,胖子的识别结果可能会很离谱——机器也许认为这个人没有腰,或者把凸出来的腰当成臀部。
- 选取的特征没有相关性
特征工程
流程
数据理解 -> 数据预处理 -> 特征构造 -> 特征选择
数据形式
- 结构化数据:如一些以表格形式进行存储的数据
- 非结构化数据:就是一堆数据,类似于文本、报文、日志之类的
- 定量数据:指的是一些数值,用于衡量某件东西的数量
- 定性数据:指的是一些类别,用于描述某件东西的性质
特征选取-Embedding
embedding,即嵌入,起先源自于NLP领域,称为**「词嵌入(word embedding」,主要是利用背景信息构建词汇的分布式表示,最终可以可以得到一种词的向量化表达**,即用一个抽象的稠密向量来表征一个词。
在 embedding 大行其道之前 oneHot 才是最靓的仔。如果和我们比较熟悉的 oneHot 对比起来理解,顿时会发现 embedding 这个玄里玄乎的概念,实际上 so easy。
直观上看 embedding 相当于是对 oneHot 做了平滑,而 oneHot 相当于是对 embedding 做了 max pooling。
意义作用
- 「经过Embedding向量化表达后的数据,其实变得更加适合深度神经网络的训练和学习,也有利于工业界数据的工程化处理。」高维 稀疏 数据对于机器学习的参数学习和相关计算都不太友好
「高维易引发“维度之灾”,使空间距离很难有效衡量,另外高维经常使参数数量变得非常多,计算复杂度增加,也容易导致过拟合;稀疏容易造成梯度消失,导致无法有效完成参数学习」。
因此通常特别稀疏的高维离散数据更适合使用Embedding代替传统One-Hot编码方式。
- 此外,「Embedding虽然是一种降维表示,但是却携带了语义信息,而且这种表示方式并不局限于词,可以是句子、文档、物品、人等等,Embedding能够很好地挖掘嵌入实体间的内部关联,即便降维也能保留这种潜在关系」,这简直就是“神来之笔”,怪不得说万物皆可Embedding。
应用场景
- 在深度学习网络中作为Embedding层,完成从高维稀疏特征向量到低维稠密特征向量的转换;
- 作为预训练的Embedding特征向量,与其他特征向量连接后一同输入深度学习网络进行训练;
- 通过计算用户和物品的Embedding相似度,Embedding可以直接作为推荐系统或计算广告系统的召回层或者召回方法之一。
聚类画像
流程图
步骤:
1.样本选定
确定聚类分析的样本范围
一共提供三种方式圈选人群
- 定义条件筛选样本,条件都是比较通用的,比如年龄、性别、vv_finish_1w(过去一周用户的完播次数,用来保证用户兴趣的显著性),缺点是条件比较少。
- 上传圈选ID列表,主要服务于用户所需的条件并不在第一种方式里,可以直接离线圈选好用户,然后通过上传csv文件即可。这种方式更多的是用于一次性实验分析,如果设置成周期调度,但由于已是上传固定的用户,没法根据你离线选好条件随时间动态变化用户,所以就成了固定用户的周期任务。
- 输入hive表名称,也是服务于用户所需的条件并不在第一种方式里,但是你需要有hive表的写权限,调度频次可设置成一次性实验分析,也可周期调度。如果需要周期调度,请将hive表对应的任务设置成天级调度(由表里的数据来决定哪些用户需要参与聚类) 。平台会在周期调度时间到来时读取表里的数据,完成任务的执行。相比第二种,用户可随时间动态变化,但需要hive表写权限。
2.向量获取
获取选定样本中用户在短视频内的行为向量(64维)
行为向量是一种描述用户在短视频内行为的特征向量。可以粗略理解为,倾向于消费/点赞/收藏/分享同一类视频或倾向于与同一类创作者互动的用户,将会拥有相似的特征向量。
选择Embedding作为模型特征的依据:
- 用户行为的语义特征
- 线下分析反映线上效果
3.算法聚类
基于64维用户推荐向量,通过k-means算法,将相似的用户分成一组,不相似用户分成不同组。
选择k-means算法的依据:
- 用户64维推荐向量在空间中的分布是球状分布且凸集的数据,k-means所求的目标函数是所有点到距离其最近的中心点的距离平方和最小,这样我们就要求解一个凸优化问题。
2. 算法的复杂度、数据量、以及机器资源的trade-off