实操AI算法:K-Means用户分群应用案例

栏目: 编程工具 · 发布时间: 5年前

内容简介:本文介绍了如何用AI聚类算法中的K-Means来对用户进行分群,以及在过程中需要留心的几个K-Means算法注意点。从产品策划的角度看,不同的用户对产品可能有着不同的需求,所以需要针对不同的用户设计不同的产品功能。从产品运营的角度看,不同的用户对于产品的贡献度不同,需要区别对待。于是我们需要对用户进行分群,而在过去,我们通常采用某种规则来对用户进行分群,例如经典的RFM模型。

本文介绍了如何用AI聚类算法中的K-Means来对用户进行分群,以及在过程中需要留心的几个K-Means算法注意点。

实操AI算法:K-Means用户分群应用案例

从产品策划的角度看,不同的用户对产品可能有着不同的需求,所以需要针对不同的用户设计不同的产品功能。从产品运营的角度看,不同的用户对于产品的贡献度不同,需要区别对待。于是我们需要对用户进行分群,而在过去,我们通常采用某种规则来对用户进行分群,例如经典的RFM模型。

基于规则的分群方法都需要由专家来定义规则,但是当用户行为发生变化的时候,规则往往很难及时适应。为了解决这个问题,我们可以尝试使用Ai聚类算法中的K-Means来对用户进行分群。

一、算法背景

K-Means又称为K均值聚类,在1967年由美国加州大学的詹姆斯·麦昆教授首次提出(James·B·MacQueen),但类似的算法思想可以追述到1957年的劳埃德算法(Lloydalgorithm)。

劳埃德算法的思想是先把所有需要分组的数据先随机分为k个初始化组(K可以是任意不大于样本数的正整数),然后计算每组的中心点,根据中心点的位置把数据分到离它最近的中心点,并根据最近原则重新分组。以此循环不断的计算中心并重新分组,直到结果收敛,即数据不再改变分组为止。

K-Means算法则是在劳埃德算法的基础上进行的改良,将第一步随机分为K个初始化组改为选取K个点,点的位置可以随机,也可以为了减少计算量而人工指定某些特定的点,后续流程没有变化,依然是循环计算每个数据到中心点的距离并重新分组直到结果收敛,以下是算法的流程图:

实操AI算法:K-Means用户分群应用案例

二、算法详解

K-Means算法理论上可以支持任意维度的数据,但为了方便作图演示,我们用一个简单的二维数据作为例子来看一下。

假定我们有以下4个数据需要进行分组:

实操AI算法:K-Means用户分群应用案例

首先我们需要选择K个点作为初始中心,每一个点代表一个聚类中心,从图上我们可以看出应该分成2类,所以K的值定义为2,分别是点A和点B。然后随机给这两个中心点赋值,我们就暂定为A(0,0)和B(9,12)。

实操AI算法:K-Means用户分群应用案例

第二步,对于样本中的数据对象,根据点与点的距离公式计算他们与聚类中心的欧氏距离,按距离最近的准则将他们分到距离他们最近的聚类中心所对应的类。

实操AI算法:K-Means用户分群应用案例

计算后的结果如下,数据1和数据2距离A点更近,数据3和数据4距离B点更近,所以将数据1和2划为A类,数据3和4划为B类。

实操AI算法:K-Means用户分群应用案例

第三步,更新聚类中心位置,将每个类别中所有数据的均值作为该类别的聚类中心,那么A组的聚类中心为A=((2+1)/2,(2+4)/2)=(1.5,3),B组的聚类中心为B=((7+8)/2,(6+10)/2)=(7.5,8),如下图所示。

实操AI算法:K-Means用户分群应用案例

根据新的聚类中心,重复进行第二步的计算,计算后的结果如下:

实操AI算法:K-Means用户分群应用案例

我们发现数据与新的聚类中心点的距离变近了,但是分组的情况并没有改变,依然是数据1和2为A组,数据3和4为B组,说明算法已经收敛,可以结束循环。如果在这一步的聚类结果与之前的结果还有差异,那么就还需要返回第二步继续进行循环计算,直到结果不再改变为止。

