[数据挖掘课程笔记]无监督学习——聚类(clustering)

什么是聚类(clustering)

个人理解:聚类就是将大量无标签的记录,根据它们的特点把它们分成簇,最后结果应当是相同簇之间相似性要尽可能大,不同簇之间相似性要尽可能小。

聚类方法的分类如下图所示:

一、如何计算样本之间的距离?

样本属性可能有的类型有:数值型,命名型,布尔型……在计算样本之间的距离时,需要将不同类型属性分开计算,最后统一相加,得到两个样本之间的距离。下面将介绍不同类型的属性的数据计算方法。

对于全部都是连续的数值型的样本来说,首先,对于值相差较大的属性来说,应该进行归一化,变换数据,使其落入较小的共同区间。

标准化的方法:

1.最大-最小规范化

其中Vi 表示在第i条记录在A这个属性上的取值,MINA表示A这个属性上的最小值,new_maxA表示我们希望映射到的区间的右边界,其他同理。

2. Z-score 规范化

其中两个参数分别表示均值和方差。

3. 小数定标规范化

通过移动属性A的小数点位置进行规范化。小数点移动位数依赖于A的最大绝对值。

在进行规范化之后,就可以计算两个样本之间的距离了,计算公式如下:

如果每个属性有不同的权重,公式修改如下:

对于全是布尔型的样本来说,计算方式如下:

上表表示对与不同的样本i,j,统计它们布尔型同时为1的属性个数,同时为0的属性个数,分别为1和0的属性个数,它们的距离计算方式如下所示:

这个公式的含义其实就是两个样本之间,取值不同的属性的数量与所有属性的数量的比值。

对于命名型(nominal variable)来说,其一种简单的距离计算公式为:

如果样本集的属性类型是混合的,那么有以下公式可以计算距离:

其中分母是属性的权重。

Partitional Clustering

主要思想:首先人为决定将要将数据集分为k个簇,然后根据簇内部相似性要尽可能大,簇之间相似性要尽可能小的思想,将样本分到不同的簇当中去。

1. K-means Clustering

算法过程:首先给k个簇随机分配中心点,然后计算样本集中的每一条数据与k个中心点之间的距离,将这条数据归为距离最小的那个簇。扫描完一轮之后,再重新根据每个簇中的样本,重新计算簇的中心点,然后再扫描样本集,根据新的中心点,计算样本与中心点之间的距离,从而k个簇里的样本更新。迭代几次之后,若重新计算出来的中心点与原来的中心点一样,那么停止迭代。

原理:

其中l表示l个簇,w(i,l)取值为0,1表示第i个样本是否属于第l个簇,d表示计算i样本与l中心点之间的距离。

我们的目的就是要找到w(i,l)使得这个p函数的值最小。很明显,穷举法时间复杂度太高而不可行。

我们采用梯度下降法来解决这个问题,沿着梯度方向下降,从而得到局部最优解。

时间: 2024-10-25 20:33:50

[数据挖掘课程笔记]无监督学习——聚类(clustering)的相关文章

【Python数据挖掘课程】 三.Kmeans聚类代码实现、作业及优化

这篇文章直接给出上次关于Kmeans聚类的篮球远动员数据分析案例,同时介绍这次作业同学们完成的图例,最后介绍Matplotlib包绘图的优化知识.        前文推荐:       [Python数据挖掘课程]一.安装Python及爬虫入门介绍       [Python数据挖掘课程]二.Kmeans聚类数据分析及Anaconda介绍        希望这篇文章对你有所帮助,尤其是刚刚接触数据挖掘以及大数据的同学,同时准备尝试以案例为主的方式进行讲解.如果文章中存在不足或错误的地方,还请海涵

05_无监督学习--聚类模型--K 均值

无监督学习--聚类模型--K 均值0.引入依赖1.数据的加载和预处理2.算法实现3.测试 无监督学习--聚类模型--K 均值 0.引入依赖 import numpy as npimport matplotlib.pyplot as plt # 这里直接 sklearn 里的数据集from sklearn.datasets.samples_generator import make_blobs 1.数据的加载和预处理 x, y = make_blobs(n_samples=100, centers

