无监督学习分类

2023-10-29

 

目录

1 聚类

1.1 K-均值算法(K-Means)

1.2 层次聚类(Hierarchical Clustering)

1.3 基于密度聚类Mean Shift

1.4 基于密度聚类DBSCAN

1.5 高斯混合模型(GMM)与EM

1.6 基于图论聚类

2 降维

2.1 主成分分析(Principal Component Analysis,PCA)

2.2 SVD矩阵分解(Singular Value Decomposition)

2.3 独立成分分析(ICA)

2.4 t-SNE

3 自编码器(Auto-encoder)


    无监督学习常常被用于数据挖掘,用于在大量无标签数据中发现些什么。它的训练数据是无标签的,训练目标是能对观察值进行分类或区分等。例如无监督学习应该能在不给任何额外提示的情况下,仅依据所有“猫”的图片的特征,将“猫”的图片从大量的各种各样的图片中将区分出来。

1 聚类

    聚类算法就是将一堆数据进行处理,根据它们的相似性对数据进行聚类。

    聚类,就像回归一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。常见的聚类算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)

    聚类算法有很多种,具体如下:中心聚类、关联聚类、密度聚类、概率聚类、降维、神经网络/深度学习。

1.1 K-均值算法(K-Means)

    K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数。K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。

    通常,人们根据样本间的某种距离或者相似性来定义聚类,即把相似的(或距离近的)样本聚为同一类,而把不相似的(或距离远的)样本归在其他类。

INPUT:

    K(number of clusters)

    Training set{x1,x2,x3,....xn} (xi belongs to R^n)

  OUTPUT:

    K个聚类中心

  算法工作原理摘要:

 

通读本算法,可以发现k-means对聚心初始值非常敏感,如果初始情况不好会震荡的。这里可以采取一些措施预判聚心大致要在哪个位置,然后直接将其初始化。

另外,关于收敛的判断,可以采取多种方法。比如使用代价函数,或者F-Measure和信息熵方法。

K-means优缺点分析:

  • 优点: 算法简单易实现; 
  • 缺点: 需要用户事先指定类簇个数; 聚类结果对初始类簇中心的选取较为敏感; 容易陷入局部最优; 只能发现球形类簇。

K-means:https://blog.csdn.net/weixin_39910711/article/details/102373311

1.2 层次聚类(Hierarchical Clustering)

  顾名思义,层次聚类就是一层一层地进行聚类。既可以由下向上对小的类别进行聚合(凝聚法),也可以由上向下对大的类别进行分割(分裂法)。在应用中,使用较多的是凝聚法。

  INPUT:training_set D,聚类数目或者某个条件(一般是样本距离的阈值)

  OUTPUT:聚类结果

  凝聚法:

  跟竞赛中经常出现的并查集问题略相似,凝聚法指的是先将每个样本当做一个类簇,然后依据某种规则合并这些初始的类簇,直到达到某种条件或者减少到设定的簇数。

  在算法迭代中每次均选取类簇距离最小的两个类簇进行合并。关于类簇距离的计算表示方法主要有以下几种:

  (1)取两个类中距离最小的两个样本的距离作为两个集合的距离

  (2)取两个类中距离最大的两个样本的距离作为两个集合的距离

  (3)计算两个集合中每两两点的距离并取平均值,这种方法要略费时

  (4)比(3)轻松一些,取这些两两点距的中位数

  (5)求每个集合中心点,然后以中心点代表集合来计算集合距离

  (6)......

  迭代会在簇数减少到设定数量时结束,当然,如果设定了阈值f,那么当存在两个距离小于f的集合时则会继续迭代直到不存在这样的两个集合。

  分裂法:

  首先将所有样本归类到一个簇,然后依据某种规则逐渐分裂,直到达到某种条件或者增加到设定的簇数。

层次聚类和K-means作比较:

  (1)K-means时间复杂度为O(N),而层次聚类时间复杂度为O(N^2),所以分层聚类不能很好地处理大批量数据,而k-means可以。

  (2)K-means不允许嘈杂数据,而层次聚类可以直接使用嘈杂数据集进行聚类

  (3)当聚类形状为超球形(如2D圆形,3D球形)时,k-means聚类效果更好。

层次聚类 Hierarchical Clustering:https://blog.csdn.net/weixin_39910711/article/details/104547041

1.3 基于密度聚类Mean Shift

基于密度的聚类——DBSCAN聚类算法:https://blog.csdn.net/weixin_39910711/article/details/104574296

1.4 基于密度聚类DBSCAN

1.5 高斯混合模型(GMM)与EM

