首页 > 其他分享 >聚类的学习

聚类的学习

时间:2022-12-26 18:39:08浏览次数:42  
标签:self 样本 矩阵 学习 协方差 聚类 向量


聚类

定义

把数据集分成若干个互不相交的簇(一坨数据集),使簇间相似度尽量的小,簇内相似度尽量的大

性能度量

外部指标

  • 将聚类结果和某个参考模型进行比较

与外部模型的比较

假设样本在聚类中是ai,在模型中是bi

聚类的学习_相似度

聚类的学习_数据集_02

聚类的学习_数据集_03

聚类的学习_聚类_04

指标

Jaccard系数

聚类的学习_数据集_05

FM指数

聚类的学习_相似度_06

Rand指数

聚类的学习_数据集_07

上述指标都是越大越好

内部指标

  • 不使用参考模型将聚类结果进行比较

内部比较

聚类的学习_相似度_08

聚类的学习_数据集_09

聚类的学习_数据集_10

聚类的学习_聚类_11

聚类的学习_相似度_12是簇的中心点

指数

DB指数,简称DBI

聚类的学习_数据集_13

Dunn指数,简称DI

聚类的学习_数据集_14

DBI越小越好,DI越大越好

距离度量

对于有序属性—连续值

各种距离

对于无序属性—离散值

VDM(Value Difference Metric)

  • 聚类的学习_相似度_15表示在属性u上取值为a的样本数
  • 聚类的学习_聚类_16表示在第i个样本簇中在属性u上取值为a 的样本数
  • k为簇数

则属性u上两个离散值a与b之间的VDM距离为

聚类的学习_数据集_17

上面的两者结合可以处理混合属性

原型聚类

  • 基于原型的聚类方法,假设聚类结构能通过一组原型进行刻画。
  • 算法先对原型进行初始化,然后不断的迭代更新…

k-均值聚类

  • 目的是最小化平方误差

聚类的学习_相似度_18

聚类的学习_数据集_19是簇i的均值向量

由于这是一个NP难问题,所以我们用贪心的方式解决

  • 1、随机初始化均值向量
  • 2、根据均值向量分类
  • 3、重新分配每个样本所属哪个簇
  • 4、更新均值向量
  • 5、重复上面的三个过程
def kMeansCluster(self):
dataSet = self.dataSet
K = self.K
bz = 1; n, m = dataSet.shape
self.dataBe = mat(zeros((n,1)))
while bz:
bz = 0
for i in range(n):
minn, minx = self.findMin(dataSet[i])
if (minx != self.dataBe[i]): bz = 1
self.dataBe[i] = minx
for i in range(K):
datK = dataSet[nonzero(self.dataBe[:, 0] == i)[0]]
if (datK.shape[0] == 0): continue
self.cen[i, :] = mean(datK, axis=0)
for i in range(K):
labK = []
for j in range(n):
if (self.dataBe[j, 0] == i): labK.append(self.labelSet[j])
self.cenbz.append(self.majority(labK))

DBSCAN

优点:不需要知道簇的数量
缺点:要确定距离r和minPoints

  • 1、先确定距离r和minPoins:
  • 从未访问过的点(没有被),半径r中点的数量是否大于或等于或小于minPoints来分类
  • 大于或等于:central point,并建立一个类,把能从核点到核点围起来的所有点归为一类
  • 聚类的学习_聚类_20

  • 小于:noise point
  • 2、重复1步骤,直至所有的点均能被归类

学习向量量化(LVQ)

  • 与k-均值分类的原理类似,也是最小化平方误差,但是它是已知各个样本的标签的。
  • 假设每个样本的特征是向量x,标记是y,聚类的学习_聚类_21,簇的个数是q
  • 目标:我们试图对每个簇搞出一个向量,向量的长度与特征数是一样的,同时也有一个簇标记t

