数据分析理论与实践 | 青训营笔记

133 阅读6分钟

这是我参与「第四届青训营 」笔记创作活动的的第7天


数据分析

全景图

埋点:

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

应用场景

  1. 在深度学习网络中作为Embedding层,完成从高维稀疏特征向量到低维稠密特征向量的转换;
  2. 作为预训练的Embedding特征向量,与其他特征向量连接后一同输入深度学习网络进行训练;
  3. 通过计算用户和物品的Embedding相似度,Embedding可以直接作为 推荐系统 或计算广告系统的召回层或者召回方法之一。


聚类画像

流程图

步骤:

1.样本选定

确定聚类分析的样本范围

一共提供三种方式圈选人群

  1. 定义条件筛选样本,条件都是比较通用的,比如年龄、性别、vv_finish_1w(过去一周用户的完播次数,用来保证用户兴趣的显著性),缺点是条件比较少。

  2. 上传圈选ID列表,主要服务于用户所需的条件并不在第一种方式里,可以直接离线圈选好用户,然后通过上传csv文件即可。这种方式更多的是用于一次性实验分析,如果设置成周期调度,但由于已是上传固定的用户,没法根据你离线选好条件随时间动态变化用户,所以就成了固定用户的周期任务。

  3. 输入hive表名称,也是服务于用户所需的条件并不在第一种方式里,但是你需要有hive表的写权限,调度频次可设置成一次性实验分析,也可周期调度。如果需要周期调度,请将hive表对应的任务设置成天级调度(由表里的数据来决定哪些用户需要参与聚类) 。平台会在周期调度时间到来时读取表里的数据,完成任务的执行。相比第二种,用户可随时间动态变化,但需要hive表写权限。

2.向量获取

获取选定样本中用户在短视频内的行为向量(64维)

行为向量是一种描述用户在短视频内行为的特征向量。可以粗略理解为,倾向于消费/点赞/收藏/分享同一类视频或倾向于与同一类创作者互动的用户,将会拥有相似的特征向量。

选择Embedding作为模型特征的依据:

  1. 用户行为的语义特征

  2. 线下分析反映线上效果

3.算法聚类

基于64维用户推荐向量,通过k-means算法,将相似的用户分成一组,不相似用户分成不同组。

选择k-means算法的依据:

  1. 用户64维推荐向量在空间中的分布是球状分布且凸集的数据,k-means所求的目标函数是所有点到距离其最近的中心点的距离平方和最小,这样我们就要求解一个凸优化问题。2. 算法的复杂度、数据量、以及机器资源的trade-off

参考链接

juejin.cn/post/713013…