SAS聚类分析介绍

聚类分析介绍

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.mzph.cn/news/190230.shtml

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

相关文章

深入了解Vue.js:构建现代、响应式的前端应用

文章目录 1. Vue.js简介1.1 安装Vue.js 2. Vue的核心概念2.1 数据驱动2.2 组件化2.3 生命周期钩子 3. Vue的特性3.1 响应式数据3.2 模板语法3.3 组件通信 4. 示例项目结语 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 &#x1…

Jmeter性能测试 —— 压力模式

压力模式 性能测试中的压力模式有两种。 第一种是并发用户模式(虚拟用户模式)并发用户是指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。 从客户端的角度出发,摸底业务系统各节点能同时承载的在线用户数…

pytorch中Conv1d、Conv2d与Conv3d详解

1 卷积介绍 1.1 什么是卷积 卷积(convolution),是一种运算,你可以类比于加,减,乘,除,矩阵的点乘与叉乘等等,它有自己的运算规则,卷积的符号是星号*。表达式…

Linux Makefile的认识及CMake的使用

1 Makefile的作用 Makefile 指的是一个叫 Makefile 的文件,里面提前写了一些指令。每次要自动化的完成一个比较复杂项目的自动编译用的时候,就在命令行输入“make”命令Makefile使用。使用Makefile可以 “智能” 的知道: 1 哪些文件需要先进行编译。 2 当某一文件在某次mak…

Blast中文手册(4)

Extracting data from BLAST databases with blastdbcmd(用blastdbcmd从BLAST数据库中提取数据) Created: June 23, 2008; Updated: January 7, 2021. Extract lowercase masked FASTA from a BLAST database with masking information(从具有掩码信息的BLAST数据库中提取小写掩…

知识管理平台Confluence:win10安装confluence

文章目录 介绍主要功能 安装教程安装java运行平台JRE安装数据库Postgresql在Postgresql创建confluence使用的数据库创建数据库用户创建数据库 安装confluence注册confluence启动confluence 参考链接 介绍 Confluence 是由澳大利亚软件公司 Atlassian 开发的企业协作平台。它提…

2023.11.27 关于 Mybatis 增删改操作

目录 引言 增加用户操作 删除用户操作 修改用户操作 阅读下述文章之间 建议点击下方链接先了解 MyBatis 的创建与使用 MyBatis 的创建与使用 建议点击下方链接先了解 单元测试 的创建与使用 Spring Boot 单元测试的创建与使用 引言 为了方便下文实现增、删、改操作我们先…

推荐3个完美替代 Navicat 的工具

现在企业,mysql数据库用的比较多,mysql数据库客户端的需求也就比较大,navicat就被大家所熟知。 这个工具,确实好用,功能也非常强大,但是,它的强大,是需要付费,或者用一些…

STM32内部温度传感器使用方法详解

STM32内部温度传感器使用方法详解 前言 STM32内部集成了一个片上温度传感器,可以用来测量MCU及周围的温度。测量范围:-40~125,精度1.5℃。虽然精度不高,但在某些应用场景下是够了的,相比于外部接入传感器&#xff0c…

最新Graphviz python安装教程及使用

文章目录 Graphviz 安装python安装graphviz库 Graphviz 安装 Graphviz是一个独立的软件,在用python的pip下载之前,需要先下载软件。 网址:https://graphviz.org/download/ 找到合适的版本进行下载安装。记住自己的安装位置,完…

Linux - 进程间通信

进程通信 初步理解进程通信 所谓进程之间的通信,就是两个进程之间的 数据层面的交互。 我们之前说过,父子进程之间是有一些数据通信的,子进程可以看到一些父进程 允许 子进程访问的数据,比如 父进程的 环境变量,子…

用通俗的方法讲解:大模型微调训练详细说明(附理论+实践代码)

本文内容如下 介绍了大模型训练的微调方法,包括prompt tuning、prefix tuning、LoRA、p-tuning和AdaLoRA等。 介绍了使用deepspeed和LoRA进行大模型训练的相关代码。 给出了petals的介绍,它可以将模型划分为多个块,每个用户的机器负责其中一…

InsCode实践分享

在当今信息爆炸的时代,如何从海量信息中脱颖而出,获取更多的关注和认可,成为了许多人的共同追求。作为知乎平台上的优质用户,我愿意分享一些自己的经验和技巧,帮助大家更好地运用InsCode,实现个人成长和进步…

【爬虫逆向分析实战】某笔登录算法分析——本地替换分析法

前言 作者最近在做一个收集粉币的项目,可以用来干嘛这里就不展开了😁,需要进行登录换算token从而达到监控收集的作用,手机抓包发现他是通过APP进行计算之后再请求接口的,通过官网分析可能要比APP逆向方便多&#xff0…

01-使用Git操作本地库,如初始化本地库,提交工作区文件到暂存区和本地库,查看版本信息,版本切换命令等

Git的使用 概述 Git是一个分布式版本控制工具, 通常用来管理项目中的源代码文件(Java类、xml文件、html页面等)进行管理,在软件开发过程中被广泛使用 Git可以记录文件修改的历史记录并形成备份从而实现代码回溯, 版本切换, 多人协作, 远程备份的功能Git具有廉价的本地库,方便…

开源图床Qchan本地部署远程访问,轻松打造个人专属轻量级图床

文章目录 前言1. Qchan网站搭建1.1 Qchan下载和安装1.2 Qchan网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar云端设置2.2 Cpolar本地设置 3. 公网访问测试总结 前言 图床作为云存储的一项重要应用场景,在大量开发人员的努力下,已经开发出大…

如果你想成为一名提示词工程师(Prompt Engineer),这款工具你不能错过

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 前言 我们知道,如果想要通过AI得到更好更精确的答案,那么提示词Prompt的好坏至关重要。 因此,提示词工程师这个岗位应运而出。…

第一节:认识微服务

一、微服务技术对比 Dubbo SpringCloudSpringCloudAlibaba注册中心zookeeper、Redis Eureka、ConsulNacos、Eureka服务远程调用Dubbo协议Feign(http协议)Dubbo、Feign配置中心无SpringCloudGateway、ZuulSpringCloudConfig、Nacos服务网…

qemu网络通信

TAP(官网参考地址) TAP,即Tunneling traffic access point,是一种在Linux上使用的虚拟网卡技术,它可以为应用程序提供安全的网络连接。可以利用TAP搭建桥接网络,bridge两端分别为host和qemu虚拟机。 安装…

力扣 790. 多米诺和托米诺平铺(一维dp)

题目描述: 有两种形状的瓷砖:一种是 2 x 1 的多米诺形,另一种是形如 "L" 的托米诺形。两种形状都可以旋转。 给定整数 n ,返回可以平铺 2 x n 的面板的方法的数量。返回对 109 7 取模 的值。 平铺指的是每个正方形都…