流程

  • 1、初始化每个向量的类别标记,聚类的学习_相似度_22,和每个向量的值,还有学习率聚类的学习_聚类_23
  • 2、直到满足条件则停止(收敛,更新到小于阈值)
  • 1、从样本中随机选取一些样本
  • 2、计算这些样本与每个簇向量的距离
  • 3、找出对于每个样本x最近的簇向量i
  • a、假如样本x的标签和簇向量i的标签是一样的----->则我们希望他们更近
  • b、假如样本x的标签和簇向量i的标签不一样---->则我们希望他们更远
  • 更远和更近:向量聚类的学习_聚类_24

高斯混合聚类

定义

就是有很多个高斯分布搞在一起,然后要把他划分出来

例:假如有一组升高数据,不知道性别,然后拿一个数据出来问你性别的概率

答:假设是由两个高斯分布混合在一起的,高斯混合聚类可解

一维高斯分布到n维的高斯分布

一维:
聚类的学习_聚类_25

聚类的学习_相似度_26~聚类的学习_数据集_27

多维:

聚类的学习_聚类_28

聚类的学习_聚类_29~聚类的学习_数据集_30聚类的学习_聚类_31

聚类的学习_数据集_32

  • 高维就是把方差(一维相关性)转化成协方差矩阵(多维相关性),所以我们只用考虑一维如何求解就能推到到多维

显然,我们假设已经知道了一个概率模型,我们需要知道系数----->极大似然估计

  • 不过问题是,我们在对数似然估计后的求导难以求出解,因为它会有一些不知道的变量------>EM算法

EM算法在高斯混合模型上的应用

一维的高斯混合分模型如下
聚类的学习_聚类_33

聚类的学习_相似度_34
K是簇的个数,聚类的学习_聚类_35是第k个簇的高斯分布模型,聚类的学习_相似度_36(≥0)是第k个簇的系数满足聚类的学习_聚类_37,就是划分系数

一、明确隐变量,写出完全数据的对数似然函数

我们现在有k个簇,那么就有k个标签了

由于我们不知道每个样本属于哪个标签,所以我们定义聚类的学习_相似度_38,g不是0就是1,且聚类的学习_聚类_39

那么现在的概率模型为,一下的聚类的学习_聚类_40的定义为是0还是1,这样就能作为次幂乘起来
聚类的学习_数据集_41

聚类的学习_相似度_42

聚类的学习_相似度_43
所以完全数的对数似然函数为
聚类的学习_聚类_44

聚类的学习_数据集_45

二、EM算法的E步:确实Q函数

聚类的学习_聚类_46
把期望函数带入和隐函数相关的变量中
聚类的学习_相似度_47
由于现在g的值还没有确定,所以我们要确定了g的值才能确定g函数

  • 由上式g的函数被转化成g的期望
    聚类的学习_相似度_48

聚类的学习_数据集_49
上下同时乘聚类的学习_相似度_50,转化乘联合概率聚类的学习_相似度_51(完全数据的概率)
聚类的学习_聚类_52

聚类的学习_相似度_53
我们通过对g的期望计算g,然后确定出Q函数

  • EM算法在确定Q函数的时候大致如此,用隐函数的最大期望来得到
三、EM算法的M步:极大化Q函数

我们在确定出Q函数的时候,就能求极值了,如果不能直接求极值,可以用梯度下降或牛顿迭代来求

对于每个变量偏导使其等于0

高斯分布一维的情况
聚类的学习_相似度_54

聚类的学习_聚类_55
聚类的学习_聚类_56是用拉格朗日乘数法推出来的
聚类的学习_相似度_57

重复以上步骤直到收敛

收敛条件,由于Q的值与聚类的学习_聚类_56有关系,当聚类的学习_聚类_56的变化小于阈值时,则收敛

PCA降维

要分散

  • 对于一组二维的数据点,我们要投影到一维的话,那么最后的方式就是找到一条直线,使得这些点在直线上的投影尽量的分散。
  • 而要分散,就是可以数值化为方差尽量的大

