SAS聚类分析介绍

news2024/11/17 16:23:48

聚类分析介绍

1.1基本概念

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

通过上述表述,我们可以把聚类定义为将数据集中在某些方面具有相似性的数据成员进行分类组织的过程。因此,聚类就是一些数据实例的集合,这个集合中的元素彼此相似,但是它们都与其他聚类中的元素不同。在聚类的相关文献中,一个数据实例有时又被称为对象,因为现实世界中的一个对象可以用数据实例来描述。同时,它有时也被称作数据点(Data Point),因为我们可以用 维空间的一个点来表示数据实例,其中 表示数据的属性个数。

下图显示了一个二维数据集聚类过程,从该图中可以清楚地看到数据聚类过程。虽然通过目测可以十分清晰地发现隐藏在二维或者三维的数据集中的聚类,但是随着数据集维数的不断增加,就很难通过目测来观察甚至是不可能。

SAS聚类分析介绍

1.2算法概述

目前在存在大量的聚类算法,算法的选择取决于数据的类型、聚类的目的和具体应用。大体上,主要的聚类算法分为几大类。

SAS聚类分析介绍

聚类算法的目的是将数据对象自动的归入到相应的有意义的聚类中。追求较高的类内相似度和较低的类间相似度是聚类算法的指导原则。

一个聚类算法的优劣可以从以下几个方面来衡量:

(1)可伸缩性:好的聚类算法可以处理包含大到几百万个对象的数据集;

(2)处理不同类型属性的能力:许多算法是针对基于区间的数值属性而设计的,但是有些应用需要针对其它数据类型(如符号类型、二值类型等)进行处理;

(3)发现任意形状的聚类:一个聚类可能是任意形状的,聚类算法不能局限于规则形状的聚类;

(4)输入参数的最小化:要求用户输入重要的参数不仅加重了用户的负担,也使聚类的质量难以控制;

(5)对输入顺序的不敏感:不能因为有不同的数据提交顺序而使聚类的结果不同;

(6)高维性:一个数据集可能包含若干维或属性,一个好的聚类算法不能仅局限于处理二维或三维数据,而需要在高维空间中发现有意义的聚类;

(7)基于约束的聚类:在实际应用中要考虑很多约束条件,设计能够满足特定约束条件且具有较好聚类质量的算法也是一项重要的任务;

(8)可解释性:聚类的结果应该是可理解的、可解释的,以及可用的。

1.3聚类应用

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

Kmeans算法

2.1基本思想

划分聚类算法是根据给定的n个对象或者元组的数据集,构建k个划分聚类的方法。每个划分即为一个聚簇,并且,该方法将数据划分为k个组,每个组至少有一个对象,每个对象必须属于而且只能属于一个组。该方法的划分采用按照给定的 个划分要求,先给出一个初始的划分,然后用迭代重定位技术,通过对象在划分之间的移动来改进划分。

为达到划分的全局最优,划分的聚类可能会穷举所有可能的划分。但在实际操作中,往往采用比较流行的k-means算法或者k-median算法。

2.2算法步骤

k-means算法最为简单,实现比较容易。每个簇都是使用对象的平均值来表示。

步骤一:将所有对象随机分配到 个非空的簇中。

步骤二:计算每个簇的平均值,并用该平均值代表相应的值。

步骤三:根据每个对象与各个簇中心的距离,分配给最近的簇。

步骤四:转到步骤二,重新计算每个簇的平均值。这个过程不断重复直到满足某个准则函数或者终止条件。终止(收敛)条件可以是以下任何一个:没有(或者最小数目)数据点被重新分配给不同的聚类;没有(或者最小数目)聚类中心再发生变化;误差平方和(SSE)局部最小。

SAS kmeans实现主要是通过proc fastclus过程实现,示例如下:

 

  
  
  1. proc import datafile=“E:\SAS\cars.txt” out=carsdbms=dlm replace;
  2. delimiter=‘09’x;
  3. getnames=yes;
  4. run;
  5. proc print data=cars;
  6. run;
  7. proc standard data=cars out=stdcars mean=0 std=1;
  8. var Mpg Weight Drive_Ratio Horsepower Displacement;
  9. run;
  10. proc fastclus data=stdcars summary maxc=5 maxiter=99
  11. outseed=clusterseed out=clusterresult cluster=clusterleast=2;
  12. id Car;
  13. var Mpg Weight Drive_Ratio Horsepower Displacement;
  14. run;

 

2.3算法分析