1.6 基于图论聚类

2 降维

2.1 主成分分析(Principal Component Analysis,PCA)

   主成分分析是利用正交变换将一些列可能相关数据转换为线性无关数据,从而找到主成分。PCA方法最著名的应用应该是在人脸识别中特征提取及数据降维。

    PCA主要用于简单学习与可视化中数据压缩、简化。但是PCA有一定的局限性,它需要你拥有特定领域的相关知识。对噪音比较多的数据并不适用。

2.2 SVD矩阵分解(Singular Value Decomposition)

    也叫奇异值分解(Singular Value Decomposition),是线性代数中一种重要的矩阵分解,是矩阵分析中正规矩阵酉对角化的推广。在信号处理、统计学等领域有重要应用。SVD矩阵是一个复杂的实复负数矩阵,给定一个m行、n列的矩阵M,那么M矩阵可以分解为M = UΣV。U和V是酉矩阵,Σ为对角阵。

    PCA实际上就是一个简化版本SVD分解。在计算机视觉领域,第一个脸部识别算法就是基于PCA与SVD的,用特征对脸部进行特征表示,然后降维、最后进行面部匹配。尽管现在面部识别方法复杂,但是基本原理还是类似的。

2.3 独立成分分析(ICA)

    独立成分分析(Independent Component Analysis,ICA)是一门统计技术,用于发现存在于随机变量下的隐性因素。ICA为给观测数据定义了一个生成模型。在这个模型中,其认为数据变量是由隐性变量,经一个混合系统线性混合而成,这个混合系统未知。并且假设潜在因素属于非高斯分布、并且相互独立,称之为可观测数据的独立成分。

    ICA与PCA相关,但它在发现潜在因素方面效果良好。它可以应用在数字图像、档文数据库、经济指标、心里测量等。

2.4 t-SNE

    t-sne是流形学习的一种,属于非线性降维的一种,主要是保证高维空间中相似的数据点低维空间中尽量挨得近。是从sne演化而来,sne中用高斯分布衡量高维和地位空间数据点之间的相似性,t-sne主要是为了解决sne中的“拥挤问题”,用t分布定义低维空间低维空间中点的相似性。但是t-sne不能算是一种通用的降维方法,时间复杂度也挺高的。

    t-SNE 背后的思想是找到数据的一个二维表示,尽可能地保持数据点之间的距离。t-SNE 首先给出每个数据点的随机二维表示,然后尝试让在原始特征空间中距离较近的点更加靠近,原始特征空间中相距较远的点更加远离。t-SNE 重点关注距离较近的点,而不是保持距离较远的点之间的距离。换句话说,它试图保存那些表示哪些点比较靠近的信息。

t-SNE原理与推导:https://blog.csdn.net/scott198510/article/details/76099700

t-SNE和PCA介绍:https://www.jianshu.com/p/8c20b975a174

2.5 非负矩阵分解NMF

    非负矩阵分解(NMF)是另一种无监督学习算法,其目的在于提取有用的特征。它的工作原理类似于 PCA,也可以用于降维。

    与 PCA 相同,我们试图将每个数据点写成一些分量的加权求和。但在 PCA 中,我们想要的是正交分量,并且能够解释尽可能多的数据方差;而在 NMF 中,我们希望分量和系数均为非负,也就是说,我们希望分量和系数都大于或等于 0。因此,这种方法只能应用于每个特征都是非负的数据,因为非负分量的非负求和不可能变为负值。

    将数据分解成非负加权求和的这个过程,对由多个独立源相加(或叠加)创建而成的数据特别有用,比如多人说话的音轨或包含多种乐器的音乐。在这种情况下,NMF 可以识别出组成合成数据的原始分量。总的来说,与 PCA 相比,NMF 得到的分量更容易解释,因为负的分量和系数可能会导致难以解释的抵消效应。

