基于Python的大数据分析基础(十一)---K-Means算法( 聚类分析)

10.1 聚类分析相关概念(未完待补充)

    10.1.1 聚类与分类

    分类其实是从特定的数据中挖掘模式,作出判断的过程。比如Gmail邮箱里有垃圾邮件分类器,一开始的时候可能什么都不过滤,在日常使用过程中,我人工对于每一封邮件点选“垃圾”或“不是垃圾”,过一段时间,Gmail就体现出一定的智能,能够自动过滤掉一些垃圾邮件了。这是因为在点选的过程中,其实是给每一条邮件打了一个“标签”,这个标签只有两个值,要么是“垃圾”,要么“不是垃圾”,Gmail就会不断研究哪些特点的邮件是垃圾,哪些特点的不是垃圾,形成一些判别的模式,这样当一封信的邮件到来,就可以自动把邮件分到“垃圾”和“不是垃圾”这两个我们人工设定的分类的其中一个。

      聚类的的目的也是把数据分类,但是事先是不知道如何去分的,完全是算法自己来判断各条数据之间的相似性,相似的就放在一起。在聚类的结论出来之前,我完全不知道每一类有什么特点,一定要根据聚类的结果通过人的经验来分析,看看聚成的这一类大概有什么特点。

    简而言之,聚类分析,没给定划分类别,根据数据的相似度进行分组的一种方法,分组原则是组内距离最小化而组间距离最大化

   10.1.2 核心思想

    通过迭代寻找k个类簇的一种划分方案,使得用这k个类簇的均值来代表相应各类样本时所得的总体误差最小。

k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。k-means算法的基础是最小误差平方和准则,其代价函数是:

                                                基于Python的大数据分析基础(十一)---K-Means算法( 聚类分析)

式中,μc(i)表示第i个聚类的均值。

各类簇内的样本越相似,其与该类均值间的误差平方越小,对所有类所得到的误差平方求和,即可验证分为k类时,各聚类是否是最优的。

  10.1.3  算法过程

   ①从N个样本数据中随机选取K个对象作为初始的聚类质心;
    ②分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中;
    ③所有对象分配完成之后,重新计算K个聚类的质心;
    ④与前一次的K个聚类中心比较,如果发生变化,重复步骤②,否则转到⑤;
    ⑤当质心不在发生变化时,停止聚类过程,并输出聚类结果;
    伪代码:
        随机选择K个点作为初始质心点
        当任意一个点的簇分配结果发生改变时
            对数据集中的每一个数据点
                对每一个质心
                    计算质心与数据点的距离
                将数据点分配到距离最近的簇
        对每一个簇,计算簇中所有点的均值,并将均值作为质心

10.2 问题的提出:

     航空公司经常会对客户进行分类,那么怎样对客户分群,才能区分高价值客户、无价值客户等,
并对不同的客户群体实施个性化的营销策略,以实现利润最大化?
    餐饮企业也会经常碰到此类问题。如何通过对客户的消费行为来评价客户 对企业的贡献度,
从而提高对某些客户群体的关注度,以实现企业利润的最 大化?如何通过客户对菜品的消费明细,
  来判断哪些菜品是招牌菜(客户必点),哪些又是配菜(点了招牌菜或许会点的菜品),以此来提高餐饮的精准采购?

10.3 模型的建立

对于上面的情景,可使用聚类分析方法处理。

根据航空公司目前积累的大量客户会员信息及其乘坐的航班记录,可以得到包括姓名、乘机的间隔、乘机次数 、消费金额等十几条属性信息。
    本情景案例是想要获取客户价值,识别客户价值应用的最广泛的模型是RFM模型,三个字母分别代表Recency(最近消费时间间隔)、
Frequency(消费频率)、 Monetary(消费金额)这三个指标。结合具体情景,最终选取客户消费时间间隔R、消费频率F、消费金额M这三个指标作为
航空公司识别客户价值的指标。
    为了方便说明操作步骤,本案例简单选择三个指标进行K-Means聚类分析来识别出最优价值的客户。航空公司在真实的判断客户类别时,
选取的观测维度要大得多。

                         基于Python的大数据分析基础(十一)---K-Means算法( 聚类分析)

本情景案例的 主要步骤包括 :

(1)对数据集进行清洗处理,包括数据缺失与异常处理、数据属性的规 约、数据清洗和变换,把数据处理成可使用的数据( Data);
(2)利用已预 处理的数据(data),基于盯M 模型进行客户分群,对各个 客户群进行特征分析,对客户进行分类;
(3)针对不同 类型的客户制定不同的营销政策,实行个性化服务。

10.4 Python 代码实现