白话机器学习(9):用户精细化管理背后的秘密:K-means 聚类模型

本文适合人群:对机器学习 Machine Learning 与数据感兴趣的学习者
文章同步更新公众号:持续学习的杜吉普
温馨提示:阅读本文之前,需对以下内容进行了解并掌握
本文白话什么:
用户精细化管理用的 K-means 聚类分析
本文提纲:
聚类分析的用处
聚类分析的原理
如何选择最佳 K 值
多维度数据的 K-means
商业应用场景
注:全文无编程,只含有少量计算,文章内容全部尽量通俗易懂化,请尽情享用。
聚类:K-means 的用处
K-means 是用来聚类的。什么是聚类?就是通过一定的算法将一堆数据自动化的聚成一堆一堆的。以下面的一维数据为例,我们可以通过肉眼很明显的将下面这堆数据分成三堆,蓝色的,绿色的和橙色的。


K-means 原理
当然,上边的例子是我们通过肉眼将数据根据数据属性(所在的位置)进行聚类的,但是如何用算法来达到这个效果就是 K-means 要做的事情。接下来依旧用案例的方法来向大家解释 K-means 的原理。
1. 选择 K 是几。K 就是我们最后要聚成几个类,在我们拿到下面这样的没有经过分类数据后,首先要确定最后我们需要的聚类组数。在我们的案例中,我们暂时先定下 K=3。至于 K 值的最佳选取,我们在之后会说。

2. 随机的选取三个不同的数据点,作为三个聚类组暂时的“老大”,如下图所见。

3. 接着,我们要计算每一个“小弟”(灰色数据点)与每一个“老大”的距离。以下图的第一个灰色数据点为例,计算他们与蓝色、绿色、黄色老大的距离。

4. 第四步是认老大的过程,“小弟们”会主动寻找与自己距离最近的“老大”并且结成帮派。在下图中,我们可以清晰的看到,最终根据小弟与老大之间的距离我们结成了三个帮派,也就是我们暂时通过随机抽取老大的方式将数据聚类成了三个组。

5. 计算 mean of cluster。接着我们要根据上面帮派的位置来计算每一个帮派的平均位置在哪里。下图中的竖线就是三个帮派的平均位置,也叫做 mean of cluster。

6. 帮派迭代。各个帮派的老大的位置就会被平均位置的这条竖线所代替,接着我们再重复步骤 3 中的内容,测量每一个数据点与老大的距离,重新划分帮派,直到帮派划分不再出现变化为止。在这个案例中,我们最终的聚类结果就是下图所示,很反直觉对不对?因为步骤还没有结束。我们需要计算最终聚类解决每一个聚类的 Variation,如下图所示,Variation 就是所有聚类“幅度”的总和。

7. 我们可以神奇的发现,最终的聚类结果和我们步骤 2 中随机选取的老大位置有着很大关系,如果老大的选取发生变化,那么最终我的聚类结果也会发生变化。比如我们如果在最开始随机选取的老大是下面这张图所示,那么根据前面的步骤,我们最终的聚类过程和结果就如下面的几张图所示。很明显,这与第一次的聚类结果是不同的。通过计算 Variation 我们也可以发现,这次的 variation 与第一次的 variation 也是不一样的。

8. 选择最佳的聚类结果。由于每一次的聚类结果会因为步骤 2 中选老大的随机性而产生一定的随机性,那么我们该如何找到最佳的聚类结果呢?答案很简单,重复多次的进行老大的选取,通过足够多的实验,消除选老大过程中所产生的随机性,并且通过每一次聚类结果 Variation 来选择最终最好的聚类。我们选择 Variation 最小的聚类来作为最终的聚类结果。

如何选择最佳的 K 值
依旧以 Variation 为基准来进行选择。
1. 从 k=1 开来重复我们上边建立 K-means 模型的步骤,建立一个 K=1 时最佳的聚类模型,并计算其 Variation。接着 K=2,3,4…我们会得到 K 等于每一个数值时的模型 Variation,如下图所示。

我们会发现随着 K 值增加,模型的 variation 都会随之减少。
2. 可视化 variation 的减少程度,制成折线图。注意这里要计算的是减少程度,reduction of variation。可视化结果如下图所示。

3. 找到拐点 elbow point。我们通过上图可以发现,在 K=3 时,折线发生了一个巨大的变化,即折线上升的趋势突然之间没有之前的猛烈了,这个点就是拐点。于是拐点所对应的 K 就是我们的最佳 K 值。
多维数据的 K-means
多变量数据与我们上边所讲述的单变量数据一样,通过选老大-算距离认老大-算平均重新安排老大-计算 Variation 选最佳模型。唯一的不同点就是计算距离的公式肯定会随着变量的增加而更加复杂。
商业应用场景
一个最耳熟能详的商业应用就是用户精细化管理。说人话就是通过用户的行为数据对用户进行群体划分,并且通过每一个群体的行为特征 behavioral pattern 来针对性的对用户采取营销策略。
例如下图,是我之前做过的用户细分的项目,我通过电商用户的 FMR 行为(购买频率,购买钱数,购买次数)将所有用户分成两类。并通过可视化看出两类数据的行为上的不同。通过这种行为上的差异,我们就可以制定针对性的 marketing 策略来更好的建立企业与用户之间的价值交换。

除此之外,另一个应用场景也是与 Marketing 相关,那就是市场定位。最简单的例子,餐厅选址。我们可以通过区域不同的属性将一个区域分成若干个聚类,通过这些聚类的行为差异来找到合适的市场投放地点。
依旧以之前我做过的项目为例,为了为目标客户选择餐厅投放位置,我们将曼哈顿地区的社区通过地点数据进行了聚类。如下图所示,同一个颜色的社区属于一个聚类。最后我们在通过与客户业务部门进行沟通,确定衡量市场投放成功率的指标 metrics,再根据这个指标找到指标表现优秀的聚类进行市场投放。

本文参考信息来源:
SateQuest
---------------------
白话 ML 就到这里,下期预告:SHAP Value,一个神奇的 Value
PS:有任何疑问欢迎留言,本文完全个人浅薄理解,如有不足欢迎评论区指正。
我是杜吉普,致力于 数据+数据技术+商业场景=商业价值
欢迎关注我,让我们共同持续成长。
版权声明: 本文为 InfoQ 作者【杜吉普】的原创文章。
原文链接:【http://xie.infoq.cn/article/3b1d4cba0d462257bd55a78d0】。文章转载请联系作者。
评论