这是我参与「第四届青训营 」笔记创作活动的第18天.
大数据 理论基础
机器学习理论基础
| 快速入门 | 推荐描述 | 相关链接 |
|---|---|---|
| 吴恩达《Machine Learning》 | 这绝对是机器学习入门的首选课程,没有之一!即便你没有扎实的机器学习所需的扎实的概率论、线性代数等数学基础,也能轻松上手这门机器学习入门课,并体会到机器学习的无穷趣味。 | 课程主页- www.coursera.org/learn/machi… github.com/fengdu78/Co… |
| 周志华《机器学习》 | 被大家亲切地称为“西瓜书”。这本书非常经典,讲述了机器学习核心数学理论和算法,适合有作为学校的教材或者中阶读者自学使用,入门时学习这本书籍难度稍微偏高了一些。 | 读书笔记- www.cnblogs.com/limitlessun… github.com/Vay-keen/Ma… datawhalechina.github.io/pumpkin-boo… zhuanlan.zhihu.com/c_101385029… |
| 李航 《统计学习方法》 | 包含更加完备和专业的机器学习理论知识,作为夯实理论非常不错 | 读书笔记- www.cnblogs.com/limitlessun… github.com/SmirkCao/Li… zhuanlan.zhihu.com/p/36378498 |
机器学习算法流程
一、机器学习概览
1、为什么要机器学习
2、什么是机器学习
举个上世纪基于机器学习开发的产品案例——垃圾邮件过滤系统。这种系统有两种开发思路:
- 第一种是传统编程,开发者把垃圾邮件的特性总结出一系列的规则(比如邮件正文含有“促销”、“折扣”等字眼则大概率是垃圾邮件),再转成代码进行条件判断。但这也意味着对抗者在感知到特定规则后可以利用其绕过该系统,使得开发者不得不一直根据垃圾邮件的演进而增加新的规则,代码会越写越长,难以维护。
- 另一种是开发一个能自己从数据中学习隐藏规则的系统。开发者不再编写具体的规则,只要更新数据就能使系统主动识别出数据所蕴含的规则变化,主动调整自身策略,无需开发者介入规则的调整。
简而言之,机器学习是搭建一个能够自主从数据(或经验)中学习潜在规则的系统。在合适的情景下,尤其是解决复杂问题时,它能有效简化系统和代码,并大大降低后期策略迭代与维护的成本。
- 机器学习就是把无序的数据转换为有用的信息
- 从数据中自动分析获得模型,并利用模型对未知数据进行预测
- 机器学习算法流程:获取数据、数据探测、特征工程、构建数据集、建模调参、模型评估
3、机器学习算法有哪些
4、挑战有哪些
-
过拟合(Overfitting):意味着算法可能过于复杂,不止学到了该学的规则,还将噪音、异常学到心里,使得无法很好预测新样本。
-
欠拟合(Underfitting):意味着算法可能过于简单,没学到精髓。
-
数据的问题具体表现为:
-
-
训练数据太少
- 数据对机器学习系统的影响程度可能比你想象中算法对系统的影响要多。
- 2001年一个关于自然语言歧义消除的研究 Scaling to very very large corpora for natural language disambiguation 中发现,在数据足够多的情况下(比如10亿),即使是非常简单的模型(右图中 Memory-Based 红线),也能在这种复杂问题中表现良好。
- 这意味着,如果数据足够多且廉价,那么是可以减少在算法优化上的投入。
-
-
注意:前提是「数据足够多」,现实中获取巨量数据的成本往往很高,一般是中小型的数据集,所以还是不要轻易放弃算法优化。
-
-
-
训练数据不具备代表性
- 在数据量小的情况下,数据的增减容易引起模型不断变动。
- 在数据量大的情况下,如果样本不具备代表性,那么训练结果也会引入偏差
-
-
比如对线上所有用户做个推荐算法,而训练数据来自市中心区的全体业主。又比如某专家对两亿灵活就业人群提高收入提出诚挚建议:“出租闲置房屋、开私家车拉活”。
-
-
数据本身质量很差
- 噪音、缺漏、异常等会使得系统更难发现内在的规律和模式,需要数据清洗。
-
比如人体扫描仪识别一个人的身材维度,在识别算法较差的情况下,胖子的识别结果可能会很离谱——机器也许认为这个人没有腰,或者把凸出来的腰当成臀部。
-
选取的特征没有相关性
- “Garbage in, garbage out”,训练数据要有足够多的相关特征、尽量减少无关特征,才能让机器学习的系统更好地更快地学习到隐含的规则。
- 需要运用特征工程(Feature Engineering)来获取相关度高的特征集。
-
- 在 大数据 场景下,对资源的要求非常高,比如存储和算力。
二、特征工程
1、概述
现实事物中具备着各种各样的信息,比如一张图片有着色彩、纹理、边界等各类型的信息数据。而特征工程要做的,就是将这些“原始数据”进行处理,从中构建出在此问题下,能代表该事物属性的“特征”。
2、流程
数据是什么样的形式
- 结构化数据与非结构化数据
结构化数据:如一些以表格形式进行存储的数据
非结构化数据:就是一堆数据,类似于文本、报文、日志之类的
- 定量和定性数据
定量数据:指的是一些数值,用于衡量某件东西的数量
定性数据:指的是一些类别,用于描述某件东西的性质
数据预处理
- 数据的质量,直接决定了模型的预测和泛化能力的好坏。它涉及很多因素,包括:准确性、完整性、一致性、时效性、可信性和解释性。而在真实数据中,我们拿到的数据可能包含了大量的缺失值,可能包含大量的噪音,也可能因为人工录入错误导致有异常点存在,非常不利于算法模型的训练。数据清洗的结果是对各种脏数据进行对应方式的处理,得到标准的、干净的、连续的数据,提供给数据统计、模型等使用。
- 数据预处理的主要步骤分为:数据清洗、数据集成、数据规约和数据变换。
数据清洗
数据清洗(data cleaning) 的主要思想是通过填补缺失值、光滑噪声数据,平滑或删除离群点,并解决数据的不一致性来“清理“数据。如果用户认为数据是脏乱的,他们不太会相信基于这些数据的挖掘结果,即输出的结果是不可靠的。
- 缺失值的处理
- 由于现实世界中,获取信息和数据的过程中,会存在各类的原因导致数据丢失和空缺。针对这些缺失值的处理方法,主要是基于变量的分布特性和变量的重要性(信息量和预测能力)采用不同的方法。主要分为以下几种:
-
- 删除变量:若变量的缺失率较高(大于80%),覆盖率较低,且重要性较低,可以直接将变量删除。
- 定值填充:工程中常见用-9999进行替代
- 统计量填充:若缺失率较低(小于95%)且重要性较低,则根据数据分布的情况进行填充。对于数据符合均匀分布,用该变量的均值填补缺失,对于数据存在倾斜分布的情况,采用中位数进行填补。
- 插值法填充:包括随机插值,多重插补法,热平台插补,拉格朗日插值,牛顿插值等
- 模型填充:使用回归、贝叶斯、随机森林、决策树等模型对缺失数据进行预测。
- 哑变量填充:若变量是离散型,且不同值较少,可转换成哑变量,例如性别SEX变量,存在male,fameal,NA三个不同的值,可将该列转换成 IS_SEX_MALE, IS_SEX_FEMALE, IS_SEX_NA。若某个变量存在十几个不同的值,可根据每个值的频数,将频数较小的值归为一类'other',降低维度。此做法可最大化保留变量的信息。
- 异常值处理
- 异常值是数据分布的常态,处于特定分布区域或范围之外的数据通常被定义为异常或噪声。异常分为两种:“伪异常”,由于特定的业务运营动作产生,是正常反应业务的状态,而不是数据本身的异常;“真异常”,不是由于特定的业务运营动作产生,而是数据本身分布异常,即离群点。主要有以下检测离群点的方法:
-
- 简单统计分析:根据箱线图、各分位点判断是否存在异常。
- 3σ原则:若数据存在正态分布,偏离均值的3σ之外.
- 基于绝对离差中位数(MAD) :这是一种稳健对抗离群数据的距离值方法,采用计算各观测值与平均值的距离总和的方法。放大了离群值的影响。
- 基于距离:通过定义对象之间的临近性度量,根据距离判断异常对象是否远离其他对象,缺点是计算复杂度较高,不适用于大数据集和存在不同密度区域的数据集
- 基于密度:离群点的局部密度显著低于大部分近邻点,适用于非均匀的数据集
- 基于聚类:利用聚类算法,丢弃远离其他簇的小簇。
- 噪声处理
- 噪声是变量的随机误差,是观测点和真实点之间的误差。通常的处理办法:
-
- 对数据进行分箱操作,等频或等宽分箱,然后用每个箱的平均数,中位数或者边界值(不同数据分布,处理方法不同)代替箱中所有的数,起到平滑数据的作用。
- 建立该变量和预测变量的回归模型,根据回归系数和预测变量,反解出自变量的近似值。
数据集成
数据集成将多个数据源中的数据结合成存放在一个一致的数据存储,如数据仓库中。这些源可能包括多个数据库或一般文件。
- 实体识别问题:例如,数据分析者或计算机如何才能确信一个数据库中的 customer_id 和另一个数据库中的 cust_number 指的是同一实体?通常,数据库和数据仓库有元数据——关于数据的数据。这种元数据可以帮助避免模式集成中的错误。
- 冗余问题:一个属性是冗余的,如果它能由另一个表“导出”;如年薪。属性或维度命名的不一致也可能导致数据集中的冗余。用相关性检测冗余:数值型变量可计算相关系数矩阵,标称型变量可计算卡方检验。
- 数据值的冲突和处理:不同数据源,在统一合并时,保持规范化,去重。
数据规约
数据归约技术可以用来得到数据集的归约表示,它小得多,但仍接近地保持原数据的完整性。这样,在归约后的数据集上挖掘将更有效,并产生相同(或几乎相同)的分析结果。一般有如下策略:
- 维度规约
用于数据分析的数据可能包含数以百计的属性,其中大部分属性与挖掘任务不相关,是冗余的。维度归约通过删除不相关的属性,来减少数据量,并保证信息的损失最小。
-
属性子集选择:目标是找出最小属性集,使得数据类的概率分布尽可能地接近使用所有属性的原分布。在压缩的属性集上挖掘还有其它的优点,它减少了出现在发现模式上的属性数目,使得模式更易于理解。
- 逐步向前选择:该过程由空属性集开始,选择原属性集中最好的属性,并将它添加到该集合 中。在其后的每一次迭代,将原属性集剩下的属性中的最好的属性添加到该集合中。
- 逐步向后删除:该过程由整个属性集开始。在每一步,删除掉尚在属性集中的最坏属性。
- 向前选择和向后删除的结合:向前选择和向后删除方法可以结合在一起,每一步选择一个最 好的属性,并在剩余属性中删除一个最坏的属性。
-
单变量重要性:分析单变量和目标变量的相关性,删除预测能力较低的变量。这种方法不同于属性子集选择,通常从统计学和信息的角度去分析。
- pearson相关系数和卡方检验,分析目标变量和单变量的相关性。
- 回归系数:训练线性回归或逻辑回归,提取每个变量的表决系数,进行重要性排序。
- 树模型的Gini指数:训练决策树模型,提取每个变量的重要度,即Gini指数进行排序。
- Lasso正则化:训练回归模型时,加入L1正则化参数,将特征向量稀疏化。
- IV指标:风控模型中,通常求解每个变量的IV值,来定义变量的重要度,一般将阀值设定在0.02以上
- 维度变换
- 维度变换是将现有数据降低到更小的维度,尽量保证数据信息的完整性。介绍以下常用的几种有损失的维度变换方法,将大大地提高实践中建模的效率
-
- 主成分分析 ( PCA )和因子分析( FA ) :PCA通过空间映射的方式,将当前维度映射到更低的维度,使得每个变量在新空间的方差最大。FA则是找到当前特征向量的公因子(维度更小),用公因子的线性组合来描述当前的特征向量。
- 奇异值分解(SVD) :SVD的降维可解释性较低,且计算量比PCA大,一般用在稀疏矩阵上降维,例如图片压缩,推荐系统。
- 聚类:将某一类具有相似性的特征聚到单个变量,从而大大降低维度。
- 线性组合:将多个变量做线性回归,根据每个变量的表决系数,赋予变量权重,可将该类变量根据权重组合成一个变量。
- 流行学习:流行学习中一些复杂的非线性方法。
数据变换
数据变换包括对数据进行规范化,离散化,稀疏化处理,达到适用于挖掘的目的。
-
规范化处理:数据中不同特征的量纲可能不一致,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果,因此,需要对数据按照一定比例进行缩放,使之落在一个特定的区域,便于进行综合分析。特别是基于距离的挖掘方法,聚类,KNN,SVM一定要做规范化处理。
- 最大 - 最小规范化:将数据映射到[0,1]区间,
- Z-Score标准化:处理后的数据均值为0,方差为1,
- Log变换:在时间序列数据中,对于数据量级相差较大的变量,通常做Log函数的变换
-
离散化处理:数据离散化是指将连续的数据进行分段,使其变为一段段离散化的区间。分段的原则有基于等距离、等频率或聚类的方法。数据离散化的原因主要有以下几点:
- 模型需要:比如决策树、朴素贝叶斯等算法,都是基于离散型的数据展开的。如果要使用该类算法,必须用离散型的数据进行。有效的离散化能减小算法的时间和空间开销,提高系统对样本的分类聚类能力和抗噪声能力。
- 离散化的特征相对于连续型特征更易理解。
- 可以有效的克服数据中隐藏的缺陷,使模型结果更加稳定。
- 用数字很容易找到关系(比如“大”、“小”、“双”、“半”),然而当给定字符串时,计算机只能说出它们是“相等”还是“不同”。
- 方法如下:
- 等频法:使得每个箱中的样本数量相等,例如总样本n=100,分成k=5个箱,则分箱原则是保证落入每个箱的样本量=20。
- 等宽法:使得属性的箱宽度相等,例如年龄变量(0-100之间),可分成 [0,20],[20,40],[40,60],[60,80],[80,100]五个等宽的箱。
- 聚类法:根据聚类出来的簇,每个簇中的数据为一个箱,簇的数量模型给定。
- 稀疏化处理:针对离散型且标称变量,无法进行有序的LabelEncoder时,通常考虑将变量做0,1哑变量的稀疏化处理,例如动物类型变量中含有猫,狗,猪,羊四个不同值,将该变量转换成is_猪,is_猫,is_狗,is_羊四个哑变量。若是变量的不同值较多,则根据频数,将出现次数较少的值统一归为一类'rare'。稀疏化处理既有利于模型快速收敛,又能提升模型的抗噪能力。
特征构造
特征构造是指从现有的数据中构造额外特征,这需要我们花大量的时间去研究真实的数据样本,思考问题的潜在形式和数据结构,同时能够更好地应用到预测模型中。
特征构造的操作分为两类:“聚合”和“转换”。
聚合
-
分组统计特征
- 中位数
- 算数平均数
- 众数
- 最小值
- 最大值
- 标准差
- 方差
- 频数
- 分组统计和基础特征结合
......
转换
- 单列特征加/减/乘/除一个常数
- 单列特征单调变换(log、n次方等)
- 线性组合
- 多项式特征
- 比例特征
- 绝对值特征
- 最大值特征
- 最小值特征
- 编码特征(OneHotEncoding、LabelEncoding、Embedding)
.......
特征选择
在实际项目中,可能会有大量的特征可使用,有的特征携带的信息丰富,有的特征携带的信息有重叠,有的特征则属于无关特征,如果所有特征不经筛选地全部作为训练特征,经常会出现维度灾难问题,甚至会降低模型的准确性。因此,需要进行特征筛选,排除无效/冗余的特征,把有用的特征挑选出来作为模型的训练数据。
Filter 方法(过滤式)
先进行特征选择,然后去训练学习器,所以特征选择的过程与学习器无关 。 相当于先对特征进行过滤操作,然后用特征子集来训练分类器。主要思想:对每一维特征“打分”,即给每一维的特征赋予权重,这样的权重就代表着该特征的重要性,然后依据权重排序。
- Chi-squared test(卡方检验)
- Information gain(信息增益)
- Correlation coefficient scores(相关系数)
Wrapper方法(封装式)
直接把最后要使用的分类器作为特征选择的评价函数,对于特定的分类器选择最优的特征子集。主要思想:将子集的选择看作是一个搜索寻优问题,生成不同的组合,对组合进行评价,再与其他的组合进行比较。这样就将子集的选择看作是一个优化问题。
- 递归特征消除算法。
Embedded方法(嵌入式)
将特征选择嵌入到模型训练当中,其训练可能是相同的模型,但是特征选择完成后,还能给予特征选择完成的特征和模型训练出的超参数,再次训练优化。主要思想:在模型既定的情况下学习出对提高模型准确性最好的特征。也就是在确定模型的过程中,挑选出那些对模型的训练有重要意义的特征。
- 用带有L1正则化的项完成特征选择(也可以结合L2惩罚项来优化)、随机森林平均不纯度减少法/平均精确度减少法。
3、Embedding
(1)概览简介
解释性理解
比如 RGB(三原色,red,green,blue)任何颜色都可以用一个 RGB 向量来表示,其每一维度都有明确的物理含义(和一个具体的物理量相对应)。当然 RGB 这个例子比较特殊,和我们一般意义的 embedding,还不一样,因为 RGB 的特殊性就在,他的每一维度都是事先规定好的,所以解释性很强。而一般意义的 embedding 则是神经网络倒数第二层的参数权重,只具有整体意义和相对意义,不具备局部意义和绝对含义,这与 embedding 的产生过程有关,任何 embedding 一开始都是一个随机数,然后随着优化算法,不断迭代更新,最后网络收敛停止迭代的时候,网络各个层的参数就相对固化,得到隐层权重表(此时就相当于得到了我们想要的 embedding),然后再通过查表可以单独查看每个元素的 embedding。
(2)产生过程
(3)意义作用
- 「经过Embedding向量化表达后的数据,其实变得更加适合深度神经网络的训练和学习,也有利于工业界数据的工程化处理。」高维稀疏数据对于机器学习的参数学习和相关计算都不太友好( 「高维易引发“维度之灾”,使空间距离很难有效衡量,另外高维经常使参数数量变得非常多,计算复杂度增加,也容易导致 过拟合 ;稀疏容易造成梯度消失,导致无法有效完成参数学习」),因此通常特别稀疏的高维离散数据更适合使用Embedding代替传统One-Hot编码方式。
- 此外,「Embedding虽然是一种降维表示,但是却携带了语义信息,而且这种表示方式并不局限于词,可以是句子、文档、物品、人等等,Embedding能够很好地挖掘嵌入实体间的内部关联,即便降维也能保留这种潜在关系」,这简直就是“神来之笔”,怪不得说万物皆可Embedding。
(4)应用场景
三、聚类算法
1、概览简介
聚类算法是机器学习中涉及对数据进行分组的一种算法。在给定的数据集中,我们可以通过聚类算法将其分成一些不同的组。在理论上,相同的组的数据之间有相似的属性或者是特征,不同组数据之间的属性或者特征相差就会比较大。聚类算法是一种非监督学习算法,并且作为一种常用的数据分析算法在很多领域上得到应用。
聚类所使用的统计特征无法反应用户的行为细节。因此,我们也就需要比统计特征更具有区分客户特性的特征。
2、应用场景
- 指标波动场景。举例:某个重要的KPI发生变化时,我们会思考是不是某个特定人群导致了这个波动,然后针对这样的波动找到应对的办法;
- 精细化运营。举例:在做某个业务的增长,我们会思考哪些是潜力用户,在定位到潜力用户后进一步思考如何更好地承接他们;
- PMF(Product-Market Fit)。即研究给什么样的细分人群提供什么样的内容才能达到最好的匹配效果。
3、K-means
K-means 聚类算法可能是大家最为熟悉的聚类算法。它在许多的工业级数据科学和机器学习课程中都有被讲解。并且容易理解和实现相应功能的代码 。
k-means聚类
- 首先,我们确定要聚类的数量,并随机初始化它们各自的中心点。为了确定要聚类的数量,最好快速查看数据并尝试识别任何不同的分组。中心点是与每个数据点向量长度相同的向量,是上图中的“x”。
- 通过计算当前点与每个组中心之间的距离,对每个数据点进行分类,然后归到与距离最近的中心的组中。
- 基于迭代后的结果,计算每一类内,所有点的平均值,作为新簇中心。
- 迭代重复这些步骤,或者直到组中心在迭代之间变化不大。您还可以选择随机初始化组中心几次,然后选择看起来提供最佳结果。
k-means的优点是速度非常快,因为我们真正要做的就是计算点和组中心之间的距离;计算量少!因此,它具有线性复杂性o(n)。
另一方面,k-means有两个缺点。首先,您必须先确定聚类的簇数量。理想情况下,对于一个聚类算法,我们希望它能帮我们解决这些问题,因为它的目的是从数据中获得一些洞察力。k-means也从随机选择聚类中心开始,因此它可能在算法的不同运行中产生不同的聚类结果。因此,结果可能不可重复,缺乏一致性。
K值选择
关于聚类的簇数量最优选择,可参考此文章**www.biaodianfu.com/k-means-cho…** ,常用肘部法和轮廓系数法。
模型评估
模型评估方法可参考此文章 juejin.cn/post/699791
四、聚类画像分析
1、概览简介
2、流程
3、分析过程
分析过程
| # | 环节 | 目的 | 详情 | 示意截图 |
|---|---|---|---|---|
| 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所求的目标函数是所有点到距离其最近的中心点的距离平方和最小,这样我们就要求解一个凸优化问题。 |
1. 需要对满足不同条件的人群进行聚类,所以人群数据量存在着量级差异,量级可达千万级甚至亿级,而且每一个用户的向量是64维。
1. 系统上每天有很多聚类任务需要执行
1. 综上,所以算法复杂度不能过高,不然算法需要花很多时间去训练,且机器资源紧张,进而影响整体任务的执行效率。3. 可理解性和算法稳定性
1. **可理解性:** 设定人群的业务方有过对人群进行探查,从而有一定的认知,了解用户群体大概可分为哪些群体,所以可直接指定群体的数量,并不太强需要由算法的其他参数形式去发现群体应该分为多少个。**当然系统也提供了自动发现人群数的功能,方便对未知群体通过算法来发现最优的分群数量。**
1. **算法稳定性:** 当前任务中cluster_id所表示的含义,在下一个调度周期时,需要使得对应的cluster_id保持同一个含义,即**基于上一周期的聚类结果初始化本周期的聚类任务的cluster中心点**,这样能保证算法中cluster含义的稳定性,从而帮助业务方快速review cluster的内容,以确认内容与之前对比是否发生变化。综上三个要素的考量,选择K-Means算法,该算法简单易懂,适合大数据量且复杂度低。同时能设定所需要分群的数量,以及群体中心点的初始化数据。当然在初次对用户群体进行聚类的时候,选用了K-Means++算法的思想,这样能尽可能消除随机选择初始点带来的结果差异的问题。同时选用MiniBatchKMeans <https://scikit-learn.org/stable/modules/clustering.html#mini-batch-k-means>的思想,以小批量的随机数据进行训练,减少运算时间,且效果并没有变差很多,反而增加了泛化能力。**算法工具包:**- **Python** **Sklearn:** 利用python的sklearn机器学习package里的clustering算法,选择KMeans或者MiniBatchKMeans,来进行聚类。单机本地执行机制,执行速率快,准确度不受影响,但是受本地内存资源的限制,如果本地内存资源足够大,完全可以run。- **Spark** **Scala Mllib:** 利用Spark scala的Mllib机器学习package里的clustering算法,选择KMeans,来进行聚类。Spark yarn 分布式执行机制,执行速率不稳定,时快时慢,受yarn 队列资源此刻资源的限制,如果yarn队列资源充足,执行效率会大大加快,且相对稳定。 |  |
复制代码
| 4 | Cluster Level 可视化分析 | 通过为用户提供各种各样的可视化数据,辅助用户得出以下结论:- cluster的定性分析
- cluster代表什么类型的用户- cluster的定量分析
- cluster的核心指标,对比分析及变动趋势- cluster的指标趋势变化分析
- cluster任务周期运行,可发现指标随时间的变化趋势。- cluster之间指标相对关系,发现North Star cluster
- cluster指标在二维坐标系里的相对关系,发现北极星cluster
- > 北极星指标(North Star Metric),也叫作第一关键指标(One Metric That Matters),是指在产品的当前阶段与业务/战略相关的绝对核心指标。它一旦确立就像北极星一样,指引团队向同一个方向迈进(去提升这一指标)。在数据监测中,北极星指标指决定性意义的数据监测指标。 | - 右侧为通过[t-SNE](https://distill.pub/2016/misread-tsne/)算法将64维的cluster中心向量降维到2维的示意图,可以粗略理解为:
- 拥有相似行为的用户被聚类进了各自的cluster中
- cluster间的相似程度与分布存在相关关系。cluster与cluster之间在空间距离越接近,那么它们的画像越相似- cluster的定性指标
- Top Unique Videos
- **基于****TF-IDF****思想**,构造cluster与cluster之间具有区分性偏好的top播放视频
- Random Publish Vidoes
- 随机抽样投稿
- Top Favorite Videos
- 视频收藏次数
- Word Cloud
- 词云分布
- Top Unique Words
- **基于****TF-IDF****思想**,构造cluster与cluster之间具有区分性偏好的top播放视频
- Random Avatars
- 随机抽样头像
- ......- cluster的定量分析
- Age/ Gender/OS Breakdown
- 年龄/性别/操作系统的分布
- VV(video view)
- 视频播放次数
- VVed
- 视频被播放次数
- Publish/Share/Like/Comment
- 投稿/分享/点赞/评论
- Active Days
- 活跃天数
- Retention Rate 2d/7d
- 2d/7d 留存率
- ......- cluster 稳定性分析
- cluster中心点漂移diff
- 表示两次聚类任务实例cluster中心点向量的漂移距离,用来判断群体兴趣偏好是否整体发生变化;该值持续保持在0.5以下的某个水平线上下浮动就是群体偏好没改变。
- 相邻两个周期同一个cluster的用户占比
- 表示上次聚类任务的用户所属cluster与本次聚类任务的用户所属cluster是一致的比例,该值越大,cluster越稳定,用于观察cluster群体用户变化情况。
- 直接review cluster的定性与定量指标,发现偏好内容及指标是否有变化。 | - **定性指标**- **定量指标**- **趋势图**
- - **North Star****稳定性分析**- **cluster中心点漂移** **diff**- **相邻两个周期同一个cluster的用户占比** |
复制代码
| 5 | 人工标注 | 通过将用户在Cluster可视化分析中得出的定性+定量的结论进行标注 | - cluster与tribe是一对多的关系- 标注逻辑会被保存至之后周期性运行的任务中,方便用户快速查看标注后的指标数据,但是用户有必要每周确认匹配逻辑是否发生了迁移。 | | | 6 | Tribe Level 可视化分析 | 通过用户标注的cluster-tribe匹配逻辑,渲染tribe level分析页面,为用户提供对tribe进行跟踪分析的能力。 | - 所呈现的指标与Cluster Level一致 | |