精华内容
下载资源
问答
  • 对客户的聚类分析案例
    千次阅读
    2020-05-27 14:06:37

    聚类分析——客户分群分析

    一、聚类
    聚类分析主要是针对无监督问题,即没有标签值。回顾之前python分析淘宝用户行为(三),我们再运用RFM模型时,人为制作评分系统,并打上标签值,今天主要是直接将其当作无监督问题来处理
    简单来说,就是将相似的东西分到一组,比如说我们进行客户分群时,会根据其价值进行分群,从而制定精准策略。但聚类也存在一些问题,比如说如何评估,如何调参等等。
    二、K-Means算法
    理论解释并不是很难理解,我简单说一下自己的理解,现在有很多组数据,没有标签值,只能根据他们之间的相似度进行分组。
    **过程:**指定需要分多少种客户类型,即K值,然后选取质心(利用向量各维取平均值),选完后将周围的点计算欧几里得距离,最后根据距离进行相似分类。

    **优势:**简单,快速,适合常规数据集

    **劣势:**K值难确定;复杂度与样本呈线性关系;很难发现任意形状的簇
    三、DBSCAN算法
    1、基本概念

    **核心对象:**若某个点的密度达到算法设定的阈值则其为核心点(即r领域内的数量不小于minPts)

    **\epsilon-领域的距离阈值:**设定的半径r
    **直接密度可达:**若某点p在点q的领域内,且q是核心点则p-q直接密度可达

    **密度可达:**若有一个点的序列q0,q1…qk,对于任意其qi-qi-1是直接密度可达的,则称为从q0到qk密度可达,这实际上是直接密度可达的“传播”

    **过程:**数据集-指定半径(r)-密度阈值(Minpts)-进行聚类
    参数选择:

    **半径:**可以根据K距离来设定

    **K距离:**给定数据集P ={p(i);i=0,1,…n},计算点p(i)到集合D的子集S中所有点的距离,距离按照从小到大的顺序排序,d(K)就被称为k-距离

    **MinPts:**k-距离中k的值,一般取的小一些,多次尝试

    **优势:**不需要指定簇个数;可以发现任意形状的簇;擅长找到离群点(检测任务);两个参数就够了。
    **劣势:**高维数据有些困难(可以做降维);参数难以选择(参数对结果的影响非常大);sklearn中效率很慢(数据削减策略)。

    四、练习

    本次分析数据来源CDNow网站的用户在1997年1月1日至1998年6月30日期间内购买CD交易明细。数据集一共有用户ID,购买日期,订单数,订单金额四个字段。对其利用RFM模型进行聚类分析。

    第一步:获取数据,并进行简单的数据清洗

    import pandas as pd
    import numpy as np
    columns=['user_id','order_time','order_products','order_money']
    data=pd.read_table(r'C:\Users\Administrator\Desktop\python\project\聚类分析\RFM\CDNOW.txt',sep='\s+',names=columns)
    data.head()
    print(data.describe())
    print(data.info())
    # 查看异常值
    missing = data.isnull().sum()
    # 删除重复值
    data = data.drop_duplicates(keep ='first',inplace = False)
    # 检查异常值,并删掉(本数据中,订单金额为0,是异常数据)
    expect = data[data['order_money']==0] 
    data=data.drop(index=(data.loc[(data['order_money']==0)].index)) 
    # 数据类型转换,注意看到日期数据,基本都是下面操作
    data['order_time'] = pd.to_datetime(data['order_time'],format = '%Y%m%d')
    

    第二步,构造特征向量
    关于RFM模型进行客户分组时,需要R、F、M值,以下为构造过程:

    # R值是最近一次消费时间与截至时间的间隔(用day来衡量)
    data['order_interval']= pd.to_datetime('1998-06-30')-data['order_time']
    data['order_interval'] = data['order_interval'].apply(lambda x:x.days) #去掉日期间隔的days
    # F值是指消费的频率,M值表示消费的金额
    rfm = data.groupby(['user_id'],as_index = False).agg({'order_interval':'min','order_products':'count','order_money':'sum'})
    rfm.columns = ['user_id','r','f','m']  #重命名列:最近一次订单r,订单频率f和订单总金额m
    

    第三步,进行模型建立之前,需要对数据进行标准化处理

    from sklearn.preprocessing import StandardScaler
    data = StandardScaler().fit_transform(rfm.loc[:,['r','f','m']])
    第四步:建立模型
    from sklearn.cluster import KMeans
    kmodel = KMeans(n_clusters=3)
    kmodel.fit(data)
    
    # 查看聚类结果
    kmeans_cc = kmodel.cluster_centers_  # 聚类中心
    print('各类聚类中心为:\n',kmeans_cc)
    kmeans_labels = kmodel.labels_  # 样本的类别标签
    print('各样本的类别标签为:\n',kmeans_labels)
    r1 = pd.Series(kmodel.labels_).value_counts()  # 统计不同类别样本的数目
    print('最终每个类别的数目为:\n',r1)
    
    各类聚类中心为:
     [[ 0.62263953 -0.33099376 -0.26103463]
     [-1.37152564  0.60113127  0.42723658]
     [-1.77096075  7.04810188  7.79356919]]
    各样本的类别标签为:
     [0 0 1 ... 0 0 0]
    最终每个类别的数目为:
     0    16182
    1     7170
    2      150
    dtype: int64
    
    # 输出聚类分群的结果
    cluster_center = pd.DataFrame(kmodel.cluster_centers_,columns = ['ZR','ZF','ZM'])   # 将聚类中心放在数据框中
    cluster_center.index = pd.DataFrame(kmodel.labels_ ).drop_duplicates().iloc[:,0]  # 将样本类别作为数据框索引
    print(cluster_center)
    
         ZR        ZF        ZM
    0                              
    0  0.622640 -0.330994 -0.261035
    1 -1.371526  0.601131  0.427237
    2 -1.770961  7.048102  7.793569
    

    简单的聚类分析就是这样,根据结果,我们发现这些客户被分为了三种,其中第0组的占比非常大,应该是最近购买间隔占比较大,说明公司的可持续性高。第1组购买频率较高,说明客户粘性较大,最后一组的购买频率和购买金额都较高,可以进行VIP服务。
    将结果进行可视化分析,从而更清晰的进行结果分析。

    # 客户分群雷达图
    labels = ['ZR','ZF','ZM']
    legen = [' customers' + str(i + 1) for i in cluster_center.index]  # 客户群命名,作为雷达图的图例
    lstype = ['-',':','-.']
    kinds = list(cluster_center.iloc[:, 0])
    # 由于雷达图要保证数据闭合,因此再添加L列,并转换为 np.ndarray
    cluster_center = pd.concat([cluster_center, cluster_center[['ZR']]], axis=1)
    centers = np.array(cluster_center.iloc[:, 0:])
    
    # 分割圆周长,并让其闭合
    n = len(labels)
    angle = np.linspace(0, 2 * np.pi, n, endpoint=False)
    angle = np.concatenate((angle, [angle[0]]))
    
    import matplotlib.pyplot as plt
    # 绘图
    fig = plt.figure(figsize = (8,6))
    ax = fig.add_subplot(111, polar=True)  # 以极坐标的形式绘制图形
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    # 画线
    for i in range(len(kinds)):
        ax.plot(angle, centers[i], linestyle=lstype[i], linewidth=3, label=kinds[i])
    # 添加属性标签
    ax.set_thetagrids(angle * 180 / np.pi, labels)
    plt.title('Customer Profile Analysis')
    plt.legend(legen)
    

    在这里插入图片描述
    当然,看上面这个图,我们发现分类分得并不是很好,我们可以利用肘部法和轮廓系数来进行相应的评估和调参。

    from sklearn.metrics import silhouette_score,silhouette_samples
    for n_clusters in range(2,10):
        km = KMeans(n_clusters=n_clusters)
        preds = km.fit_predict(data)
        centers =km.cluster_centers_
        score = silhouette_score(data,preds)
        print('For n_clusters = {},silhouette_score is {}'.format(n_clusters,score))
    # 寻找轮廓系数接近1的,在这个情况下,还是k=3,轮廓系数最高
    

    综上所述,聚类分析用在无监督问题,具体问题还是要具体分析,这个案例只是练习,也可以将特征进行一系列处理,从而达到更好的效果。

    更多相关内容
  • from sklearn.cluster import KMeans # 导入sklearn聚类模块 from sklearn.metrics import silhouette_score, calinski_harabaz_score # 效果评估模块 from sklearn.preprocessing import MinMaxScaler # 标准化库 #...
  • 从统计学的观点看,聚类分析是通过数据建模简化数据的一种方法。传统的统计聚类分析方法包括系统聚类法、分解法、加入法、动态聚类法、有序样品聚类、有重叠聚类和模糊聚类等。从机器学习的角度讲,簇相当于隐藏模式...

    聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性。

    从统计学的观点看,聚类分析是通过数据建模简化数据的一种方法。传统的统计聚类分析方法包括系统聚类法、分解法、加入法、动态聚类法、有序样品聚类、有重叠聚类和模糊聚类等。

    从机器学习的角度讲,簇相当于隐藏模式。聚类是搜索簇的无监督学习过程。与分类不同,无监督学习不依赖预先定义的类或带类标记的训练实例,需要由聚类学习算法自动确定标记,而分类学习的实例或数据对象有类别标记。聚类是观察式学习,而不是示例式的学习。

    从实际应用的角度看,聚类分析是数据挖掘的主要任务之一。而且聚类能够作为一个独立的工具获得数据的分布状况,观察每一簇数据的特征,集中对特定的聚簇集合作进一步地分析。聚类分析还可以作为其他算法(如分类和定性归纳算法)的预处理步骤。

    聚类分析的核心思想就是物以类聚,人以群分。在市场细分领域,消费同一种类的商品或服务时,不同的客户有不同的消费特点,通过研究这些特点,企业可以制定出不同的营销组合,从而获取最大的消费者剩余,这就是客户细分的主要目的。在销售片区划分中,只有合理地将企业所拥有的子市场归成几个大的片区,才能有效地制定符合片区特点的市场营销战略和策略。金融领域,对基金或者股票进行分类,以选择分类投资风险。

    下面以一个汽车销售的案例来介绍聚类分析在市场细分中的应用。

    聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性。

    从统计学的观点看,聚类分析是通过数据建模简化数据的一种方法。传统的统计聚类分析方法包括系统聚类法、分解法、加入法、动态聚类法、有序样品聚类、有重叠聚类和模糊聚类等。

    从机器学习的角度讲,簇相当于隐藏模式。聚类是搜索簇的无监督学习过程。与分类不同,无监督学习不依赖预先定义的类或带类标记的训练实例,需要由聚类学习算法自动确定标记,而分类学习的实例或数据对象有类别标记。聚类是观察式学习,而不是示例式的学习。

    从实际应用的角度看,聚类分析是数据挖掘的主要任务之一。而且聚类能够作为一个独立的工具获得数据的分布状况,观察每一簇数据的特征,集中对特定的聚簇集合作进一步地分析。聚类分析还可以作为其他算法(如分类和定性归纳算法)的预处理步骤。

    聚类分析的核心思想就是物以类聚,人以群分。在市场细分领域,消费同一种类的商品或服务时,不同的客户有不同的消费特点,通过研究这些特点,企业可以制定出不同的营销组合,从而获取最大的消费者剩余,这就是客户细分的主要目的。在销售片区划分中,只有合理地将企业所拥有的子市场归成几个大的片区,才能有效地制定符合片区特点的市场营销战略和策略。金融领域,对基金或者股票进行分类,以选择分类投资风险。

    下面以一个汽车销售的案例来介绍聚类分析在市场细分中的应用。

    商业目标

    业务理解:数据名称《汽车销售.csv》。该案例所用的数据是一份关于汽车的数据,该数据文件包含销售值、订价以及各种品牌和型号的车辆的物理规格。订价和物理规格可以从 edmunds.com 和制造商处获得。定价为美国本土售价。如下:

    表1:数据视图

    业务目标:对市场进行准确定位,为汽车的设计和市场份额预测提供参考。

    数据挖掘目标:通过聚类的方式对现有的车型进行分类。

    数据准备

    通过数据探索对数据的质量和字段的分布进行了解,并排除有问题的行或者列优化数据质量。

    第一步,我们使用统计节点审核数据的质量,从审核结果中我们发现存在缺失的数据,如下图所示:

    第二步,对缺失的数据进行处理,我们选择使用缺失填充节点删除这些记录。配置如下:

    建模

    我们选择层次聚类进行分析,尝试根据各种汽车的销售量、价格、引擎、马力、轴距、车宽、车长、制动、排量、油耗等指标对其分类。

    因为层次聚类不能自动确定分类数量,因此需要我们以自定义的方式规定最后聚类的类别数。层次聚类节点配置如下(默认配置):

    可以使用交互表或者右击层次聚类节点查看聚类的结果,如下图所示:

    再使用饼图查看每个类的大小,结果如下:

    从图中可见,分成的三个类样本数差异太大,cluster_0和cluster_1包含的样本数都只有1,这样的分类是没有意义的,因此需要重新分类。我们尝试在层次聚类节点的配置中指定新的聚类方法:完全。新的聚类样本数分布如下:

    cluster_0、 cluster_1、cluster_2的样本数分别为:50、9、93。

    执行后输出树状/冰柱图,可以从上往下看,一开始是一大类,往下走就分成了两类,越往下分的类越多,最后细分到每一个记录是一类,如下所示:

    我们可以再使用条形图查看每类的销售量、平均价格,如下图所示:

    每类总销量分布图

    每类平均销量分布图

    每类平均价格分布图

    我们再看一下每类的销售额分布情况。首先,我们需要使用Java代码段节点或者派生节点生成销售额字段,配置如下:

    再使用饼图查看销售额分布情况,cluster_0、 cluster_1、cluster_2的市场份额分别为:32.39%、0.53%和67.08%,如下图所示:

    案例小结

    通过这个案例,大家可以发现聚类分析确实很简单。进行聚类计算后,主要通过图形化探索的方式评估聚类合理性,以及在确定聚类后,分析每类的特征。

    本文转自数据科学研习社 作者陈丹奕

    展开全文
  • 聚类分析案例

    千次阅读 2020-12-20 11:35:21
    一、数据挖掘的常用方法利用数据挖掘进行数据分析常用的方法主要有分类、回归分析聚类、关联规则、特征、变化和偏差分析、Web页挖掘等,它们分别从不同的角度数据进行挖掘。分类。分类是找出数据库中一组数据...

    一、数据挖掘的常用方法

    利用数据挖掘进行数据分析常用的方法主要有分类、回归分析、聚类、关联规则、特征、变化和偏差分析、Web页挖掘等,它们分别从不同的角度对数据进行挖掘。

    分类。分类是找出数据库中一组数据对象的共同特点并按照分类模式将其划分为不同的类,其目的是通过分类模型,将数据库中的数据项映射到某个给定的类别。它可以应用到客户的分类、客户的属性和特征分析、客户满意度分析、客户的购买趋势预测等,如一个汽车零售商将客户按照对汽车的喜好划分成不同的类,这样营销人员就可以将新型汽车的广告手册直接邮寄到有这种喜好的客户手中,从而大大增加了商业机会。

    回归分析。回归分析方法反映的是事务数据库中属性值在时间上的特征,产生一个将数据项映射到一个实值预测变量的函数,发现变量或属性间的依赖关系,其主要研究问题包括数据序列的趋势特征、数据序列的预测以及数据间的相关关系等。它可以应用到市场营销的各个方面,如客户寻求、保持和预防客户流失活动、产品生命周期分析、销售趋势预测及有针对性的促销活动等。

    聚类。聚类分析是把一组数据按照相似性和差异性分为几个类别,其目的是使得属于同一类别的数据间的相似性尽可能大,不同类别中的数据间的相似性尽可能小。它可以应用到客户群体的分类、客户背景分析、客户购买趋势预测、市场的细分等。

    关联规则。关联规则是描述数据库中数据项之间所存在的关系的规则,即根据一个事务中某些项的出现可导出另一些项在同一事务中也出现,即隐藏在数据间的关联或相互关系。在客户关系管理中,通过对企业的客户数据库里的大量数据进行挖掘,可以从大量的记录中发现有趣的关联关系,找出影响市场营销效果的关键因素,为产品定位、定价与定制客户群,客户寻求、细分与保持,市场营销与推销,营销风险评估和诈骗预测等决策支持提供参考依据。

    特征。特征分析是从数据库中的一组数据中提取出关于这些数据的特征式,这些特征式表达了该数据集的总体特征。如营销人员通过对客户流失因素的特征提取,可以得到导致客户流失的一系列原因和主要特征,利用这些特征可以有效地预防客户的流失。

    变化和偏差分析。偏差包括很大一类潜在有趣的知识,如分类中的反常实例,模式的例外,观察结果对期望的偏差等,其目的是寻找观察结果与参照量之间有意义的差别。在企业危机管理及其预警中,管理者更感兴趣的是那些意外规则。意外规则的挖掘可以应用到各种异常信息的发现、分析、识别、评价和预警等方面。

    Web页挖掘。随着Internet的迅速发展及Web 的全球普及, 使得Web上的信息量无比丰富,通过对Web的挖掘,可以利用Web 的海量数据进行分析,收集政治、经济、政策、科技、金融、各种市场、竞争对手、供求信息、客户等有关的信息,集中精力分析和处理那些对企业有重大或潜在重大影响的外部环境信息和内部经营信息,并根据分析结果找出企业管理过程中出现的各种问题和可能引起危机的先兆,对这些信息进行分析和处理,以便识别、分析、评价和管理危机。

    二、数据挖掘的功能

    数据挖掘通过预测未来趋势及行为,做出前摄的、基于知识的决策。数据挖掘的目标是从数据库中发现隐含的、有意义的知识,主要有以下五类功能。

    自动预测趋势和行为:数据挖掘自动在大型数据库中寻找预测性信息,以往需要进行大量手工分析的问题如今可以迅速直接由数据本身得出结论。一个典型的例子是市场预测问题,数据挖掘使用过去有关促销的数据来寻找未来投资中回报最大的用户,其它可预测的问题包括预报破产以及认定对指定事件最可能做出反应的群体。

    关联分析:数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联可分为简单关联、时序关联、因果关联。关联分析的目的是找出数据库中隐藏的关联网。有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此关联分析生成的规则带有可信度。

    聚类:数据库中的记录可被化分为一系列有意义的子集,即聚类。聚类增强了人们对客观现实的认识,是概念描述和偏差分析的先决条件。聚类技术主要包括传统的模式识别方法和数学分类学。80年代初,Michalski提出了概念聚类技术,其要点是,在划分对象时不仅考虑对象之间的距离,还要求划分出的类具有某种内涵描述,从而避免了传统技术的某些片面性。

    概念描述:概念描述就是对某类对象的内涵进行描述,并概括这类对象的有关特征。概念描述分为特征性描述和区别性描述,前者描述某类对象的共同特征,后者描述不同类对象之间的区别。生成一个类的特征性描述只涉及该类对象中所有对象的共性。生成区别性描述的方法很多,如决策树方法、遗传算法等。

    偏差检测:数据库中的数据常有一些异常记录,从数据库中检测这些偏差很有意义。偏差包括很多潜在的知识,如分类中的反常实例、不满足规则的特例、观测结果与模型预测值的偏差、量值随时间的变化等。偏差检测的基本方法是,寻找观测结果与参照值之间有意义的差别。

    三、数据挖掘实例 – 聚类分析应用之市场细分

    聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性。

    从统计学的观点看,聚类分析是通过数据建模简化数据的一种方法。传统的统计聚类分析方法包括系统聚类法、分解法、加入法、动态聚类法、有序样品聚类、有重叠聚类和模糊聚类等。

    从机器学习的角度讲,簇相当于隐藏模式。聚类是搜索簇的无监督学习过程。与分类不同,无监督学习不依赖预先定义的类或带类标记的训练实例,需要由聚类学习算法自动确定标记,而分类学习的实例或数据对象有类别标记。聚类是观察式学习,而不是示例式的学习。

    从实际应用的角度看,聚类分析是数据挖掘的主要任务之一。而且聚类能够作为一个独立的工具获得数据的分布状况,观察每一簇数据的特征,集中对特定的聚簇集合作进一步地分析。聚类分析还可以作为其他算法(如分类和定性归纳算法)的预处理步骤。

    聚类分析的核心思想就是物以类聚,人以群分。在市场细分领域,消费同一种类的商品或服务时,不同的客户有不同的消费特点,通过研究这些特点,企业可以制定出不同的营销组合,从而获取最大的消费者剩余,这就是客户细分的主要目的。在销售片区划分中,只有合理地将企业所拥有的子市场归成几个大的片区,才能有效地制定符合片区特点的市场营销战略和策略。金融领域,对基金或者股票进行分类,以选择分类投资风险。

    下面以一个汽车销售的案例来介绍聚类分析在市场细分中的应用。

    商业目标

    业务理解:数据名称《汽车销售.csv》。该案例所用的数据是一份关于汽车的数据,该数据文件包含销售值、订价以及各种品牌和型号的车辆的物理规格。订价和物理规格可以从 edmunds.com 和制造商处获得。定价为美国本土售价。如下:

    表1:数据视图

    业务目标:对市场进行准确定位,为汽车的设计和市场份额预测提供参考。

    数据挖掘目标:通过聚类的方式对现有的车型进行分类。

    数据准备

    通过数据探索对数据的质量和字段的分布进行了解,并排除有问题的行或者列优化数据质量。

    第一步,我们使用统计节点审核数据的质量,从审核结果中我们发现存在缺失的数据,如下图所示:

    第二步,对缺失的数据进行处理,我们选择使用缺失填充节点删除这些记录。配置如下:

    建模

    我们选择层次聚类进行分析,尝试根据各种汽车的销售量、价格、引擎、马力、轴距、车宽、车长、制动、排量、油耗等指标对其分类。

    因为层次聚类不能自动确定分类数量,因此需要我们以自定义的方式规定最后聚类的类别数。层次聚类节点配置如下(默认配置):

    可以使用交互表或者右击层次聚类节点查看聚类的结果,如下图所示:

    再使用饼图查看每个类的大小,结果如下:

    从图中可见,分成的三个类样本数差异太大,cluster_0和cluster_1包含的样本数都只有1,这样的分类是没有意义的,因此需要重新分类。我们尝试在层次聚类节点的配置中指定新的聚类方法:完全。新的聚类样本数分布如下:

    cluster_0、 cluster_1、cluster_2的样本数分别为:50、9、93。

    执行后输出树状/冰柱图,可以从上往下看,一开始是一大类,往下走就分成了两类,越往下分的类越多,最后细分到每一个记录是一类,如下所示:

    我们可以再使用条形图查看每类的销售量、平均价格,如下图所示:

    每类总销量分布图

    每类平均销量分布图

    每类平均价格分布图

    我们再看一下每类的销售额分布情况。首先,我们需要使用Java代码段节点或者派生节点生成销售额字段,配置如下:

    再使用饼图查看销售额分布情况,cluster_0、 cluster_1、cluster_2的市场份额分别为:32.39%、0.53%和67.08%,如下图所示:

    案例小结

    通过这个案例,大家可以发现聚类分析确实很简单。进行聚类计算后,主要通过图形化探索的方式评估聚类合理性,以及在确定聚类后,分析每类的特征。

    展开全文
  • 聚类分析的简单案例

    千次阅读 2020-12-20 11:35:30
    处于相同聚类中的数据实例彼此相同,处于不同聚类中的实例彼此不同。聚类技术通常又被称为无监督学习,因为与监督学习不同,在聚类中那些表示数据类别的分类或者分组信息是没有的。通过上述表述,我们可以把聚类定义...

    基本概念

    聚类就是一种寻找数据之间一种内在结构的技术。聚类把全体数据实例组织成一些相似组,而这些相似组被称作聚类。处于相同聚类中的数据实例彼此相同,处于不同聚类中的实例彼此不同。聚类技术通常又被称为无监督学习,因为与监督学习不同,在聚类中那些表示数据类别的分类或者分组信息是没有的。

    通过上述表述,我们可以把聚类定义为将数据集中在某些方面具有相似性的数据成员进行分类组织的过程。因此,聚类就是一些数据实例的集合,这个集合中的元素彼此相似,但是它们都与其他聚类中的元素不同。在聚类的相关文献中,一个数据实例有时又被称为对象,因为现实世界中的一个对象可以用数据实例来描述。同时,它有时也被称作数据点(Data Point),因为我们可以用r 维空间的一个点来表示数据实例,其中r 表示数据的属性个数。下图显示了一个二维数据集聚类过程,从该图中可以清楚地看到数据聚类过程。虽然通过目测可以十分清晰地发现隐藏在二维或者三维的数据集中的聚类,但是随着数据集维数的不断增加,就很难通过目测来观察甚至是不可能。

    SAS聚类分析案例

    1 问题背景

    考虑下面案例,一个棒球管理员希望根据队员们的兴趣相似性将他们进行分组。显然,在该例子中,没有响应变量。管理者希望能够方便地识别出队员的分组情况。同时,他也希望了解不同组之间队员之间的差异性。

    该案例的数据集是在SAMPSIO库中的DMABASE数据集。下面是数据集中的主要的变量的描述信息:

    在这个案例中,设置TEAM,POSITION,LEAGUE,DIVISION和SALARY变量的模型角色为rejected,设置SALARY变量的模型角色为rejected是由于它的信息已经存储在LOGSALAR中。在聚类分析和自组织映射图中是不需要目标变量的。如果需要在一个目标变量上识别分组,可以考虑预测建模技术或者定义一个分类目标。

    2 聚类方法概述

    聚类分析经常和有监督分类相混淆,有监督分类是为定义的分类响应变量预测分组或者类别关系。而聚类分析,从另一方面考虑,它是一种无监督分类技术。它能够在所有输入变量的基础上识别出数据集中的分组和类别信息。这些组、簇,赋予不同的数字。然而,聚类数目不能用来评价类别之间的近似关系。自组织映射图尝试创建聚类,并且在一个图上用图形化的方式绘制出聚类信息,在此处我们并没有考虑。

    1) 建立初始数据流

    2) 设置输入数据源结点

    打开输入数据源结点

    从SAMPSIO库中选择DMABASE数据集

    设置NAME变量的模型角色为id,TEAM,POSIOTION,LEAGUE,DIVISION和SALARY变量的模型角色为rejected

    探索变量的分布和描述性统计信息

    选择区间变量选项卡,可以观察到只有LOGSALAR和SALARY变量有缺失值。选择类别变量选项卡,可以观察到没有缺失值。在本例中,没有涉及到任何类别变量。

    关闭输入数据源结点,并保存信息。

    3) 设置替代结点

    虽然并不是总是要处理缺失值,但是有时候缺失值的数量会影响聚类结点产生的聚类解决方案。为了产生初始聚类,聚类结点往往需要一些完整的观测值。当缺失值太多的时候,需要用替代结点来处理。虽然这并不是必须的,但是在本例中使用到了。

    4) 设置聚类结点

    打开聚类结点,激活变量选项卡。K-means聚类对输入数据是敏感的。一般情况下,考虑对数据集进行标准化处理。

    在变量选项卡,选择标准偏差单选框

    选择聚类选项卡

    观察到默认选择聚类数目的方法是自动的

    关闭聚类结点

    5) 聚类结果

    在聚类结点处运行流程图,查看聚类结果。

    6) 限定聚类数目

    打开聚类结点

    选择聚类选项卡

    在聚类数目选择部分,点击选择标准按钮

    输入最大聚类数目为10

    点击ok,关闭聚类结点

    7)结果解释

    我们可以定义每个类别的信息,结合背景识别每个类型的特征。选择箭头按钮,

    选择三维聚类图的某一类别,

    在工具栏选择刷新输入均值图图标,

    点击该图标,可以查看该类别的规范化均值图

    同理,可以根据该方法对其他类别进行解释。

    8)运用Insight结点

    Insight结点可以用来比较不同属性之间的异常。打开insight结点,选择整个数据集,关闭结点。

    从insight结点处运行。

    变量_SEGMNT_标识类别,distance标识观测值到所在类别中心的距离。运用insight窗口的analyze工具评估和比较聚类结果。

    首先把_SEGMNT_的度量方式从interval转换成nominal。

    聚类应用

    在商业上,聚类分析被用来发现不同的客户群,并且通过购买模式刻画不同的客户群的特征。聚类分析是细分市场的有效工具,同时也可用于研究消费者行为,寻找新的潜在市场、选择实验的市场,并作为多元分析的预处理。在生物上,聚类分析被用来动植物分类和对基因进行分类,获取对种群固有结构的认识。在地理上,聚类能够帮助在地球中被观察的数据库商趋于的相似性。在保险行业上,聚类分析通过一个高的平均消费来鉴定汽车保险单持有者的分组,同时根据住宅类型,价值,地理位置来鉴定一个城市的房产分组。在因特网应用上,聚类分析被用来在网上进行文档归类来修复信息。在电子商务上,聚类分析在电子商务中网站建设数据挖掘中也是很重要的一个方面,通过分组聚类出具有相似浏览行为的客户,并分析客户的共同特征,可以更好的帮助电子商务的用户了解自己的客户,向客户提供更合适的服务。

    聚类分析应用——市场细分

    聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性。

    从统计学的观点看,聚类分析是通过数据建模简化数据的一种方法。传统的统计聚类分析方法包括系统聚类法、分解法、加入法、动态聚类法、有序样品聚类、有重叠聚类和模糊聚类等。

    从机器学习的角度讲,簇相当于隐藏模式。聚类是搜索簇的无监督学习过程。与分类不同,无监督学习不依赖预先定义的类或带类标记的训练实例,需要由聚类学习算法自动确定标记,而分类学习的实例或数据对象有类别标记。聚类是观察式学习,而不是示例式的学习。

    从实际应用的角度看,聚类分析是数据挖掘的主要任务之一。而且聚类能够作为一个独立的工具获得数据的分布状况,观察每一簇数据的特征,集中对特定的聚簇集合作进一步地分析。聚类分析还可以作为其他算法(如分类和定性归纳算法)的预处理步骤。

    聚类分析的核心思想就是物以类聚,人以群分。在市场细分领域,消费同一种类的商品或服务时,不同的客户有不同的消费特点,通过研究这些特点,企业可以制定出不同的营销组合,从而获取最大的消费者剩余,这就是客户细分的主要目的。在销售片区划分中,只有合理地将企业所拥有的子市场归成几个大的片区,才能有效地制定符合片区特点的市场营销战略和策略。金融领域,对基金或者股票进行分类,以选择分类投资风险。

    下面以一个汽车销售的案例来介绍聚类分析在市场细分中的应用。

    商业目标

    业务理解:数据名称《汽车销售.csv》。该案例所用的数据是一份关于汽车的数据,该数据文件包含销售值、订价以及各种品牌和型号的车辆的物理规格。订价和物理规格可以从 edmunds.com 和制造商处获得。定价为美国本土售价。如下:

    业务目标:对市场进行准确定位,为汽车的设计和市场份额预测提供参考。

    数据挖掘目标:通过聚类的方式对现有的车型进行分类。

    数据准备

    通过数据探索对数据的质量和字段的分布进行了解,并排除有问题的行或者列优化数据质量。

    第一步,我们使用统计节点审核数据的质量,从审核结果中我们发现存在缺失的数据,如下图所示:

    第二步,对缺失的数据进行处理,我们选择使用缺失填充节点删除这些记录。配置如下:

    建模

    我们选择层次聚类进行分析,尝试根据各种汽车的销售量、价格、引擎、马力、轴距、车宽、车长、制动、排量、油耗等指标对其分类。

    因为层次聚类不能自动确定分类数量,因此需要我们以自定义的方式规定最后聚类的类别数。层次聚类节点配置如下(默认配置):

    可以使用交互表或者右击层次聚类节点查看聚类的结果,如下图所示:

    再使用饼图查看每个类的大小,结果如下:

    从图中可见,分成的三个类样本数差异太大,cluster_0和cluster_1包含的样本数都只有1,这样的分类是没有意义的,因此需要重新分类。我们尝试在层次聚类节点的配置中指定新的聚类方法:完全。新的聚类样本数分布如下:

    cluster_0、 cluster_1、cluster_2的样本数分别为:50、9、93。

    执行后输出树状/冰柱图,可以从上往下看,一开始是一大类,往下走就分成了两类,越往下分的类越多,最后细分到每一个记录是一类,如下所示:

    我们可以再使用条形图查看每类的销售量、平均价格,如下图所示:

    每类总销量分布图

    每类平均销量分布图

    每类平均价格分布图

    我们再看一下每类的销售额分布情况。首先,我们需要使用Java代码段节点或者派生节点生成销售额字段,配置如下:

    再使用饼图查看销售额分布情况,cluster_0、 cluster_1、cluster_2的市场份额分别为:32.39%、0.53%和67.08%,如下图所示:

    案例小结

    通过这个案例,大家可以发现聚类分析确实很简单。进行聚类计算后,主要通过图形化探索的方式评估聚类合理性,以及在确定聚类后,分析每类的特征。

    展开全文
  • 基于K-means聚类方法的航空公司客户价值分析.pdf
  • spss分析方法-聚类分析

    万次阅读 多人点赞 2022-06-14 16:42:02
    聚类分析是根据研究对象的特征,按照一定标准研究对象进行分类的一种分析方法。 下面我们主要从下面四个方面来解说: 一、实际应用 聚类分析的目标就是在相似的基础上收集数据来分类。聚类源于很多领域,包括...
  • 聚类分析实例讲解

    2020-12-20 11:35:28
    1Lab6聚类分析一、分析背景Chrysler公司为了赢得市场竞争地位,决定推出新产品Viper,该种产品的目标客户是雅皮士阶层。为了进一步了解这种人群的心理特征,定位自己的产品,吸引目标客户,Chrysler公司进行了一次...
  • 基于聚类(Kmeans)算法实现客户价值分析系统(电信运营商)包含(custinfo.csv,custcall.csv以及输出的数据集result,还有图片)
  • 什么是聚类分析聚类分析方法的类别

    万次阅读 多人点赞 2019-07-03 21:09:55
    聚类分析是指将数据对象的集合分组为由类似的对象组成的多个类的分析过程。 基本概念 聚类(Clustering)就是一种寻找数据之间内在结构的技术。聚类把全体数据实例组织成一些相似组,而这些相似组被称作簇。处于...
  • 数学建模----聚类分析

    2022-04-17 21:25:07
    聚类分析是根据给出数据中发现描述对象及关系的信息,数据对象进行分组的过程。 聚类是一种寻找数据之间内在结构的技术,聚类把全体数据实例组织成一些相似组,这些相似组被称作簇,处于相同簇中的数据实例彼此...
  • 在企业的客户关系管理中,对客户分类,区分不同价值的客户。针对不同价值的客户提供个性化服务方案,采取不同营销策略,将有限营销资源集中于高价值客户,实现企业利润最大化目标。在竞争激烈的航空市场里,很多航空...
  • 16种常用的数据分析方法-聚类分析

    千次阅读 2021-11-25 14:02:34
    聚类分析是根据在数据中发现的描述对象及其关系的信息,将数据对象分组。目的是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内相似性越大,组间差距越大,说明聚类效果越好。...
  • 在此基础上, 提出了一种基于模糊聚类分析客户分类算法, 对客户进行分类管理, 并给出了一个计算实例, 取得了正确的计算结果。该计算实例表明, 这个算法可以用于关于客户关系管理的决策支持系统中。
  • 风控必学|肘部法与客户分群——客户画像中的聚类与特征画像分析
  • 聚类分析案例:探究用户物品类别的喜好细分降维 数据如下: order_products__prior.csv:订单与商品信息 字段:order_id,product_id, add_to_cart_order, reordered products.csv:商品信息 字段:...
  • 案例——商场客户聚类 一、读取数据 import pandas as pd beer=pd.read_csv('beer.txt',sep=' ') #输出文件内容 beer pandas.read_csv 常用参数为:header, sep, name…… header: 指定行数用来作为列名,...
  • 聚类分析(超全超详细版)

    万次阅读 多人点赞 2020-04-20 20:50:31
    聚类分析是一种典型的无监督学习, 用于未知类别的样本进行划分,将它们按照一定的规则划分成若干个类族,把相似(距高相近)的样本聚在同一个类簇中, 把不相似的样本分为不同类簇,从而揭示样本之间内在的性质以及...
  • 1 聚类分析介绍 1.1 基本概念 聚类就是一种寻找数据之间一种内在结构的技术。聚类把全体数据实例组织成一些相似组,而这些相似组被称作聚类。处于相同聚类中的数据实例彼此相同,处于不同聚类中的实例彼此不同...
  • 聚类分析 常用聚类方法如下表: 常用聚类算法如下表: K-Means聚类算法 K-Means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用距离作为相似性的评价指标,即认为...
  • SPSS(十五)spss之聚类分析(图文+数据集)

    万次阅读 多人点赞 2019-06-08 15:38:48
    SPSS(十五)spss之聚类分析(图文+数据集) 聚类分析简介 按照个体(记录)的特征将它们分类,使同一类别内的个体具有尽可能高的同质性,而类别之间则具有尽可能高的异质性。 为了得到比较合理的分类,首先要采用...
  • 聚类分析

    千次阅读 2019-04-24 18:14:00
    聚类分析指将物理或抽象对象的集合分组为由类似的对象组成的多个类的分析过程。它是一种重要的人类行为。 聚类分析的目标就是在相似的基础上收集数据来分类。聚类源于很多领域,包括数学,计算机科学,统计学,生物...
  • 聚类分析

    千次阅读 2019-08-06 18:27:50
    聚类分析 餐饮企业经常会碰到这样的问题。 1)如何通过餐饮客户消费行为的测量,进一步评判餐饮客户的价值和餐饮客户进行细分,找到有价值的客户群和需关注的客户群? 2)如何合理菜品进行分析,以便区分哪些...
  • Python航空公司客户聚类分析案例,K均值聚类,FRM模型,客户分层制定策略。
  • 4.4 聚类分析评估

    2020-07-22 15:44:21
    所以要分析是否具有聚类趋势 确定数据集的簇 测定聚类质量,最常用的方法是轮廓函数。在度量聚类中簇的你和邢,可以计算所有对象轮廓系数的平均值,轮廓系数越接近于1,聚类效果越好 聚类 当你在山上徒步旅行时,你...
  • 文章目录前言一、了解数据概况二、单变量分析三、可视化二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人...
  • 本项目通过对客户价值的详细分析,并利用 CFSFDP 聚类算法,对客户进行类型的划分,可以获知客户价值的大小,客户价值的类型,从而得到客户的分类。从客户需求出发,了解客户需要什么,他们有怎么样的特征,电信运营...
  • (1)使用教材 §7 航空公司客户价值聚类分析配套示例数据和代码,掌握其特征构造操作过程 (2)考虑:使用其它模型参数, 聚类算法, 并观察结果;利用数据探索分析结果, 提取有用的变量/特征, 进行聚类分析, 观察...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,001
精华内容 3,200
热门标签
关键字:

对客户的聚类分析案例