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

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

一、算法背景

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

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

实操AI算法KMeans用户分群应用案例

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

二、算法详解

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

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

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

第二步,对付样本中的数据工具,根据点与点的间隔公式打算他们与聚类中央的欧氏间隔,按间隔最近的准则将他们分到间隔他们最近的聚类中央所对应的类。

打算后的结果如下,数据1和数据2间隔A点更近,数据3和数据4间隔B点更近,以是将数据1和2划为A类,数据3和4划为B类。

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

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

我们创造数据与新的聚类中央点的间隔变近了,但是分组的情形并没有改变,依然是数据1和2为A组,数据3和4为B组,解释算法已经收敛,可以结束循环。
如果在这一步的聚类结果与之前的结果还有差异,那么就还须要返回第二步连续进行循环打算,直到结果不再改变为止。

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

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

SSE是打算每个数据与聚类中央的间隔平方和,当和越小解释聚类中央越靠近分组真正的中央点。
K当分组数量越多时,SSE的值越小,以是当分组数量靠近最佳分组数之后,再增加K的数量会让SSE低落幅度变小,随着K的不断增大而逐渐平缓,形成一个拐点,拐点对应的K值便是数据真实的分组数,由于函数的形状非常像一个手肘,以是才称为手肘法,如下图所示,当K取值为4之后的趋势明显变小。

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

三、实操案例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

至此,我们的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协议