机器学习课程-第8周-聚类(Clustering)

1. 聚类(Clustering) 1.1 无监督学习: 简介 在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负样本的决策边界,在这里的监督学习中,我们有一系列标签,我们需要据此拟合一个假设函数.与此不同的是,在非监督学习中,我们的数据没有附带任何标签,我们拿到的数据就是这样的: 在非监督学习中,我们需要将一系列无标签的训练数据,输入到一个算法中,然后我们告诉这个算法,快去为我们找找这个数据的内在结构给定数据.我们可能需要某种算法帮助我们寻找一种结构.图上的数

4.无监督学习--聚类

K-means方法及其应用 1.K-means聚类算法简介: k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低.主要处理过程包括: 1.随机选择k个点作为初始的聚类中心. 2.对于剩下的点,根据其与聚类中心的距离,将其归入最近的簇. 3.对每个簇,计算所有点的均值作为新的聚类中心. 4.重复2.3直到聚类中心不再发生改变. 举例:对于A.B.C.D.E这5个点,我们先随机选择两个点作为簇中心点,标记为红色和黄色,对于第一次聚类结果,我们分别计算所有的

0A04 无监督学习:聚类(2) 近邻算法(Affinity Propagation)

AP算法,具有结果稳定可重现 训练前不用制定K-means中K值,但是算法的时间复杂度比K-means高 import numpy as npfrom sklearn.cluster import AffinityPropagation # 引入AP算法聚类 X = np.array([[1,2],[1,4],[0.7,0],[0.2,5],[0,4],[1.3,0],[0.1,2],[0,4],[0.4,0]]) # 训练数据af = AffinityPropagation(preferenc

0A04 无监督学习:聚类(1) k-means

这是一个非常简单的聚类算法,算法的目的就是找到这些中心点的合适坐标,使得所有样本到其分组中心点距离的平方和最小. K-means 的中心点向量不一定是训练样本中某成员的位置 import numpy as npfrom sklearn.cluster import KMeans # 引入K-means模型 # 1.训练和预测X = np.array([[1,2],[1,4],[1,0], [4,2],[4,4],[4,0]])kmeans = KMeans(n_clusters=2,random

无监督学习——聚类算法

聚类分析是在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好. 此次我们学习聚类中的第一个算法——K-均值算法.K-均值算法本质就是重复将样本分配的类里面,不断的更新类的重心位置. 这里将围绕K-均值算法讨论目标优化.随机初始化和如何选择聚类数. K-Means算法 K-均值是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据聚类成不同的组. K-均值是一个迭代算法,假设我们想要将数据聚类成 n 个组,其方法为: 首先选择??个随机的点,称为聚

[数据挖掘课程笔记]人工神经网络(ANN)

人工神经网络(Artificial Neural Networks)顾名思义,是模仿人大脑神经元结构的模型.上图是一个有隐含层的人工神经网络模型.X = (x1,x2,..,xm)是ANN的输入,也就是一条记录的在m个属性上的值.每个属性对应一个输入节点. 对于输入层来说,输入层的输出Oi就是输入层的输入xi. 对于隐含层的其中一个节点j来说,节点j的输入为ΣOiwij (i的取值为所有与节点j相连的输入层节点).可以发现,节点与节点之间的连接是有一个权重的,这个权重将会影响最后的分类结果.而我

[数据挖掘课程笔记]关联规则挖掘

两种度量: 支持度(support)  support(A→B) = count(AUB)/N (N是数据库中记录的条数) 自信度(confidence)confidence(A→B) = count(AUB)/count(A) 关联规则挖掘的基本两个步骤: 1.找出所有的频繁项集 2.由频繁项集产生强关联规则 由于整个数据库十分庞大,所以对第一步来说,若使用穷举法,搜索空间将是2d,d是项的个数.所以优化算法主要需要优化第一步.而频繁项集里的项的数目远小于数据库数据的数目,所以,在第二步中,我