聚类分析算法

栏目: 数据库 · 发布时间: 6年前

内容简介:聚类分析是将数据对象的集合分成相似对象类的过程。使得簇是数据对象(如数据点)的集合,这些对象与同一簇中的对象彼此相似,而与其他簇的对象相异。对象之间的相似性是聚类分析的核心。对象之间的距离越近表示它们越相似。若每个对象用$m$个属性来描述(称为描述属性),即对象$o_i$表示为$o_i=(o_{i1},o_{i2},…,o_{im})$,常用的距离度量如下:

什么是聚类

聚类分析是将数据对象的集合分成相似对象类的过程。使得 同一簇 (或类)中的对象之间具有较高的 相似性 ,而 不同簇 中的对象具有较高的 相异性

簇是数据对象(如数据点)的集合,这些对象与同一簇中的对象彼此相似,而与其他簇的对象相异。

例:对客户数据中的“年龄”和“收入”进行聚类处理

聚类分析算法

孤立点可以用来分析极低或极高收入客户的消费行为。

相似性度量

对象之间的相似性是聚类分析的核心。对象之间的距离越近表示它们越相似。若每个对象用$m$个属性来描述(称为描述属性),即对象$o_i$表示为$o_i=(o_{i1},o_{i2},…,o_{im})$,常用的距离度量如下:

曼哈顿距离:$dist(o_i,o_j) = \sum_{k=1}^{m}|o_{ik}-o_{jk}|$

欧几里得距离:$dist(o_i,o_j) = \sqrt {\sum_{k=1}^{m} (o_{ik}-o_{jk})^2}$

闵科夫斯基距离:$dist(o_i,i_j) = \sqrt[q]{\sum_{k=1}^{m}|o_{ik}-o_{jk}|^q}$

其实仔细观察上面三个公式,曼哈顿距离和欧式距离就是闵科夫斯基距离的两种特殊情况,分别取$q=1$和$q=2$

通常相似度函数$sim(o_i,o_j)$与距离成反比,在确定好距离函数后,可设计相似度函数如下:

$$

Sim(o_i,o_j)=\frac{1}{1+dist(o_i,o_j)}

$$

K-均值算法及其应用

$k$-均值($k-means$)算法是一种基于距离的聚类算法,采用欧几里得距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。

$k-means$算法不适合离散型属性,但对于连续型属性具有较好的聚类效果

$K-means$算法描述

  1. 选择k个样品作为初始凝聚点,或者将所有样品分成k个初始类,然后将这k个类的重心(均值)作为初始凝聚点
  2. 对除凝聚点之外的所有样品逐个归类,将每个样品归入凝聚点离它最近的那个类(通常采用欧氏距离),该类的凝聚点更新为这一类目前的均值,直至所有样品都归了类
  3. 重复步骤2,直至所有的样品都不能再分配为止

最终的聚类结果在一定程度上依赖于初始凝聚点或初始分类的选择。经验表明,聚类过程中的绝大多数重要变化均发生在第一次再分配中

聚类分析终止的条件:

  1. 当前的迭代次数等于指定的迭代次数(spss默认为10)时终止聚类
  2. 类中心点偏移程度。新确定的类中心点距上个类中心点的最大偏移量小于指定的量(spss默认为0.02)时终止聚类

例题

设有五个样本分别是1,2,6,8,11,采用K均值法聚类,指定K=2

(1)我们随意将这些样品分成$G_1^{(0)}=\{1,6,8\}$和$G_2^{(0)}=\{2,11\}$两类,则这两个初始类的均值分别是5和6.5

(2)计算1到两个类的欧氏距离

$$

\begin{align}

& d(1,G_1^{(0)})=|1-5|=4\\

& d(1,G_2^{(0)})=|1-6.5|=5.5\\

\end{align}

$$

由于1到$G_1^{(0)}$的距离小于到$G_2^{(0)}$的距离,因此1不用重新分配,计算6到两个类的距离

$$

\begin{align}

& d(6,G_1^{(0)})=|6-5|=1\\

& d(6,G_2^{(0)})=|6-6.5|=0.5\\

\end{align}

$$

故6应重新分配到$G_2^{(0)}$中,修正后的两个类为$G_1^{(1)}=\{1,8\},G_2^{(1)}=\{2,6,11\}$,新的类均值分别为4.5和6.3,计算

$$

\begin{align}

& d(8,G_1^{(1)})=|8-4.5|=3.5\\

& d(8,G_2^{(1)})=|8-6.3|=1.7\\

\end{align}

$$

结果8重新分配到$G_2^{(1)}$中,两个新类为$G_1^{(2)}=\{1\},G_2^{(2)}=\{2,6,8,11\}$,其类均值分别为1和6.75,再计算

$$

\begin{align}

& d(2,G_1^{(2)}=|2-1|=1 \\

& d(2,G_2^{(2)})=|2-6.75|=4.75 \\

\end{align}

$$

重新分配2到$G_1^{(2)}$中,两个新类为$G_1^{(3)}=\{1,2\},G_2^{(3)}=\{6,8,11\}$,其均值分别为1.5和8.3

(3)再次计算每个样品到类均值的距离,结果列于下表

聚类分析算法

可见,每个样品都已被分给了类均值离他更近的类。因此,最终得到的两个类为{1,2}和{6,8,11}


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C++面向对象程序设计

C++面向对象程序设计

萨维奇 (Walter Savitch) / 周靖 / 清华大学出版社 / 2003-12 / 59.0

《C++面向对象程序设计》具备良好的编排体系,适合打算涉足编程领域的读者阅读,尤其适合大一学生。它最大的特色是Savitch教授最受欢迎的写作风格,这一风格非常适合初学者,能迅速引导他们开始编程实践。《C++面向对象程序设计》包括全面的习题、项目、编程提示、编程示例、编程陷阱以及有用的小结,以帮助初学者更清楚地了解C++。一起来看看 《C++面向对象程序设计》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具