k-means算法对于大型的数据库是相对高效的,一般情况下结束于局部最优解。但是,k-means算法必须在平均值有意义的情况下才能使用,对分类变量不适用,事先还要给定生成聚类的数目,对异常数据和数据噪声比较敏感,不能对非凸面形状的数据进行处理。另外,k-means算法在聚类过程中可能有的聚类中心没有被分配任何数据而使得某些聚类变为空,这些聚类通常被称为空聚类。为了解决空聚类问题,我们可以选择一个数据点作为替代的聚类中心。例如,某一个含有大量数据的聚类的聚簇中心最远的数据点。如果算法的终止条件取决于误差平方和,具有最大误差平方和的聚类可以被用来寻找另外的聚类中心。

3层次聚类算法

3.1基本思想

层次聚类主要有两种类型:合并的层次聚类和分裂的层次聚类。前者是一种自底向上的层次聚类算法,从最底层开始,每一次通过合并最相似的聚类来形成上一层次中的聚类,整个当全部数据点都合并到一个聚类的时候停止或者达到某个终止条件而结束,大部分层次聚类都是采用这种方法处理。后者是采用自顶向下的方法,从一个包含全部数据点的聚类开始,然后把根节点分裂为一些子聚类,每个子聚类再递归地继续往下分裂,直到出现只包含一个数据点的单节点聚类出现,即每个聚类中仅包含一个数据点。

层次聚类技术是一种无监督学习的技术,因此可能没有确定的、一致的正确答案。正是由于这个原因,并且在聚类的特定应用的基础之上,可以设计出较少或较多数量的簇。定义了一个聚类层次,就可以选择希望数量的簇。在极端的情况下,所有的对象都自成一簇。在这样的情形下,聚类的对象之间非常相似,并且不同于其他的聚类。当然,这种聚类技术就失去了实际意义,因为聚类的目的是寻找数据集中的有意义的模式,方便用户理解,而任何聚类的数目和数据对象一样多的聚类算法都不能帮助用户更好地理解数据,挖掘数据隐藏的真实含义。这样,关于聚类的很重要的一点就是应该比原先的数据的数目更少的簇。到底要形成多少个聚类数目,要根据实际业务的理解,这是如何解释实际项目的事情。层次聚类算法的好处是它可以让用户从这些簇中选择所感兴趣的簇,这样更具有灵活性。

层次聚类通常被看做成一棵树,其中最小的簇合并在一起创建下一个较高层次的簇,这一层次的簇再合并在一起就创建了再下一层次的簇。通过这样的过程,就可以生成一系列的聚类树来完成聚类。单点聚类处在树的最底层,在树的底层有一个根节点聚类。根节点聚类覆盖了全部数据节点,兄弟节点聚类则划分了它们共同的父节点中的所有的数据点。图1-5是采用统计分析软件SAS对Cars数据集进行层次聚类的层次聚类结果图。通过该层次聚类树,用户可以选择查看在树的各个层次上的聚类情况。如图所示。

SAS聚类分析介绍

层次聚类结果图

基于层次的聚类算法方法比较简单,但是缺乏伸缩性,一旦一个合并或者分裂被执行,就不能撤销。为了改进层次聚类的效果,可以将层次聚类算法和其他聚类算法结合使用,形成多阶段的聚类算法。

3.2算法步骤

层次聚类(hierarchical clustering)算法递归的对对象进行合并或者分裂,直到满足某一终止条件为止。层次聚类分为两种,按自底向上层次分解称为聚合的层次聚类,反之,称为分解的层次聚类。层次聚类算法的计算复杂度为O(n2),适合小型数据集的分类。

CURE、ROCK、BIRCH和CHAMELEON是聚合层次聚类中最具代表性的方法。CURE(Clustering Using REpresentatives)算法采用了抽样和分区的技术,选择数据空间中固定数目的、具有代表性的一些点来代表相应的类,这样就可以识别具有复杂形状和不同大小的聚类,从而很好的过滤孤立点。ROCK(RObust Clustering using linKs)算法是对CURE算法的改进,除了具有CURE算法的一些优良特性外,还适用于类别属性的数据。BIRCH(Balanced Iterative Reducing and Clustering using Hierarchy)算法首次提出了通过局部聚类对数据库进行预处理的思想。CHAMELEON是Karypis等人1999年提出的,它在聚合聚类的过程中利用了动态建模技术。

