分群算法
⑴ 数据挖掘算法有哪些
统计和可视化要想建立一个好的预言模型,你必须了解自己的数据。最基本的方法是计算各种统计变量(平均值、方差等)和察看数据的分布情况。你也可以用数据透视表察看多维数据。数据的种类可分为连续的,有一个用数字表示的值(比如销售量)或离散的,分成一个个的类别(如红、绿、蓝)。离散数据可以进一步分为可排序的,数据间可以比较大小(如,高、中、低)和标称的,不可排序(如邮政编码)。图形和可视化工具在数据准备阶段尤其重要,它能让你快速直观的分析数据,而不是给你枯燥乏味的文本和数字。它不仅让你看到整个森林,还允许你拉近每一棵树来察看细节。在图形模式下人们很容易找到数据中可能存在的模式、关系、异常等,直接看数字则很难。可视化工具的问题是模型可能有很多维或变量,但是我们只能在2维的屏幕或纸上展示它。比如,我们可能要看的是信用风险与年龄、性别、婚姻状况、参加工作时间的关系。因此,可视化工具必须用比较巧妙的方法在两维空间内展示n维空间的数据。虽然目前有了一些这样的工具,但它们都要用户“训练”过他们的眼睛后才能理解图中画的到底是什么东西。对于眼睛有色盲或空间感不强的人,在使用这些工具时可能会遇到困难。聚集(分群)聚集是把整个数据库分成不同的群组。它的目的是要群与群之间差别很明显,而同一个群之间的数据尽量相似。与分类不同(见后面的预测型数据挖掘),在开始聚集之前你不知道要把数据分成几组,也不知道怎么分(依照哪几个变量)。因此在聚集之后要有一个对业务很熟悉的人来解释这样分群的意义。很多情况下一次聚集你得到的分群对你的业务来说可能并不好,这时你需要删除或增加变量以影响分群的方式,经过几次反复之后才能最终得到一个理想的结果。神经元网络和K-均值是比较常用的聚集算法。不要把聚集与分类混淆起来。在分类之前,你已经知道要把数据分成哪几类,每个类的性质是什么,聚集则恰恰相反。关联分析关联分析是寻找数据库中值的相关性。两种常用的技术是关联规则和序列模式。关联规则是寻找在同一个事件中出现的不同项的相关性,比如在一次购买活动中所买不同商品的相关性。序列模式与此类似,他寻找的是事件之间时间上的相关性,如对股票涨跌的分析。关联规则可记为A==>B,A称为前提和左部(LHS),B称为后续或右部(RHS)。如关联规则“买锤子的人也会买钉子”,左部是“买锤子”,右部是“买钉子”。要计算包含某个特定项或几个项的事务在数据库中出现的概率只要在数据库中直接统计即可。某一特定关联(“锤子和钉子”)在数据库中出现的频率称为支持度。比如在总共1000个事务中有15个事务同时包含了“锤子和钉子”,则此关联的支持度为1.5%。非常低的支持度(比如1百万个事务中只有一个)可能意味着此关联不是很重要,或出现了错误数据(如,“男性和怀孕”)。要找到有意义的规则,我们还要考察规则中项及其组合出现的相对频率。当已有A时,B发生的概率是多少?也即概率论中的条件概率。回到我们的例子,也就是问“当一个人已经买了锤子,那他有多大的可能也会买钉子?”这个条件概率在数据挖掘中也称为可信度,计算方法是求百分比:(A与B同时出现的频率)/(A出现的频率)。让我们用一个例子更详细的解释这些概念: 总交易笔数(事务数):1,000包含“锤子”:50包含“钉子”:80包含“钳子”:20包含“锤子”和“钉子”:15包含“钳子”和“钉子”:10包含“锤子”和“钳子”:10包含“锤子”、“钳子”和“钉子”:5 则可以计算出: “锤子和钉子”的支持度=1.5%(15/1,000)“锤子、钉子和钳子”的支持度=0.5%(5/1,000)“锤子==>钉子”的可信度=30%(15/50)“钉子==>锤子”的可信度=19%(15/80)“锤子和钉子==>钳子”的可信度=33%(5/15)“钳子==>锤子和钉子”的可信度=25%(5/20)
⑵ 5.2.2 K-Mean聚类算法
K-Means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据换分为预定的类数K,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。
算法过程
连续属性
要先对各个属性值进行 零 - 均值规范,再进行距离计算。在K-Means中聚类算法中,一般需要度量样本之间的距离、样本与簇之间的距离、簇与簇之间的距离
零-均值规范化
也称为标准差标准化,经过处理的数据的均值为0,标准差为1。
转化公式: 当前使用最多的数据标准化方法
实践中,为得到较好的结果,通常选择不同初始聚类中心,多次运行K-Means算法。
在所有对象分配晌渣慎完成后,重新计算K个聚类的中心时,对于连续数据,聚类中心取该簇的均值,但当样本的某些属性是分类变量时,均值可能无定义,可梁敬以使用K-众数方法。宴敬
使用误差平法和SSE(sum of squared errors)作为度量聚类质量的目标函数,对于两种不同的聚类结果,选择误差平方和较小的分类结果
总结
分群1特点:R间隔相对较大,主要集中在30 80天;消费次数集中在0 15次;消费金额在:0~2000;
分群2特点:R间隔相对较小,主要集中在0 30天;消费次数集中在0 10次;消费金额在:0~1800;
分群3特点:R间隔相对较小,主要集中在0 30天;消费次数集中在10 25次;消费金额在:500~2000;
对比分析
分群3时间间隔短,消费次数多,消费金额大,是高消费、高价值人群。
分群2时间间隔、消费次数、消费金额中等水平,代表着一般价值客户。
分群1时间间隔长、消费次数较少、消费金额不是特别高,价值较低的客户群体。
⑶ 3.3-用户分群分析
| 导语 在产品的增长分析当中,想关注符合某些条件的一部分用户,不仅想知道这些人的整体行为(访问次数,访问时长等),还希望知道其中差异较大的细分群体。 用户分群方法,能帮助我们对差异较大的群体分别进行深入分析,从而探究指标数字背后的原因,探索实现用渗祥户增长的途径。
一、 用户分群的应用场景
在日常的数据工作中,我们经常接到这样的需求:想关注符合某些条件的一部分用户,不仅想知道这些人的整体行为(访问次数,访问时长等),还希望知道具体是哪些人符合这些条件。后查看这些人的数据导出用户名单,针对性的发送tips消息。有时还想进一步查看某些人在使用某功能上的具体操作行为。用户分群,就是用来满足这类需求的工具方法,它能帮助我们对差异较大的群体分别进行深入分析,从而探究指标数字背后的原因,探索实现用户增长的途径。
如用户画像分群,核心价值在于精细化的定位人群特征,挖掘潜在的用户群体。使网站、广告主、企业及广告公司充分认知群体用户的差异化特征,根据群体的差异化特征,帮助客户找到营销机会、运营方向,全面提高客户的核心影响力。
二、 用户分群
类型 一 :不分群 ,如全量活跃用户投放,群发短信等,缺点是没有针对性,容易引起用户反感。
类型 二 :用户基本信息分群 ,如根据用户注册的信息分群。相比不分群,这种方法已具备一定的针对性, 但是由于对用户不是真正了解,产生不了很好的结果预期。
类型三:用户画像分群 ,如年龄、性别、地域、用户偏好等,画像建设的焦点是为用户群打“标签”,一个标签通常是人为规定的高度精炼的特征标识,最后将用户分群的标签综合,即可勾勒出该用户群的立体“画像”。画像分群让我们真正了解了用户的某些特征,对业务推广帮助很大。
类型四:根据用户行为进行分群 ,此阶段会在画像分群的基础上关注用户的行为特征, 如根据用户的注册渠道和活跃习惯,制定不同的营销推广策略。
类型五:聚类和预测建模分群 ,聚类建模可以根据用户的综合特征指标,将用户分为不同的群体,如将用户划分为娱乐型、挂机型、社交型、办公型等;预测建模即尝试去猜测用户下一步的态度与行为(例如想知道什么,想做什么)。正因如此,它对将复杂的行为过程变为营销自动化,是十分有帮助的。
三、 常见的用户分群维度
1. 统计指标:年龄,性别,地域
2.付费状态:免费,试用,付费用户
3.购买历史:未付费用户,一次付费用户,多次付费用户
4.访问位置:用户使用产品的区域位置
5.使用频率:用户使用产品的频率
6.使用深度:轻度,中度,重度用户
7.广告点击:用户点击了广告 vs 未点击广告
四、 常用的聚类分群方法介绍
上面介绍了一些关于分群的方法和思路, 接下来重点讲解一下用户聚类分群,聚类分群可分为层次聚类(合并法,分解法,树状图)和非层次聚类(划分聚类,谱聚类等),而较常用的互联网用户聚类方法为K-means聚类方法和两步聚类法(均为划分聚类) 。
聚类分析的特征 :简单启衡、直观;
主要应用于探索性的研究,其分析的结果可以提供多个可能的解,选择最终的解需要研究者 的主观判断和后续的分析;
不管实际数据中是否真正存在不同的类别,利用聚类分析都能得到若干类别的解;
聚类分析的解依赖于研究者所选择的聚类变量,增加或删除一些变量对最终的解都可能产生实质性的影响。
研究者在使用聚类分析时应特别注意可能影响结果的各个因素。
异常值悄喊做和特殊的变量对聚类有较大影响
当分类变量的测量尺度不一致时,需要事先做标准化处理。
聚类分析的弱点:
聚类是一种无监督类分析方法,无法自动发现应该分成多少个类;
期望能很清楚的找到大致相等的类或细分市场是不现实的;
样本聚类,变量之间的关系需要研究者决定;
不会自动给出一个最佳聚类结果。
聚类分析的应用过程:
(1)选择聚类变量
在选取特征的时候,我们会根据一定的假设,尽可能选取对产品使用行为有影响的变量,这些变量一般包含与产品密切相关的用户态度、观点、行为。但是,聚类分析过程对用于聚类的变量还有一定的要求: 1.这些变量在不同研究对象上的值具有明显差异;2.这些变量之间不能存在高度相关。
首先,用于聚类的变量数目不是越多越好,没有明显差异的变量对聚类没有起到实质意义,而且可能使结果产生偏差;其次,高度相关的变量相当于给这些变量进行了加权,等于放大了某方面因素对用户分类的作用。识别合适的聚类变量的方法:1.对变量做聚类分析,从聚得的各类中挑选出一个有代表性的变量;2.做主成份分析或因子分析,产生新的变量作为聚类变量。
(2)聚类分析
相对于聚类前的准备工作,真正的执行过程显得异常简单。数据准备好后,导入到统计工具中跑一下,结果就出来了。这里面遇到的一个问题是,把用户分成多少类合适?通常,可以结合几个标准综合判断: 1.看拐点(层次聚类会出来聚合系数图,一般选择拐点附近的几个类别);2.凭经验或产品特性判断(不同产品的用户差异性也不同);3.在逻辑上能够清楚地解释。
(3)找出各类用户的重要特征
确定一种分类方案之后,接下来,我们需要返回观察各类别用户在各个变量上的表现。根据差异检验的结果,我们以颜色区分出不同类用户在这项指标上的水平高低。如下图,红色代表“远远高于平均水平”,黄色代表“平均水平”,蓝色代表“远远低于平均水平”。其他变量以此类推。最后,我们会发现不同类别用户有别于其他类别用户的重要特征。
五、 K-means 聚类在QQ用户分群中的应用案例
在本案例中,我们首先来看最常用的K-Means聚类法(也叫快速聚类法),这是非层次聚类法当中最常用的一种。因其简单直观的计算方法和比较快的速度(相对层次聚类法而言),进行探索性分析时,K-Means往往是第一个采用的算法。并且,由于其广泛被采用,在协作沟通时也节省了不少用于解释的时间成本。
1. K-means 的算法原理:
1. 随机取k个元素,作为k个簇各自的中心。
2. 计算剩下的元素到k个簇中心的相似度,将这些元素分别划归到相似度最高的簇。
3. 根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。
4. 将全部元素按照新的中心重新聚类。
5. 重复第4步,直到聚类结果不再变化,然后结果输出。
假设我们提取到原始数据的集合为(X1, X2, …, Xn),并且每个Xi为d维的向量, K-means聚类的目的就是,在给定分类组数k(k ≤ n)值的条件下,将原始数据分成k类,S = {S1, S2, …, Sk},在数值模型上,即对以下表达式求最小值(μi 表示分类Si 的平均值):
2. QQ 用户分群背景和目标:
QQ日登录用户超过5亿,覆盖社会各种群体(不同年龄、不同行业、不同兴趣等),需要将大盘用户进行一定细分,然后针对性的开展运营活动。
3. 聚类变量选取: 用户画像特征、用户状态特征、用户活跃特征
4. 聚类分析和结果: 通过 相关性分析和变量重要性分析 ,剔除部分效果差的变量,然后对剩余11个变量进行多次训练(目标聚类个数,参与的变量,组内个体差异容忍度),最终得出聚类结果
5. 结果解读和命名
聚类1特征:年龄未知或低龄,好友少,活跃度和使用粘性都极低 【低端低龄群体】
聚类2特征:年龄偏小,前台在线和消息活跃均比较高 【学生活跃群体】
聚类3特征:平均27岁左右,PC端和手机端活跃度均非常高 【职场高粘性群体】
聚类4特征:平均28岁左右,前台在线和消息活跃都极低 【职场低粘性群体】
聚类5特征:年龄较高,手机在线时长高,但消息沟通极少 【高龄低活跃群体】
六、 两步聚类和k-means聚类的效果对比
前面谈到的K-Means聚类法有简单、直观和快速的优点。但是其缺点是只能采用数值型变量,不能包含类别变量,并且对 异常值非常敏感,离群值很容易严重影响聚类结果 。并且,当数据集比较大(在腾讯,这种情况很常见),不能把所有数据点都装进内存的时候,K-Means就无法在单机上运行。而两步聚类法则克服了以上缺点,可以包含类别变量和数值型变量,并且当硬件条件不足或数据集非常大时,都能顺利运行。这种两步聚类法可以看成是改进版BIRCH聚类算法和层次聚类法的结合,先用BIRCH算法中的“聚类特征树”做预聚类,形成子类,然后把子类作为输入,做层次聚类。
1. 两步聚类的原理:
第一步:预聚类过程:
构建聚类特征树(CFT),分成很多子类。
开始时,把某个观测量放在树的根节点处,它记录有该观测量的变量信息,然后根据指定的距离测度作为相似性依据,使每个后续观测量根据它与已有节点的相似性,放到最相似的节点中,如果没有找到某个相似性的节点,就为它形成一个新的节点。在这一步当中,离群点将会被识别并剔除,不会像在K-Means当中那么容易地影响结果。
第二步:正式聚类:
将第一步完成的预聚类作为输入,对之使用分层聚类的方法进行再聚类(以对数似然函数作为距离的度量)。每一个阶段,利用施瓦兹贝叶斯信息准则(BIC)评价现有分类是否适合现有数据,
并在最后给出符合准则的分类方案。
可自动确定或者根据业务需要人工指定分类数目;
3. 两步聚类的效果对比:
对第六点同样的数据进行两步聚类,得到模型最优结果如下
6. 两步聚类结果解读
聚类1特征:年龄未知或低龄,好友少,活跃度和使用粘性都极低 【低端低龄群体】
聚类2特征:年龄偏小,前台在线和消息活跃均比较高【学生或新入职场高活跃群体】
聚类3特征:平均24岁左右,在线和消息活跃均较低 【青年低活跃群体】
聚类4特征:平均25岁左右,在线超高但活跃很低 【青年挂机群体】
聚类5特征:平均28岁左右,手机使用较少但PC活跃很高 【职场办公群体】
聚类6特征:年龄较高,手机在线时长高,但消息沟通极少 【高龄低活跃群体】
七、 业务案例 – 通过K-Means聚类,挖掘特殊行为模式的手机QQ客户群
1. 业务需求
在本案中,产品经理希望了解登录不活跃手机QQ用户的行为模式,并且能针对不同的行为组合,对庞大的用户群体进行细分,从而关注不同群体的不同需求,甚至挖掘垂直领域需求,从而在产品或运营侧采取措施,拉活沉默用户,提高DAU。
2. 分析目标
1. 发现手Q使用行为模式异于大盘典型用户的细分群体
2. 粗估每个细分群体的用户数量
3. 了解每个细分群体的行为特征和用户画像
4. 基于上述结果,在拉活方面,提出产品或运营建议或明确进一步探索的方向
3. 分析过程
a) 特征提取
分析聚焦于用户在手机QQ的点击行为,例如删除消息,查看好友资料页面,点击好友动态按钮等,于是我们从用户的点击上报信息着手,对每个用户的点击次数进行加总。在本例中,考虑到用户行为的典型性,选取了4个完整的周,共28天的数据,并且时间窗当中无任何节日。另外,考虑到计算性能和探索性分析需要反复迭代的场景,只从QQ大盘当中随机抽取千份之一的用户作为代表。
b) 特征筛选
在特征提取阶段一共提取了接近200个 功能点的点击数据 。但是这些特征当中,有些覆盖面非常低,只有百份之一的用户在28天当中曾经使用,这些低覆盖的特征会首先被去除。
另外,前面谈到高度相关的变量也会干扰聚类过程,这里对所有特征对两两进行计算 皮尔逊相关系数 ,对高相关特征(相关系数大于0.5)则只保留其中保留覆盖面最广的特征,以便最大限度地体现用户差异。
c) 特征改造-探索
经过上面两步后,笔者曾进行过多次聚类探索,但无一例外,聚类结果都呈现出一个超级大类搭配数十个非常小的小类(几个或十几个用户)。这样的结果,显然与我们的分析目标是想违背的。其一,这里挖掘出的小群体体积太小,从业务角度来说没有价值;其二,超级大类基本等同与大盘用户,没有能找出其中的用户差异。
为什么会有这样的结果呢,主要是因为点击行为基本上遵循的是 幂分布 ,大量用户集中在低频次区间,而极少量用户却会有极高的频次,这样在典型的聚类算法中,高频次用户都会被聚集成人数极少的小类,而大量的低频词用户就会被聚集成一个超级大类。
对于这种情况,典型的解决方法是 对频次取对数 , 使幂分布转化为近似的正态分布再进行聚类 ,在本次研究中,取自然对数后,聚类效果仅有少量改善,但仍然停留在一个超级大类加上若干人数极少的小类的情况。背后原因,是点击行为数据的特点之一:核心功能和热门项目,例如聊天框、好友动态按钮等点击人数极多,而 相对冷门的功能则有大量的0值 。这样的情况下,取对数是没有改善的。
回到本次分析的目标当中,我们需要“发现手Q使用行为模式异于大盘典型用户的细分群体”,如果丢弃这些冷门功能只看热门选项,则无法找出一些相对小众的行为模式达成分析目标。而这种数值稀疏的情况则让笔者想起了文本分类。在文本分类的词袋模型当中,每个“文档“的词向量同样存在大量的0值,词袋模型的解决方法是对词向量用TF-IDF方法进行加权。下面简单介绍这种方法
d) 特征改造-TF-IDF
在文本分类的词袋模型当中,需要将一篇篇“文档”(Document)(例如一篇新闻,一条微博,一条说说)按照其讨论的主题聚合在一起,而一篇文档里面有很多词(Term)。TF(Term-Frequency 词频率)就是指一个词在一篇文档里的出现次数在整篇文档总词数当中的占比,这样简单的计算就知道一篇文档中什么词更多,而不会受到文档本身长度的影响。
另一方面,有些词是是什么文章都会用的“大众”词,这些词对于文章主题的分辨是没什么帮助的(例如新闻当中的“报道”“记者”等等)。对于这样的“大众”词,就要降低他的权重,所以可以通过(文档总数/含有某个词的文档数)这样的计算达到目的,每篇文章都有的词权重会取0,包含的文档数越少,数值越大。这计算就是IDF(Inverse Document Frequency 逆文档频率)。
按照上面的讨论,读者可能已经想到了,如果把“文档”的概念变为“用户”,把“词的出现次数”替换为“功能的点击次数“,就正好可以用来把用户行为的类型进行分类。首先是低频率用户的功能偏好会通过TF的计算得到反映,不会因为总体上用得少在与高频用户的对比当中被笼统归为一个低频用户的类。同时IDF也让一些小众功能有更大的权重,更容易在聚类中突出小众偏好。
e) 聚类结果
通过这样的特征改造,再用K-Means算法进行聚类,得出的结果就比较符合分析目标了,从大盘数据中,我们找到了在QQ上经常删除消息的中学生,狂刷附近的人而又很少聊天的寂寞男,把QQ当成新闻客户端的大城市青年,很少聊天却常常访问好友页面的默默关注者,并且初略估计出了各个群体的大小,行为特征和背景特征。并在此基础上结合用户研究数据去探索产品改进的建议。
总结
用户分群对于用户数据研究领域最大的改变,在于打破数据孤岛并真实了解用户。分析某个指标数字背后的用户具备哪些特征(他们的人群属性、行为特点等),进而发现产品问题背后的原因,并从中发现产品有效改进提升的机会或方向。
在进行聚类分析时,特征的选择和准备非常重要: 1. 合适的变量在各个样本之类需要有明显差异;2.变量之间不能有强相关关系,否则需要用PCA等方法先进行降维;3.需要根据数据本身的特点和业务特性对数据进行变换(如标准化,取对数等)
而聚类算法的选择则需要结合数据特点(是否有变量,离群值,数据量,是否成簇状),以及计算速度(探索性分析往往需要较快的计算速度),精确度(能否精确识别出群落)等方面去选择合适的算法。对算法中的参数,例如K-Means当中的类别数K,则需要结合技术指标和业务背景,选取逻辑上说得通的分类方案。
⑷ pso的算法结构
对微粒群算法结构的改进方案有很多种,对其可分类为:采用多个子种群;改进微粒学习对象的选取策略;修改微粒更新迭代公式;修改速度更新策略;修改速度限制方法、位置限制方法和动态确定搜索空间;与其他搜索技术相结合;以及针对多模问题所作的改进。
第一类方案是采用多个子种群。柯晶考虑优化问题对收敛速度和寻优精度的双重要求并借鉴多群体进化算法的思想,将寻优微粒分成两组,一组微粒采用压缩因子的局部模式PSO算法,另一组微粒采用惯性权重的全局模式PSO算法,两组微粒之间采用环形拓扑结构。对于高维优化问题,PSO算法需要的微粒个数很多,导致计算复杂度常常很高,并且很难得到好的解。因此,出现了一种协作微粒群算法(Cooperative ParticleSwarm Optimizer, CPSO-H),将输入向量拆分成多个子向量,并对每个子向量使用一个微粒群来进行优化。虽然CPSO-H算法使用一维群体来分别搜索每一维,但是这些搜索结果被一个全局群体集成起来之后,在多模问题上的性能与原始PSO算法相比有很大的改进。Chow使用多个互相交互的子群,并引入相邻群参考速度。冯奇峰提出将搜索区域分区,使用多个子群并通过微粒间的距离来保持多样性。陈国初将微粒分成飞行方向不同的两个分群,其中一分群朝最优微粒飞行,另一分群微粒朝相反方向飞行;飞行时,每一微粒不仅受到微粒本身飞行经验和本分群最优微粒的影响,还受到全群最优微粒的影响。Niu在PSO算法中引入主—从子群模式,提出一种多种群协作PSO算法。Seo提出一种多组PSO算法(Multigrouped PSO),使用N组微粒来同时搜索多模问题的N个峰。Selleri使用多个独立的子群,在微粒速度的更新方程中添加了一些新项,分别使得微粒向子群历史最优位置运动,或者远离其他子群的重心。王俊年借鉴递阶编码的思想,构造出一种多种群协同进化PSO算法。高鹰借鉴生态学中环境和种群竞争的关系,提出一种基于种群密度的多种群PSO算法。
第二类方案是改进微粒学习对象的选取策略。Al-kazemi提出多阶段PSO算法,将微粒按不同阶段的临时搜索目标分组,这些临时目标允许微粒向着或背着它自己或全局最好位置移动。Ting对每个微粒的pBest进行操作,每一维从其他随机确定的维度学习,之后如果新的pBest更好则替换原pBest;该文还比较了多种不同学习方式对应的PSO算法的性能。Liang提出一种新颖的学习策略CLPSO,利用所有其他微粒的历史最优信息来更新微粒的速度;每个微粒可以向不同的微粒学习,并且微粒的每一维可以向不同的微粒学习。该策略能够保持群体的多样性,防止早熟收敛,可以提高PSO算法在多模问题上的性能;通过实验将该算法与其它几种PSO算法的变种进行比较,实验结果表明该算法在解决多模复杂问题时效果很好。Zhao在PSO算法中使用适应值最好的n个值来代替速度更新公式中的gBest。Abdelbar提出一种模糊度量,从而使得每个邻域中有多个适应值最好的微粒可以影响其它微粒。Wang也采用多个适应值最好的微粒信息来更新微粒速度,并提出一种模糊规则来自适应地确定参数。崔志华提出一种动态调整的改进PSO算法,在运行过程中动态调整极限位置,使得每个微粒的极限位置在其所经历的最好位置与整体最好位置所形成的动态圆中分布。与原始PSO算法相反,有一类方法是远离最差位置而非飞向最优位置。Yang提出在算法中记录最差位置而非最优位置,所有微粒都远离这些最差位置。与此类似,Leontitsis在微粒群算法中引入排斥子的概念,在使用个体最优位置和群体最优位置信息的同时,在算法中记录当前的个体最差位置和群体最差位置,并利用它们将微粒排斥到最优位置,从而让微粒群更快地到达最优位置。孟建良提出一种改进的PSO算法,在进化的初期,微粒以较大的概率向种群中其他微粒的个体最优学习;在进化后期,微粒以较大的概率向当前全局最优个体学习。Yang在PSO算法中引入轮盘选择技术来确定gBest,使得所有个体在进化早期都有机会引领搜索方向,从而避免早熟。
第三类方案是修改微粒更新公式。Hendtlass在速度更新方程中给每个微粒添加了记忆能力。He在速度更新方程中引入被动聚集机制。曾建潮通过对PSO算法的速度进化迭代方程进行修正,提出一种保证全局收敛的随机PSO算法。Zeng在PSO算法中引入加速度项,使得PSO算法从一个二阶随机系统变为一个三阶随机系统,并使用PID控制器来控制算法的演化。为了改进PSO算法的全局搜索能力,Ho提出一种新的微粒速度和位置更新公式,并引入寿命(Age)变量。
第四类方案是修改速度更新策略。Liu认为过于频繁的速度更新会弱化微粒的局部开采能力并减慢收敛,因此提出一种松弛速度更新(RVU)策略,仅当微粒使用原速度不能进一步提高适应值时才更新速度,并通过试验证明该策略可以大大减小计算量并加速收敛。罗建宏对同步模式和异步模式的PSO算法进行了对比研究,试验结果表明异步模式收敛速度显着提高,同时寻优效果更好。Yang在微粒的更新规则中引入感情心理模型。Liu采用一个最小速度阈值来控制微粒的速度,并使用一个模糊逻辑控制器来自适应地调节该最小速度阈值。张利彪提出了对PSO算法增加更新概率,对一定比例的微粒并不按照原更新公式更新,而是再次随机初始化。Dioan利用遗传算法(GA)来演化PSO算法的结构,即微粒群中各微粒更新的顺序和频率。
第五类方案是修改速度限制方法、位置限制方法和动态确定搜索空间。Stacey提出一种重新随机化速度的速度限制和一种重新随机化位置的位置限制。Liu在[76]的基础上,在PSO算法中引入动量因子,来将微粒位置限制在可行范围内。陈炳瑞提出一种根据微粒群的最佳适应值动态压缩微粒群的搜索空间与微粒群飞行速度范围的改进PSO算法。
第六类方案是通过将PSO算法与一些其他的搜索技术进行结合来提高PSO算法的性能,主要目的有二,其一是提高种群多样性,避免早熟;其二是提高算法局部搜索能力。这些混合算法包括将各种遗传算子如选择、交叉、变异引入PSO算法,来增加种群的多样性并提高逃离局部最小的能力。Krink通过解决微粒间的冲突和聚集来增强种群多样性,提出一种空间扩展PSO算法(Spatial ExtensionPSO,SEPSO);但是SEPSO算法的参数比较难以调节,为此Monson提出一种自适应调节参数的方法。用以提高种群多样性的其他方法或模型还包括“吸引—排斥”、捕食—被捕食模型、耗散模型、自组织模型、生命周期模型(LifeCycle model)、贝叶斯优化模型、避免冲突机制、拥挤回避(Crowd Avoidance)、层次化公平竞争(HFC)、外部记忆、梯度下降技术、线性搜索、单纯形法算子、爬山法、劳动分工、主成分分析技术、卡尔曼滤波、遗传算法、随机搜索算法、模拟退火、禁忌搜索、蚁群算法(ACO)、人工免疫算法、混沌算法、微分演化、遗传规划等。还有人将PSO算法在量子空间进行了扩展。Zhao将多主体系统(MAS)与PSO算法集成起来,提出MAPSO算法。Medasani借鉴概率C均值和概率论中的思想对PSO算法进行扩展,提出一种概率PSO算法,让算法分勘探和开发两个阶段运行。
第七类方案专门针对多模问题,希望能够找到多个较优解。为了能使PSO算法一次获得待优化问题的多个较优解,Parsopoulos使用了偏转(Deflection)、拉伸(Stretching)和排斥(Repulsion)等技术,通过防止微粒运动到之前已经发现的最小区域,来找到尽可能多的最小点。但是这种方法会在检测到的局部最优点两端产生一些新的局部最优点,可能会导致优化算法陷入这些局部最小点。为此,Jin提出一种新的函数变换形式,可以避免该缺点。基于类似思想,熊勇提出一种旋转曲面变换方法。
保持种群多样性最简单的方法,是在多样性过小的时候,重置某些微粒或整个微粒群。Lvbjerg在PSO算法中采用自组织临界性作为一种度量,来描述微粒群中微粒相互之间的接近程度,来确定是否需要重新初始化微粒的位置。Clerc提出了一种“Re-Hope”方法,当搜索空间变得相当小但是仍未找到解时(No-Hope),重置微粒群。Fu提出一种带C-Pg变异的PSO算法,微粒按照一定概率飞向扰动点而非Pg。赫然提出了一种自适应逃逸微粒群算法,限制微粒在搜索空间内的飞行速度并给出速度的自适应策略。
另一种变种是小生境PSO算法,同时使用多个子种群来定位和跟踪多个最优解。Brits还研究了一种通过调整适应值计算方式的方法来同时找到多个最优解。Li在PSO算法中引入适应值共享技术来求解多模问题。Zhang在PSO算法中采用顺序生境(SequentialNiching)技术。在小生境PSO算法的基础上,还可以使用向量点积运算来确定各个小生境中的候选解及其边界,并使该过程并行化,以获得更好的结果。但是,各种小生境PSO算法存在一个共同的问题,即需要确定一个小生境半径,且算法性能对该参数很敏感。为解决该问题,Bird提出一种自适应确定niching参数的方法。
Hendtlass在PSO算法中引入短程力的概念,并基于此提出一种WoSP算法,可以同时确定多个最优点。刘宇提出一种多模态PSO算法,用聚类算法对微粒进行聚类,动态地将种群划分成几个类,并且使用微粒所属类的最优微粒而非整个种群的最好微粒来更新微粒的速度,从而可以同时得到多个近似最优解。Li在PSO算法中引入物种的概念,但是由于其使用的物种间距是固定的,该方法只适用于均匀分布的多模问题;为此,Yuan对该算法进行扩展,采用多尺度搜索方法对物种间距加以自适应的调整。
此外,也有研究者将PSO算法的思想引入其他算法中,如将PSO算法中微粒的运动规则嵌入到进化规划中,用PSO算法中的运动规则来替代演化算法中交叉算子的功能。
⑸ 客户分群
一、什么是客户分群?
将现有消费群体按一定规则分成若干个特征鲜明的小群体,从而使得:
* 不同组别间特征差异明显;
* 同一群组内客户特征相似。
二、为什么要客户分群?
* 客户群体分化,大众化营销失去优势,精准化营销逐渐被认可;
* 可深入了解客户,提升消费者对品牌的黏性,提升销售的效率和效益;
* 减少不必要的营销经费和花费。
三、聚类算法:
1、层次聚类:
(1)过程:个体两两聚合(样本间距离)--小群体两两合并(群体间距离)--较大群体两两聚合(群体间距离)--形成一个大群体;
(2)优缺点:
a、不足:由于反复计算距离,运算速度较慢;
b、优点:
* 可以是分类或连续性变量
* 既可对变量聚类(R型聚类),也可对记录聚类(Q型聚类)
* 一次运行即可得到完整的分类序列
2、K-means聚类
(1)含义:将所有观测分成k个群体,是的群体间距离尽量大,同时群体内部的观测液袜樱的‘距离和’最小,由于运算简单,因此是目前流行的聚类方法。
(2)聚类步骤:设好袜定要分群的组数(K)--随机每组的中心--逐一计算每一记录到各组中心点的距离,将离中心最近的个体归到对应的组--重新计算均值,以此作为再次迭代的中心--用新的中心点重新对个体进行归组,及重复前面两步骤,直到达到要求
(3)优缺点:
a、优点:
* 速度快于层次聚类
* 内存占用小
b、不足:
* 只能对记录聚类,不能对变量聚类。
* 对初始聚类中心有一定的依赖性
* 由于要事先选定聚类数,所以要尝试多次,以找出最佳聚类。
2、EM算法:
(1)含义:最大期望(EM)算法是在概率模型中寻找参数最大似然估计,或最大后验估计的算法,其中概率模型依赖于无法观测的隐含变量。
(2)两步骤:
a、E步(Expectation)根据参数初始值或上一次迭代的模型参数来计算出隐含变量的后验概率,其实就是隐含变量的期望,作为隐含变量的现估计值。
b、M步(Maximization)将似然函数最大化以获得新的参数值。
注意:似然函数最大化指组内距离平方和最小。
四、距离计算:
1、样本间距离计算:
(1)通用公式:闵可夫斯基距离
(2)欧式距离,即直线距离,p=2
(3)曼哈顿距闹丛离,折线距离,大于欧氏距离,p=1
(4)切比雪夫距离,p趋向无穷大,选最大距离
2、群体间距离
(1)最短距离法,指组间最近两个样本点的距离
(2)最长距离法,指组间最远两个样本点的距离
(3)重心法,群体先平均再求距离
(4)类平均法,群体先求距离再平均
五、变量选择:
1、基于业务场景选择变量
2、变量间相关性尽量低(无共线性),根据VIF和R square
3、具体可从人口统计学(个人信息数据)、商家的消费者数据(通过RFM衍生变量)、第三方行为数据(消费者的需求和兴趣)三个方面进行选择
六、如何预处理变量?
1、填充缺失值
首先确认是否错误,是否是零值;如果不是,Category可根据情况进行填充,Numeric数据可先Quantile,再用均值、中位数、线性插值等填充。
2、异常值处理
可用Caping-Floor将数据达到95%以内,(除非异常值有价值,需单独处理)
3、字符型变量转换处理
比如male 0,female 1
4、标准化(统一量纲),量纲不一致为导致距离计算的偏差
方法一:Z-Score标准化
sed(X)=(X-Xcap)/Sp
方法二:离差标准化
(x-min(x))/(max(x)-min(x))
七、初始中心点的选择
(1)选择彼此距离尽可能远的点作为中心点;
(2)先通过采样,基于层次聚类确定K个簇,以簇的中心点作为K-means的中心点输入
(3)多次随机选择中心点训练K-means,选择效果最好的聚类
⑹ 用户分群
1. 什么是“用户分群”
用户分群被分为普通分群和预测分群。普通分群是依据用户的属性特征和行为特征将用户群体进行分类,预测分群是根据用户以往的行为属性特征,运用机器学习算法来预测他们将来会发生某些事件的概率。
举例来说,互联网金融产品的用户按照风险投资偏好这一属性分为保守、稳健和激进,按照投资行为可分为已投资和未投资。你可以根据这一属性和行为将满足某种条件的用户群体提取出来,譬如激进型但未投资的这群用户,然后分析友团这一群体的行为特征从而优化产品促进用户投资,或者根据其浏览的项目页面推荐用户可能会感兴趣的项目。
在 1.6 版本新增的预测分群功能中,概率在前端展示时会被映射到 4、3、2、1、0(很有可能、有可能、一般、不太可能、很不可能)5 个等级。预测周期可以是未来 7 天或未来 30 天。
2. 用户分群界面功能简介
2.1. 创建普通分群
在左侧功能栏点击“用户分群”会进入用户分群功能界面,如上图。在神策分析中,只有管理员权限的账号才能使用分群功能。基于性能考虑,目前最多支持20个分群。
a.新建分群
点击“用户分群”右侧的加号,进入编辑分群内液返容的界面。
b.分群名称
必填项。命名以英文字母开头,只能输入字母,数字和下划线。建议使用分群对应意义的英文名。
c.分群显示名
必填项。可以是中文也可以是英文,建议使用示意明确的中文名。
d.分群执行方式
分群执行方式包括单次和例行,默认选项是单次。单次需要使用者手动执行产生最新结果,例行是系统每日凌晨计算分群结果。
e.用户属性条件
点击用户属性编辑栏右下角的加号,可添加多个用户属性条件。
f.用户行为条件
点击用户行为编辑栏右下角的加号,可添加多个用户历史行为条件,譬如某事件在某段时间内发生的多少频次的用户群体,也可对行为事件添闹告饥加筛选条件。
g.用户行为序列条件
点击用户行为序列编辑栏右下角的加号,可添加满足某一系列行为事件的条件。
h.预测分群功能(1.6版本新增)
神策数据分析工具中新增的预测分群功能,目前仅支持单次类型的预测分群。使用之前请在 推送管理 中添加推送配置。
2.2. 执行普通分群
使用者输入用户属性、用户行为和用户行为序列条件后,点击左下侧的保存按钮,然后执行即可,如上图。表示本周已投过资且浏览过基金和P2P产品的激进型用户群体。而且因为分群执行方式选择是“例行”,所以会在每日凌晨自动计算更新用户群体数据。
2.3. 使用普通分群
创建和执行后的分群结果保存在左侧栏的列表中,分为三类:单次、例行和分析结果。单次和例行列表分别是执行方式为单次和例行时的分群,分析结果列表是在使用用户行为分析、漏斗分析、留存分析和分布分析后保存的用户群体。
如上图,分群结果可以作为用户属性用于行为事件分析、漏斗分析、留存分析和分布分析,通过条件“为真”和“为假”选择满足或者不满足分群条件的用户群体。譬如,图中我们选择6月份注册且完成订单转化的男性用户,分析7月的购买行为。
当然,我们也可以将用户分群的具体用户信息提取出来,用于短信推送等运营活动。
2.4. 预测分群
用户在选择未来 7 天或者 30 天,做过某个特定事件或者任意事件若干次后,填好分群名和显示名,点击保存,就可以创建一个预测分群。如果选择的事件是至少做过若干次,则可以起到预测活跃用户的效果,如上图所示。点击执行后,等待一段时间,进入查看预测结果页面,就可以看到如下图所示的预测分群结果。此结果的分析方法和普通分群的一致。
下图显示的是预测流失用户的一个例子,如果在未来一段时间内(如 7 天或 30 天)内没有做过任何事件,我们就可以认为此用户流失。
3. 典型应用场景
以互联网金融网站为例,我们可以针对具有某类特征的用户群体进行理财项目推荐。譬如,通过用户分群筛选出对基金项目和P2P项目感兴趣的风险投资偏好为激进型的用户群,如下图。
根据分群结果,可以提取出这类用户群体的信息,如下图。通过用户账号或者手机号为其推荐高风险高回报的P2P或者基金项目。
预测分群的典型应用是预测未来一段时间内的活跃用户和流失用户,这样可以在活跃用户流失之前,采用一定的流失召回方法将他们拉回。
⑺ Tableau | 分群
用户分群,产品分群是互联网里面精细激拆化运营一个方法。
这个分群用2个方法实现:
还是一如既往的是Tableau官方案例数据:示例超市
用【销售额】和【利润率】对客户进行分类,在分析里面点击 群集 ,这个案例手动设置的群集数是4。
点击群集,选择“描述群集”可以查看分群的依据。
勾选“显示缩放的中心”,会对销售额和利润率进行预处理。处理方法的公式(也称为最小值-最大值标准化)为 (x – min(x))/(max(x) - min(x))。
其他说明:
群集即聚类,物以类聚的理念,Tableau使用 k 均值算法进行群集。对于启尺给定的群集数量 k,算法将数据划分为 k 个群集。每个群集都有一个中心(质心),它是该群集中所有点的平均值。K 均值迭代过程来查找中心,该过程可最大程度地缩短群集中各个点与群明旁枣集中心之间的距离。
如上图所示,选择的指标依旧是【销售额】和【利润率】
其他说明: