某零售公司在市面上主要有30款产品,这些产品的类别、销售量和销售额的差异很大,于是该公司的业务分析师想按照一定的标准,将30个产品划分为A、B、C三个等级,以便公司进行产品战略规划,那么他应该怎么做呢? 很多人可能会想到套用波士顿矩阵,以销售量和销售额为横纵坐标轴,计算中心轴,将每个产品落入矩阵当中,就能得到大体的产品分类情况。 好像看上去没问题对不对?但是在实际情况中,很多人这样做出来的却是错误的,为什么呢? 其实这种思路是对的,但是很多人都忽略了一个最关键的问题:应该用什么标准去衡量和判断中心轴的划分 很多人都会选择直接拉取数据的平均值作为中心轴,然而这种分类方法在实际中可能会造成数据的误判,因为类别的不同,数据之间的差异可能会呈现出族群的现象,这时候有些数据就可能会“鱼目混珠”地混入其他类别之中。 比如,我们可以举个很极限的例子,有A、B、C三个产品的销售量分别为100、50、1,很显然A、B产品为一类,C产品为一类;但是如果按照平均值151/3=50.03,划分之后A为一类,B与C划分到了一类。 怎么样,是不是很奇怪,这时就要用到我们今天要介绍的分类分析方法——聚类。 什么是聚类分析?聚类原本是统计学上的概念,现在属于机器学习中非监督学习的范畴,大多都被应用在数据挖掘、数据分析的领域,简单说可以用一个词概括——物以类聚。 如果把人和其他动物放在一起比较,你可以很轻松地找到一些判断特征,比如肢体、嘴巴、耳朵、皮毛等等,根据判断指标之间的差距大小划分出某一类为人,某一类为狗,某一类为鱼等等,这就是聚类。 从定义上讲,聚类就是针对大量数据或者样品,根据数据本身的特性研究分类方法,并遵循这个分类方法对数据进行合理的分类,最终将相似数据分为一组,也就是“同类相同、异类相异”。 聚类不是分类说到这里,可能有人会觉得聚类不就是分类嘛,而其实在严格意义上,聚类与分类并不是一回事,两者有着很大的差异。 分类是按照已定的程序模式和标准进行判断划分,比如我们开头提到的例子,我们直接规定把数据的平均值作为中心轴,那么我们的工作就剩下了一个:判断每一个数据是否达到平均值。 也就是说,在进行分类之前,我们事先已经有了一套数据划分标准,只需要严格按照标准进行数据分组就可以了。 而聚类则不同,我们并不知道具体的划分标准,要靠算法进行判断数据之间的相似性,把相似的数据放在一起,也就是说聚类最关键的工作是:探索和挖掘数据中的潜在差异和联系。 在聚类的结论出来之前,我完全不知道每一类有什么特点,一定要根据聚类的结果通过人的经验来分析,看看聚成的这一类大概有什么特点。 聚类的方法知道了聚类的含义,那么我们具体要怎么对数据进行聚类呢? 聚类方法有很多,但是我们数据分析中常用的就是K-Mcans聚类法,这种方法很简单,也很有效,在很多分析软件上都能进行算法计算。 简答拿一个例子介绍一下K-Mcans聚类法的原理和过程: 1、确定分组数 K-Mcans聚类法中的K就是分组数,也就是我们希望通过聚类后得到多少个组类。比如我有下面六个数据,想要将这些数据分成两类,那么K=2 。 2、随机选择K个值作为数据中心 这个数据中心的选择是完全随机的,也就是说怎么选择都无所谓,因为这里K=2,所以我们就以A和B两个为数据中心。 为了方便理解,我们可以制作一个散点图,将A、B作为数据中心。 3、计算其他数值与数据中心的“距离” 既然选择了数据中心,那么它们的周围一定会有很多相似数据,怎么判断这些数据与其是不是相似呢? 这里我们要引入欧氏距离的概念,通俗点说欧氏距离就是多维空间中各个点之间的绝对距离,表明两点之间的距离远近,其公式为: 如果是普通的二维数据,这个公式就直接变成了勾股定理,因此我们算出其他6个点距离A和B的距离,谁离得更近,谁与数据中心就是同一类。 所以,我们可以看出,C-H距离B的距离都比距离A更近,所以第一次分组为:
4、重新选择新的数据中心 得到了第一次分组的结果,我们再重复前两个步骤,重新选择每一组数据的数据中心。
5、再次计算其他数据与新数据中心的距离 还是直接计算勾股定理,计算出其他数据与A和P的欧氏距离,如下: 我们可以看出这里面有的距离A近,有的距离P近,于是第二次分组为:
6、再次重新选择数据中心 这里就是老规矩了,继续重复前面的操作,将每一组数据的平均值作为数据中心:
7、再次计算其他数据与新数据中心的距离 这时候我们发现,只有A与B距离O的距离更近,其他6个数据都距离Q更近,因此第三次分组为:
经过这次计算我们发现分组情况并没有变化,这就说明我们的计算收敛已经结束了,不需要继续进行分组了,最终数据成功按照相似性分成了两组。 8、方法总结 简单来说,我们一次次重复这样的选择数据中心-计算距离-分组-再次选择数据中心的流程,直到我们分组之后所有的数据都不会再变化了,也就得到了最终的聚合结果。 实际中怎么用聚类明白了聚类分析的思路和方法,我们怎么应用到实际中去呢?面对大量数据的时候我们该怎么办呢? 其实很多分析软件中都有聚类分析的功能,比如Python、Excel等等,比如FineBI中的聚类功能,下次分析数据的时候应该知道这些名称是什么意思了吧? 给出聚类数和距离方式,就可以迅速得出聚合结果,大家可以点击左下角“了解更多”下载尝试一下。 |
|