SAS实例

  
  
  1. options nocenter nodate pageno=1 linesize=132;
  2. title h = 1 j = l ‘File:cluster.mammalsteeth.sas’;
  3. title2 h = 1 j = l ‘Cluster Analysis of Mammals’’ teethdata’;
  4. data teeth;
  5. input mammal $ 1-16
  6. @21 (v1-v8) (1.);
  7. label v1=‘Top incisors’
  8. v2=‘Bottom incisors’
  9. v3=‘Top canines’
  10. v4=‘Bottom canines’
  11. v5=‘Top premolars’
  12. v6=‘Bottom premolars’
  13. v7=‘Top molars’
  14. v8=‘Bottom molars’;
  15. cards;
  16. BROWNBAT 23113333
  17. MOLE 32103333
  18. SILVER HAIR BAT 23112333
  19. PIGMYBAT 23112233
  20. HOUSEBAT 23111233
  21. REDBAT 13112233
  22. PIKA 21002233
  23. RABBIT 21003233
  24. BEAVER 11002133
  25. GROUNDHOG 11002133
  26. GRAYSQUIRREL 11001133
  27. HOUSEMOUSE 11000033
  28. PORCUPINE 11001133
  29. WOLF 33114423
  30. BEAR 33114423
  31. RACCOON 33114432
  32. MARTEN 33114412
  33. WEASEL 33113312
  34. WOLVERINE 33114412
  35. BADGER 33113312
  36. RIVEROTTER 33114312
  37. SEAOTTER 32113312
  38. JAGUAR 33113211
  39. COUGAR 33113211
  40. FURSEAL 32114411
  41. SEALION 32114411
  42. GREYSEAL 32113322
  43. ELEPHANTSEAL 21114411
  44. REINDEER 04103333
  45. ELK 04103333
  46. DEER 04003333
  47. MOOSE 04003333
  48. ;
  49. proc princomp data=teeth out=teeth2;
  50. var v1-v8;
  51. run;
  52. proc cluster data=teeth2 method=average outtree=ttree
  53. ccc pseudorsquare;
  54. var v1-v8;
  55. id mammal;
  56. run;
  57. proc tree data=ttree out=ttree2 nclusters=4;
  58. id mammal;
  59. run;
  60. proc sort data=teeth2;
  61. by mammal;
  62. run;
  63. proc sort data=ttree2;
  64. by mammal;
  65. run;
  66. data teeth3;
  67. merge teeth2ttree2;
  68. by mammal;
  69. run;
  70. symbol1 c=black f=, v=‘1’;
  71. symbol2 c=black f=, v=‘2’;
  72. symbol3 c=black f=, v=‘3’;
  73. symbol4 c=black f=, v=‘4’;
  74. proc gplot;
  75. plotprin2*prin1=cluster;
  76. run;
  77. proc sort;
  78. by cluster;
  79. run;
  80. proc print;
  81. by cluster;
  82. var mammal prin1prin2;
  83. run;

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1284201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023博思高科技智慧车行、人行专项研讨会成功召开

来源:智安物联网 11月30日,深圳市博思高科技有限公司(以下简称“博思高科技”)在其总部成功举办了智慧车行、人行专项研讨会议。本次会议邀请了来自国家发改委综合运输研究所的程世东主任,中国安全防范产品行业协会原…

13、pytest为失败的断言定义自己的解释

官方实例 # content of ocnftest.py from test_foocompare import Foodef pytest_assertrepr_compare(op, left, right):if isinstance(left, Foo) and isinstance(right, Foo) and op "":return["Comparing Foo instances:",f" vals:{left.val} !…

第一个小记录达成:第一个年费会员用户

早上看到,欸,有个用户好像充了 9.9 元,挺开心,刚刚看飞书消息,看到了这条分享给朋友,等等,是充值了 99 元,有个用户充了年费,偶买噶,开心 🫡 这是…

Mysql集群部署---MySQL集群Cluster将数据分成多个片段,每个片段存储在不同的服务器上

1.1 目的 部署MysqlCluster集群环境 1.2 MySQL集群Cluster原理 1 数据分片 MySQL集群Cluster将数据分成多个片段,每个片段存储在不同的服务器上。这样可以将数据负载分散到多个服务器上,提高系统的性能和可扩展性。 2. 数据同步 MySQL集群Cluster使…

技术省钱攻略:代理IP是的最佳计费方式是什么?

代理IP是很多互联网企业最常使用的工具之一,它在我们进行很多互联网业务时都可以帮助企业提高效率和保护隐私。在使用代理IP的过程中,一般用户需要根据自己的需求和预算选择合适的计费方式,今天就让我们一起探讨一下代理IP的最佳计费方式是什…

(C语言)求出1,2,5三个数不同个数组合为100的组合个数

#include<stdio.h> int main() {int count;for(int i 0;i < 100;i )for(int j 0;j < 50;j )for(int k 0;k < 20;k ){if(i j*2 k*5 100){count;printf("100可以拆分为%d个1元&#xff0c;%d个2元&#xff0c;%d个5元\n",i,j,k);} }printf("…

FPGA时序分析与时序约束(一)

一、为什么要进行时序分析和时序约束 PCB通过导线将具有相关电气特性的信号相连接&#xff0c;这些电气信号在PCB上进行走线传输时会产生一定的传播延时。 而FPGA内部也有着非常丰富的可配置的布线资源&#xff0c;能够让位于不同位置的逻辑资源块、时钟处理单元、BLOCK RAM、D…

【初阶解法-数据结构】包含min函数的栈(代码+图示)

