聚类的概念和通常步骤

  • 聚类分析

一种数据归约技术,把大量的观测值归约为若干个类,类被定义为若干个观测值组成的群组,群组内观测值的类似度比群间类似度高, 聚类有层次聚类和划分聚类两种经常使用方法算法

  • 层次聚类(hierarchical agglomerative clustering)

每个观测值自成一类, 这些类每次两两合并,知道全部的类被聚成为一类为止app

经常使用的算法有函数

a、单联动(single linkage)spa

b、全联动(complete linkage)code

c、平均联动(average linkage)it

d、质心(centroid)io

e、Wardfunction

 

  • 划分聚类(partitioning clustering)

首先指定类的个数 K,而后观测值被随机分红 K 类,在从新造成聚合的类变量

经常使用的算法有可视化

a、K 均值(k-means)

b、围绕点中心的划分(PAM)

 

  • 聚类分析的通常步骤

a、选择合适的变量

    第一(而且多是最重要的)步

b、缩放数据

    一、分析中选择的变量变化范围很大,那么该变量对结果的影响也是最大的,每每不可取

    二、缩放数据的方法

        1)最经常使用的是将每一个变量标准化为均值为0,标准差为1的变量

        2)使用 scale() 函数来将变量标准化到均值为 0 和标准差为 1 的变量,等价与 1)的方法

         3)其余的替代方法包括每一个个变量被其最大值相除或该变量减去它的平均值并除以变量的平均绝对误差  

df1 <- apply(mydata,2,function(x){(x-mean(x))/sd(x)}) #方法1
df2 <- apply(mydata,2,function(x){x/max(x)})          #方法3
df3 <- apply(mydata,2,function(x){(x-mean(x))/mad(x)})#方法3

c、寻找异常点

    一、许多聚类方法对异常值比较敏感,会扭曲聚类方案

    二、可使用 outliers 包中的函数筛选(和删除)异常单变量离群点,mvoutlier 包中包含了可以识别多元变量的离群点函数

    三、一种替代方法是使用对异常值稳健的聚类方法,围绕中心点的划分

d、计算距离

    一、一般须要计算被聚类的实体间的距离

    二、两个观测值之间最经常使用的距离量度是欧几里得距离,其余可选的量度包括曼哈顿距离、兰氏距离、非对称二元距离、最大距离和闵可夫斯基距离(可以使用?dist查看详情)

e、选择聚类算法

    一、层次聚类适合小样本(如150个观测值或更少),并且这种状况下嵌套聚类更实用

    二、划分的方法能处理更多的数据量,可是须要事先肯定聚类的个数,一旦选定了层次方法或划分方法,就必须选择一个特意的聚类算法,但每一个算法都有优缺点     

f、获取一种或多种聚类方法

    这一步可使用步骤(e)选择的方法

g、肯定类的数目

    一、为了获得最终的聚类方案,必须肯定类的数目

    二、经常使用的方法是尝试不一样高的类数(如 2 ~ K)并比较解的质量

    三、在 NbClust 包中的 NbClust()函数提供了30个不一样指标来帮助你进行选择

h、得到最终的聚类解决方案

    一旦类的个数肯定下来,就能够提取出子群,造成最终的聚类方案

i、结果可视化

    一、可视化能够帮助断定聚类方案的意义和用处

    二、层次聚类的结果一般表示一个树状图,划分的结果一般利用可视化双变量聚类图来表示  

j、解读类

    一、一个类中的观测值有何类似之处?

    二、不一样类之间能的观测值有何不一样?

    三、通常经过对类的汇总统计来完成,对于连续变量,可计算类中的均值和中位数,对混合变量(数据总包含分类变量),能够返回众数、类别分布

k、验证结果

    一、验证聚类方案至关于问“这种划分并非由于数据集或聚类方法的某种特性,而是确实给出了一个某种程度上有实际意义的结果吗?”若是采用不一样的聚类的方法或不一样的样本,是否会产生相同的类呢? fpc 、clv 、clValid 包包含了评估聚类解的稳定性函数

相关文章
相关标签/搜索