在上面这个例子中,通过肉眼观察,我们可以通过人工判断K值为2比较合适,但是如果数据量非常庞大,人工就很难判断了,这也是K-Means算法的一个缺点——需要由人工指定K的值。

那么是否有方法可以帮助我们判断K应该为多少比较合适呢,当然有。我们可以通过手肘法来确定K的个数,手肘法的核心指标是SSE(Sum of the Squared Error,误差平方和),计算公式如下:

实操AI算法:K-Means用户分群应用案例

SSE是计算每个数据与聚类中心的距离平方和,当和越小说明聚类中心越接近分组真正的中心点。K当分组数量越多时,SSE的值越小,所以当分组数量接近最佳分组数之后,再增加K的数量会让SSE下降幅度变小,随着K的不断增大而逐渐平缓,形成一个拐点,拐点对应的K值就是数据真实的分组数,因为函数的形状非常像一个手肘,所以才称为手肘法,如下图所示,当K取值为4之后的趋势明显变小。

实操AI算法:K-Means用户分群应用案例

接下来我们用一个实际的案例,来看一下在工作中如何应用K-Means算法。

三、实操案例

通过爬虫获取2018年2月1日到2019年2月1日,在人人都是产品经理社区上发表文章的作者及对应文章的阅读量,收藏量和点赞量。

实操AI算法:K-Means用户分群应用案例

业务目标是使用K-Means算法对作者进行分群,使用的 工具 是Excel+SPSS,我们先在Excel中进行数据清洗,然后在SPSS中进行聚类。

第一步,我们需要将作者去重,然后将每个作者1年内发表的所有文章所获得的阅读量、收藏量、点赞量累加起来

我们新增一个sheet2,将作者列复制到sheet2中,然后选中复制后的作者列,点击“数据”tab下的“删除重复项”按钮,每位作者只保留唯一数据。

实操AI算法:K-Means用户分群应用案例

第二步,将原始数据中完整的作者列和数据复制到新sheet的I到L列,并从B列开始分别创建汇总阅读量,汇总收藏量和汇总点赞量3个新的数据列。选中B2单元格,在输入框中输入累加公式:=SUMIF(I:I,A2,J:J),然后按回车得到求和结果。

SUMIF需要输入3个参数,分别是条件区域,求和条件,实际求和区域。意思是在条件区域内如果发现了符合求和条件的数据,则对实际求和区域中的数值进行求和。

实操AI算法:K-Means用户分群应用案例

第三步,同样运用SUMIF函数在C2和D2单元格计算汇总的收藏量和点赞量,然后框选B2到D2单元格,鼠标放在D2单元格的右下角双击,将公式填充至所有的单元格

实操AI算法:K-Means用户分群应用案例

第四步,数据归一化,这是K-Means聚类分析中很重要的一步,因为阅读量的数值远远大于收藏量和点赞量,如果直接求均值,会导致阅读量的权重大于收藏量和点赞量,所以我们需要对数据做归一化。

这里我们使用极差归一化公式,将三列数据分别进行归一化,让数值分布在0到1之间,极差归一化公式如下:

实操AI算法:K-Means用户分群应用案例

先在E1到G1单元格分别填入归一化阅读量,归一化收藏量和归一化点赞量的表头,然后选中E2单元格,输入=(B2-MIN(B:B))/(MAX(B:B)-MIN(B:B)),然后参照第三步的方法,将所有归一化的数据填充至表中。

实操AI算法:K-Means用户分群应用案例

第五步,数据整理,到这里,我们最开始复制过来的I到L列的原始数据就没用了,为了看数据方便我们需要删除他们。但前面汇总的数据和归一化的数据都是基于原始数据计算得来的,如果直接删除会导致公式没有值,所以我们需要先将公式转化为值,再将原始数据删除。

框选A到G列,右键复制,然后点击A1单元格,选择“开始”tab下的粘贴按钮,点击粘贴的下拉菜单,选择“粘贴值”的选项,这样就把公式转化为了数值后,就可以把原始数据删除了。