【数据结构】刷题-包含min函数的栈(代码图示)-初阶解法 文章目录 【数据结构】刷题-包含min函数的栈(代码图示)-初阶解法题目提炼题目要求分析题目总结思路代码时间/空间复杂度进阶版 题目 定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈中所含最小元素的 min 函…

SpringBoot——嵌入式 Servlet容器

一、如何定制和修改Servlet容器的相关配置 前言&#xff1a; SpringBoot在Web环境下&#xff0c;默认使用的是Tomact作为嵌入式的Servlet容器&#xff1b; 【1】修改和server相关的配置&#xff08;ServerProperties实现了EmbeddedServletContainerCustomizer&#xff09;例如…

华为交换机,配置攻击防范示例

攻击防范简介 定义 攻击防范是一种重要的网络安全特性。它通过分析上送CPU处理的报文的内容和行为&#xff0c;判断报文是否具有攻击特性&#xff0c;并配置对具有攻击特性的报文执行一定的防范措施。 攻击防范主要分为畸形报文攻击防范、分片报文攻击防范和泛洪攻击防范。 …

7. 系统信息与系统资源

7. 系统信息与系统资源 1. 系统信息1.1 系统标识 uname()1.2 sysinfo()1.3 gethostname()1.4 sysconf() 2. 时间、日期2.1 Linux 系统中的时间2.1.1 Linux 怎么记录时间2.1.2 jiffies 的引入 2.2 获取时间 time/gettimeofday2.2.1 time()2.2.2 gettimeofday() 2.3 时间转换函数…

MySQL笔记-第02章_MySQL环境搭建

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第02章_MySQL环境搭建1. MySQL的卸载步骤1&#xff1a;停止MySQL服务步骤2&#xff1a;软件的卸载步骤3&#xff1a;残余文件的清理步骤4&am…

【Cesium】实现卷帘对比

一、创建滑块 <style>import url(../Build/CesiumUnminified/Widgets/widgets.css);import url(./Sandcastle/templates/bucket.css);#slider {position: absolute;left: 50%;top: 0px;background-color: #d3d3d3;width: 5px;height: 100%;z-index: 9999;}#slider:hover…

leetcode 876.链表的中间结点

补充上次的环形链表没细讲的快慢指针&#xff08;这三道题现在可以连起来看&#xff09;&#xff0c;希望对你做题思路有帮助 876.链表的中间结点 题目 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结…

机械学习概述

1.1 什么是机器学习 1.1.1 机器的学习能力 1997年5月11日&#xff0c;一台名为“深蓝”的超级电脑战胜国际象棋名家卡斯帕罗夫。20世纪末的一场人机大战终于以计算机的微弱优势取胜。 2016年3月&#xff0c;阿尔法围棋程序&#xff08;AlphaGo&#xff09;挑战世界围棋冠军李…

windows11 调整鼠标灵敏度方法

首先 我们打开电脑设置 或者在 此电脑/此计算机/我的电脑 右击选择属性 然后 有的电脑 左侧菜单中 直接就有 设备 然后在设备中直接就可以找到 鼠标 选项 调整光标速度即可 如果操作系统和我的一样 可以直接搜索鼠标 然后 选择 鼠标设置 然后 调整上面的鼠标指针速度即可

锁策略之干货分享,确定不进来看看吗?️️️

&#x1f308;&#x1f308;&#x1f308;今天给大家分享的是关于锁策略方面的基础知识。 清风的CSDN博客 &#x1f6e9;️&#x1f6e9;️&#x1f6e9;️希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff01; …

基于stm32的LCD1602与无线蓝牙温湿度显示

这一篇博客是为了实现温湿度的显示&#xff0c;温湿度传感器将数据穿给单片机&#xff0c;单片机又把数据送给LCD1602和蓝牙&#xff0c;让温度和湿度可以再LCD1602显示屏和手机上显示&#xff0c;它的执行逻辑和C51那里基本一样&#xff0c;就是要修改程序&#xff0c;在程序上…

选择排序、插入排序、希尔排序

1.选择排序 算法描述 将数组分为两个子集&#xff0c;排序的和未排序的&#xff0c;每一轮从未排序的子集中选出最小的元素&#xff0c;放入排序子集 重复以上步骤&#xff0c;直到整个数组有序 选择排序呢&#xff0c;就是首先在循环中&#xff0c;找到数组中最小的元素。在…

基恩士软件的基本操作(六,KV脚本的使用)

目录 什么是KV脚本&#xff1f; KV脚本有什么用&#xff1f; 怎么使用KV脚本&#xff08;脚本不能与梯形图并联使用&#xff09;&#xff1f; 插入框脚本&#xff08;CtrlB&#xff09; 插入域脚本&#xff08;CtrlR&#xff09; 区别 脚本语句&#xff08;.T是字符串类…