协方差矩阵

  • 协方差所表示的是两个向量的同步程度。
  • 而协方差矩阵也有类似的作用。协方差矩阵的所表示的超空间的凸起的地方就是最同步的地方,而我们沿着折最同步的地方垂直分解就能造成所谓的尽量的离散。

矩阵的特征向量

  • 特征向量的性质就是,特征向量一直点乘矩阵,最后总是在特征向量的方向做变换。
  • 意义上就相当于这个矩阵所表示的坐标系的最伸长的地方,特征值就相当于这个度

步骤

  • 1、求解所有数据的协方差矩阵
  • 2、然后根据这个协方差矩阵求解他们的特征向量和特征值
  • 3、然后根据得到的特征值从大到小排序,将排序后的特征向量拼接成一个转移矩阵
  • 4、然后整个数据点乘这个转移矩阵,得到投影后的矩阵
  • 5、计算最适宜的分解维度,计算每一维的总方差,然后如果前k维的总方差大于一个阈值threshVal 的话,那么这个k就是最适宜分解的维度,一般threshVal可以设置在0.9左右


标签:self,样本,矩阵,学习,协方差,聚类,向量
From: https://blog.51cto.com/u_15923198/5969996

相关文章

  • 支持向量机(SVM)学习小记
    支持向量机(SVM)简介是一种二分类模型,基本模型的定义是在特征空间上的间隔最大的线性分类器间隔最大有利于感知学习策略:间隔最大化,可以形式化为一个求解凸二次规划问题,也等......
  • gym库学习小记
    gym学习gym库是一个开发和比较强化学习算法的包,并提供可视化,非常的有趣gym.make调用智能体模型的库env=gym.make(‘CartPole-v0’)#调用小车倒立摆系统其他库如下`(Acro......
  • Go的网络操作简易学习
    Go的网络操作库——io/ioutilioutil.ReadAllpageBytes,err:=ioutil.ReadAll(resp.Body)库——net/httpresp.Body.Close()一般在go对请求http之后,都要进行这个语句这个语......
  • BSGS算法学习小记(大步小步算法)
    简介先看一个式子xy≡z(modp),z是质数现在只知道x和z,要求y。大步小步算法(BSGS,BabyStepsGiantSteps)就是解决这个问题。算法流程暴搜的枚举范围根据费马小定理:xp−1≡1。......
  • 决策树学习小记
    决策树类型ID3C4.5CART(回归树)优缺点优点:计算复杂度不高,输出易于理解,对缺失值不敏感,可以处理不相关特征数据缺点:可能会产生过度匹配问题,过拟合使用数据类型:数值型和布尔型......
  • Goland的简易学习
    Go学习包声明+引入包+函数+变量+语句&表达式+注释packagemainimport"fmt"funcmain(){fmt.Println("Helloworld")}必须在源文件非注释的第一行指明这个文件属于拿哪个......
  • Densely Connected Convolutional Networks论文学习
    DenselyConnectedConvolutionalNetworks如果在接近输入层和接近输出层之间有更短的连接(如1->n),则卷积神经网络会更深入,更准确,更有效。稠密卷及神经网络:每一层之间都有连......
  • CTC算法学习笔记
    CTC算法在OCR或语音识别任务中,经常出现不知道从哪里开始对齐比如对​​apple​​,OCR出aaappppllle这种东西如果只是简单的去重的话就变成了​​aple​​ConnectionistT......
  • Batch Normalization: Accelerating Deep Network Training byReducing Internal Cova
    BatchNormalization:AcceleratingDeepNetworkTrainingbyReducingInternalCovariateShift文章试图解决的问题内部协变量转移(internalcovariateshift):在训练进行......
  • Attention机制学习
    Attention机制回顾RNN结构讲attention之前先回顾一下RNN的各种结构NtoN如:语音处理,时间序列处理Nto1如:情感分析,输入一段视频判断类型1toN或如:从图像生成文字,从类别生成......