3 自编码器(Auto-encoder

    自编码器(Auto-encoder)(其实相当于一个神经网络,但这里不用神经网络的结构来解读)做的事情很有意思,它的基本思想就是对输入(input)编码(encode)后得到一个隐含的表征再解码(decode)并输出(output),这么看起来不是在绕圈圈吗?

    这张图里的关键是中间的隐含表征(latent representation)。

    自编码器的两个主要应用是降噪(denoising)稀疏化数据(sparse)。

    什么叫降噪和降维呢?

    让我们用这张图来理解,图中有三层,输入隐含输出层,每一层的一个圈圈代表一个特征。输入层经过编码变成了中间的隐含层,隐含层解码后得到后面的输出层。可以看到,隐含层只有输入层的一半,原本的6个特征变成了3个特征,这意味着什么?如果要来表示小明的身材,输入的六个特征分别为“肉多”、“体脂率高”、“质量大”、“个子不高”、“总是心情好”、“喜欢笑”而隐含层的三个特征为“肉多”、“体脂率高”、“个子不高”,这个自编码器就是用来降噪的。

    噪音(noise)指的是影响我们算法模型的不相关因素;降噪,就是用特定的方法去掉这些不相关的因素。

    如果要来表示小明的主要特征,输入的六个特征还是“肉多”、“体脂率高”、“质量大”、“个子不高”、“心情好”、“喜欢看剧”而隐含层的特征变成了“胖”、“矮”和“开朗”,这个自编码器就是稀疏自编码器

    稀疏化数据,就是指将密集的浅层含义的数据(比如说:肉多这样的外在表现)表示为稀疏的更抽象的数据(将外在表现提炼为总结性的特征,比如:胖)。

    完成上述两个任务,都需要构建合适的损失函数(loss function)。

    隐含层的层数是可以增加的,每一层都可以作为我们需要的特征,多层的结构能够让自编码器对特征的分析更加准确和稳定,而如果这个层数再增加一些(很多很多很多层)。

    

(省略了后面的解码步骤)

    它就是堆叠/卷积自编码器(Convolution autoencoder),可以说是一种卷积神经网络(Convolutional neural network,CNN)

    而回到最开始的图,我们刚才一直在说的是隐含层的意义和变化,那最后的输出一点用都没有吗?

       

    这里不得不提一下生成式对抗网络(Generative adversarial networks,GAN)。

    生成式对抗网络的精髓就是两个网络一个网络生成图片一个网络辨别图片是不是真实的,当生成图片的网络能够“欺骗”识别图片的网络的时候,我们就得到了一个能够生成足够真实图片的网络。

    这是一个很有趣的模型,机器根据已有的实物创造了实际中不存在的事物,下图是从真实图片转化为生成图片的过程。

    

    这个思想能够实现一些很神奇的事情,比如:将文字变成图像,用对抗网络来构造药品和疾病的对抗等(https://www.jiqizhixin.com/articles/2017-08-23-6

    而对抗自编码器(Adversarial Autoencoder,AAE) ,使用了最近提出的生成对抗网络(GAN),通过任意先验分布与VAE隐藏代码向量的聚合后验匹配,来实现变分推理。

    简单地说,就是它把GAN和自编码器组合成了一个具有生成能力的模型,也就是对抗自编码器。AAE能够在监督、无监督的条件下,都展现出不错的识别和生成能力。

其他

监督学习、无监督学习、强化学习,机器学习的常用算法总结:http://www.360doc.com/content/19/0211/15/16619343_814245361.shtml

从无监督学习说起:算法模型有哪几种?:http://www.woshipm.com/pmd/1082173.html

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无监督学习分类 的相关文章

随机推荐

  • docker macvlan虚拟化网络与宿主机通信问题解决——筑梦之路

    默认情况下各个macvlan之间可以通讯 但是不能与宿主机进行通讯 主要原因 为了安全而禁止互通 如宿主机ping容器的ip 尽管他们属于同一网段 但也是ping不通的 反过来也是 这里用两个实例来说明如何解决这个问题 实例一 环境说明 宿
  • 实现strstr函数

    题目 给定两个两个字符串 str1和str2 str1是否包含str2 若包含则返回字符串出现的第一个位置 错误返回 1 示例1 输入 str1 hello str2 ll 输出 2 思路 1 判断两个字符串长度大小 2 判断两个字符串是否
  • The Serenity Prayer

    The Serenity Prayer God grant me the serenity to accept the things I cannot change courage to change the things I can an
  • JavaScript 身份证号合法验证

    let reg 1 9 d 5 18 19 20 3 d d 2 0 1 9 1 0 2 0 2 1 9 10 20 30 31 d 3 0 9Xx if reg test this dataForm visitorCode false t
  • 某个网站(比如CSDN、GitHub)突然打开、加载很慢,有些途径访问正常、其他网站访问正常,可尝试指定域名服务器的IP地址,不走DNS查询。

    摘要 若在电脑上访问某个网站比如CSDN主页 CSDN 专业开发者社区 GitHub主页 GitHub Let s build from here GitHub 通过WIFI或者网线访问很慢 甚至网页打不开 但通过流量访问却很快 访问其他网
  • VSCode出现请更新includePath错误的解决方法

    问题 文件添加 include
  • epoll 与select poll区别

    1 select gt 时间复杂度O n 它仅仅知道了 有I O事件发生了 却并不知道是哪那几个流 可能有一个 多个 甚至全部 我们只能无差别轮询所有流 找出能读出数据 或者写入数据的流 对他们进行操作 所以select具有O n 的无差别
  • ajax跨域post文件上传,ajax跨域上传文件加了xhr报不支持options错误

    用ajax跨域上传文件不加xhr就能请求成功 为了实现进度条功能在ajax里面加了xhr就报错了 ajax url http localhost 823 api FileStream Upload type post contentType
  • python序列和字典

    一 序列 1含义 包含若干个元素 元素有序排列 可通过下标访问一个或多个元素这样的对象 eg 字符串 列表 元组 2 标准类型操作符 expr 1 lt expr 2 3 序列类型操作符 1 in not in 判定一个元素是否在序列中 返
  • 如何复制网上的收费文本

    选中你要复制的内容打开f12开发者工具 查看选中部分地方源代码 鼠标左键打开 直接复制完事 新手博主 请前辈批评指正 丁一
  • JAVA接口实验:卡车要装载一批货物,货物由电视机、计算机和洗衣机组成,卡车需要计算出整批货物的重量。

    卡车要装载一批货物 货物由电视机 计算机和洗衣机组成 卡车需要计算出整批货物的重量 编写能够满足如下条件的程序 定义一个接口 包含计算货物重量的抽象方法 分别定义实现上述接口的用于计算电视机 计算机和洗衣机的类 定义一个卡车类 在其中定义一
  • Android软件开发之获取通讯录联系人 联系人图像

    Android软件开发之获取通讯录联系人信息 十二 发布于2011 10 12 图中选中的数据库 contacts2 db就是系统储存联系人的数据库 我们将它打开看看里面储存了些什么东东 打开contacts db后 发面里面有一堆表 同学
  • Java定时注解@Scheduled的使用,fixedDelay,fixedRate,cron的使用

    Java定时注解 Scheduled的使用 fixedDelay fixedRate cron的使用 问题背景 参数简介 项目创建 测试结果 心得 Lyric 咸咸的汗水 问题背景 项目中经常使用定时任务 spring提供了定时注解 很方便
  • 前端笔试题1

    HTML CSS 题1 1 使用CSS 让该节点不可见 方法越多越好 div class hidden Hi div 使用CSS 让节点不可见的方法有以下几种 把 visibility 属性设置为 hidden 这样元素框不会被绘制 但仍然
  • 【C++】详解声明和定义

    2023年8月28日 周一下午 研究了一个下午才彻底弄明白 写到晚上才写完这篇博客 目录 声明和定义的根本区别 结构体的声明和定义 声明结构体 定义结构体 类的声明和定义 函数的定义和声明 声明函数 定义函数 变量声明和定义 声明变量 定义
  • 人工智能的三个层次:运算智能,感知智能,认知智能

    2016年 人工智能成为产业界和学术界的大热词 年初 李世石与Alpha Go的人机围棋大战吸睛无数 人工智能的话题始料未及地席卷了世界每处 此外 今年也恰逢人工智能学科诞生一甲子 Alpha Go再一次打败人类 受到全世界的瞩目 历经波折
  • android集成友盟推送遇到的问题

    在自身项目集成友盟推送时 参考了官方文档的教程 导入 PushSDK 把下载的 zip 文件解压缩 解压后的文件路径不能有中文 把解压缩后得到的目录下的 PushSDK 当做 Module 导入到自己的工程 在之前的 AndroidMani
  • C++——可变模板参数

    声明 由于对可变模板参数了解资源有限 以下有些观点仅为个人参考手册实践得出的 不要被我个人的观点误导 文章目录 一 基本语法知识 1 基本知识 2 基本语法 二 基本使用方法 1 基本演示 2 参数展开 一 基本语法知识 1 基本知识 C
  • linux文件系统初始化过程(2)---挂载rootfs文件系统

    一 目的 本文主要讲述linux3 10文件系统初始化过程的第一阶段 挂载rootfs文件系统 rootfs是基于内存的文件系统 所有操作都在内存中完成 也没有实际的存储设备 所以不需要设备驱动程序的参与 基于以上原因 linux在启动阶段
  • 无监督学习分类

    目录 1 聚类 1 1 K 均值算法 K Means 1 2 层次聚类 Hierarchical Clustering 1 3 基于密度聚类Mean Shift 1 4 基于密度聚类DBSCAN 1 5 高斯混合模型 GMM 与EM 1 6