实操AI算法:K-Means用户分群应用案例

到这里,我们在Excel中完成了数据清洗的操作,接下来要用到SPSS进行K-Means聚类。

首先通过SPSS打开刚才的Excel文件,选择sheet2的数据,注意勾选“从第一行数据中读取变量名”的选项。

实操AI算法:K-Means用户分群应用案例

第二步,依次点击“分析”-“分类”-“K-均值聚类”。

实操AI算法:K-Means用户分群应用案例

第三步,在弹出的弹窗中,分别将归一化之后的三列数据通过穿梭框按钮放在变量窗格里,将作者名放入个案标注依据的窗格里,然后将聚类数设为4。

实操AI算法:K-Means用户分群应用案例

第四步,点击弹窗中的迭代按钮,设置迭代次数,数据量越大,迭代次数最好设置得越多,这样方便算法收敛。如果没有达到最大迭代次数算法就收敛了,SPSS也能自动停止迭代,可以说是非常便利了。

实操AI算法:K-Means用户分群应用案例

第五步,点击弹窗中的保存按钮,勾选“聚类成员”的选项,这样算法在迭代完毕之后,就会生成一个新的列,用来标明聚类的结果,如果希望看到数据与聚类中心的距离也可以勾选第二个选项。

实操AI算法:K-Means用户分群应用案例

最后,点击确定,让系统自动完成聚类迭代并输出结果,我们可以在查看器以及新生成的变量列中查看最后的分类结果。

实操AI算法:K-Means用户分群应用案例

之前选择K值为4的原因是根据SSE公式,在K为4的时候形成了拐点,我们也可以尝试不同的K值,看看分类的结果是否不同,在实际使用中不一定要局限于数学算法,也可以根据业务需要设定不同的分组数量。

实操AI算法:K-Means用户分群应用案例

至此,我们的K-Means聚类分析就结束了,我们可以根据分类的结果来对不同的用户进行用户研究,形成用户画像,以及指导我们产品后续的功能规划设计和运营方案设计。

四、K-Means算法注意点

在使用K-Means算法时,有以下几个注意点需要特别注意:

1. K-Means只能用于连续数据,而不能用于分类数据

因为K-Means算法的核心是计算空间坐标中,点与点之间的平均值,而我们知道只有连续数据可以被计算,分类数据即使使用1234来表示,也只是作一个代称,而不可以进行数学计算。

2. 在计算之前,需先对数据进行归一化处理

对数据进行归一化处理是为了防止数据之间单位不一致,导致某些位数较大的参数拥有较高的权重,将所有的数据归一化则可以将所有的参数权重调节成一致。当然,如果因为业务特点而需要将某些参数的权重调高或者调低,也可以根据实际情况来,毕竟算法只是工具,真正起作用的还是使用算法的人。

3. K-Means算法对数据噪声和离群值较为敏感

计算均值时需要所有的数据都参与,即使出现少量的离群数据,也会对均值产生极大的影响,所以在实际工作中使用算法时,通常需要先对离群值进行数据清洗,排除离群值对最终结果的影响,然后再进行聚类计算。

总结

K-Means属于十大经典机器学习算法之一,原理简单且应用场景非常广泛,例如用于人流量分群辅助实体店选址,自然语言处理领域中对话意图识别,计算机视觉中对图片进行分类等等。

如果大家还想到什么应用场景,可以在下方给我留言互动。

参考资料

WiKipedia《k-means clustering》

简书《聚类、K-Means、例子、细节》

CSDN《K-means聚类最优k值的选取》

本文由 @黄瀚星 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议


以上所述就是小编给大家介绍的《实操AI算法:K-Means用户分群应用案例》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Foundations of PEAR

Foundations of PEAR

Good, Nathan A./ Kent, Allan / Springer-Verlag New York Inc / 2006-11 / $ 50.84

PEAR, the PHP Extension and Application Repository, is a bountiful resource for any PHP developer. Within its confines lie the tools that you need to do your job more quickly and efficiently. You need......一起来看看 《Foundations of PEAR》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具