机器学习理论及案例分析(part3)--聚类

网友投稿 219 2022-09-03

机器学习理论及案例分析(part3)--聚类

文章目录

​​聚类​​

​​什么是聚类​​

​​聚类是无监督学习的主要任务​​​​聚类描述​​​​聚类分类​​

​​聚类算法实例​​

​​k-means​​​​维数灾难​​

​​深度学习​​

​​名词解释​​​​浅层学习与深度学习​​​​深度学习与神经网络​​​​机器学习与深度学习的差异​​

​​深度学习常用方法:自动编码器​​​​深度聚类论文分析​​​​参考文献​​

聚类

什么是聚类

聚类是无监督学习的主要任务

聚类一直是机器学习、数据挖掘、模式识别等领域的重要组成内容。2015年,中国人工智能学会理书长李德毅院士指出:人类的认知科学要想有所突破,首先就要在人数据聚类上取得突破,聚类是挖掘大数据资产价值的第一步。

和分类(监督学习的主要任务)不同,聚类是在无标记样本的条件下将数据分组,从而发现数据的天然结构,聚类在数据分析中扮演重要角色,它通常被用于以下三个方面:

发现数据的潜在结构对数据进行自然分组对数据进行压缩

这几个方面的功能使聚类既可以作为预处理程序,又可以作为独立的数据分析工具。

聚类描述

数据聚类(或聚类分组)的目标是在一个对象(模式、数据点)的集合中发现其自然的分组。关于聚类目前尚无统一的定义,比较常用的定义如下:聚类是把一个数据对象的集合划分成簇(子集),使簇内对象彼此相似,簇间对象不相似的过程。

尺度不变性是自然的要求,即聚类结果不能依赖于节点之间距离的量纲;

划分丰富性要求聚类结果由节点间相似(相异)性函数控制;

距离一致性要求若两个已经被划分到同一簇的节点变得更接近,或两个已经被划分到不同簇的节点变得更远,那么在新的距离下,聚类函数应取得和以往一致的结果。

聚类分类

聚类方法大体可以分为3个阶段:

经典算法:它是2000年以前,而向早期的数据库及相关应用开发的算法。比如基于模型的算法,基于划分的算法,基于密度的算法,基于网格的算法,层次聚类算法;高级算法:它是2000年以来,在经典算法的基础上,针对更为复杂的数据和任务开发的算法。比如谱聚类,高维数据聚类,基于非负数矩阵分解的聚类,不确定数据聚类;多源数据算法:它是针对多源相关数据开发的算法。比如:多角度聚类,多任务聚类,多任务多视角聚类,迁移聚类,多模聚类。

图示:

聚类算法实例

这里,我们以基于划分的聚类算法,k-均值算法为例,对聚类进行初步探索。

备注:基于划分的方法是一种被广泛研究和应用的数据聚类方法,这类方法的大部分算法都有着简洁易懂,易于实现等优点,在许多领域都发挥巨大作用,基于划分的方法通过一个最优化的目标函数发掘数据中包含的类别信息结构,通常以迭代的方式逐步提高聚类的效果。这里首先需要引入一个原型点的概念,即可以体现出某一类别特性的代表的点,因此,基于划分的算法通常需要设定某种确定的参数来选取可以代表对应簇的原型点,因此,基于划分的方法也称为基于原型的方法。

基于划分算法的流程:

k-means

k-均值算法在许多学科科领域内得到了大量的研究和应用,具体如数据压缩、数据分类、密度估计等方面,因为其算法思想较为简洁易懂,且花费较小的计算代价可以获得不错的聚类结果等原因,k-均值算法成为各种聚类算法中较为常用的算法之一。

算法实现

关于均值

关于为何选择均值作为中心的计算标准,我们可以参考以下文献:

关于距离函数

当p = 1时,我们得到曼哈顿距离,当p = 2时,我们得到标准的欧氏距离。

维数灾难

由上面的证明,我们可以了解到,传统的聚类算法在高维数据上的性能通常很差,故我们在训练模型时,要特别注意维度灾难(curse of dimensionality)现象。

维度灾难,即当我们模型的特征个数不断增加时,模型性能可能会有提升,但是超过了某个值后,其性能不升反降。

维度灾难同时引发了过拟合问题,即模型在训练集上表现的良好,但在非训练集上表现一般,此时模型可能因为特征维数过多,从而学习了过多细节,泛化能力差。

在这个时代,我们的信息量增长速度过快,人们应该从干扰他们的噪声中分辨出有用的信号。但是由于人工筛选特征成本过大,再加上人们本身对所研究的事物不够了解,难以人工筛选出"有用的"特征,所以此时,我们就可以考虑,让模型自己去提取特征。

为此,人们广泛研究了降维和特征变换方法,将原始数据映射到一个新的特征空间,生成的数据更容易被现有的分类器分离。一般来说,现有的数据变换方法有主成分分析(PCA)[6]等线性变换和核方法、谱方法等非线性变换。

然而,高度复杂的数据隐藏结构仍然挑战着现有聚类方法的有效性。

随着深度学习的发展,深度神经网络由于其高度非线性转换的固有特性,可以用于将数据转换为更有利于聚类的表示。我们将带深度学习的聚类方法称为深度聚类。[1]

深度学习

在对深度聚类进行阐述之前,我想先简单概述一下深度学习。

名词解释

机器学习

机器学习:机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数进行预测的算法。机器学习按照学习方式可以分为:

监督学习无监督学习强化学习

通俗的来说,机器学习是一门讨论各式各样的适用于不同问题的函数形式,以及如何使用数据来有效的获取函数参数具体指的学科。

人工神经网络

人工神经网络:我们将模拟生物神经网络的数学模型统称为人工神经网络。

神经元图解:

感知机是最简单的神经网络,感知机接收若干个输入,并通过输入函数、输出函数给网络一个输出,它有两层,一层为输入层,另一层为输出层(有计算单元):

这是一个包含三个层次的单层神经网络,它有1个输入层,1个隐藏层,1个输出层,输入层3个单元,隐藏层3个单元,输出层3个单元:

这是一个多层神经网络,他有1个输入层,2个隐藏层,1个输出层:

深度学习

深度学习是机器学习中的一个大分支(一类函数),它们的形式通常为多层(深层)神经网络。

浅层学习与深度学习

浅层学习:在神经网络中含有一个隐层的就叫做多层感知机,也叫神经网络,这种模型就叫做浅层模型。在这种模型中,人们可以用强于人工规则的统计学习方法。20世纪90年代,各种各样的浅层机器学习模型被提出,比如,支持向量机,Boosting,最大熵法。

而在深度学习中,不止有一层隐藏层,所以在特征的选取、隐层的确定、单层训练、回归训练等方面都有很多理论和应用难题。

深度学习与神经网络

神经网络

深度学习

相同

二者都有相似的分层结构,包括输入层,隐藏层和输出层的多层网络

其中只有相邻层之间有链接,同一层及跨层之间没有连接。

不同

一般只有两至三层,且参数和计算单元有限,学习能力有限

具有5-10甚至更多层,并且引入了更有效的算法

机器学习与深度学习的差异

备注:参考书上标题是机器学习与深度学习的差异,但内容却全部都是模式识别,所以我查了一下相关文献,在这里简述一下模式识别,并对模式识别与机器学习进行简要区分。

模式识别

模式识别:是指能够根据原始数据的类别,采取相应行为的能力,比如,我们人类能够轻而易举的进行人脸及语音识别,虽然我们在日常生活中可以轻易进行模式识别,但是这些简单的行为背后却有着非常复杂的处理机制。

说到这里,我们就会非常自然的想到,是否可以构建一台能够识别不同模式的机器。

比如,我们可以用摄像机拍摄车辆照片,然后对这些图片进行预处理,要能够方便后续处理,同时也要保证信息不能过多损失。我们可以采用图像分割技术将车辆与背景分开,然后将每个车辆的数据送入特征提取器,来测量特定特征,从而简化原始数据,比如,我们可以将成千上万比特的像素颜色信息压缩至几个比特的类别信息。

这时,我们对于特征的选择就非常关键,如果我们选择特征过少,或者不具有代表性,那么分类器的性能就会不足,但是如果我们过多的选取特征,那么可能会导致特征的冗余,并且会使模型的推广能力非常差,即只能对训练过的车辆数据进行正确识别,而难以对新的样本进行正确判断,而我们设计分类器的中心任务就是能够对新样本做出正确的反应。

所以,可以说仔细选择特征,从而获得一个合理的有利于分类器成功实现的模式表达,是几乎所有模式识别系统的中心任务。

模式识别与机器学习区别

在一个模式识别系统中,最基础的因素是用来描述研究对象的特征。如果特征与所研究的分类问题没有关系或者关系很弱,那么无论采用怎么样的分类器,都很难取得理想的分类效果。模式识别虽说可以实现一定程度上的智能,但是过于依赖与特征的选取,而特征的获取是依赖于具体的问题和专业的知识的。因此,人们想往前更进一步,将特征提取的过程也交给机器,这样进一步减少了人们的参与.

简而言之,模式识别研究的是怎么样通过输入的特征对样本进行分类,而机器学习更加关注的是如果通过输入的样本来提取出合适的特征,进而实现分类的目标。

想要了解两个方向的差异,我们也可以看一下有关这些方向公认的优秀出版书籍目录上的差异,下面参考了两本相关书籍:

模式识别(机器学习)与深度学习的差异

传统的模式识别进化到深度学习,它们的特征就在特征提取上,比如,我们可以看下面这张车辆图片所示.

深度学习常用方法:自动编码器

思想(简述)

从生物学角度来说,自动编码器中的编码与解码就类似于学习与重构.

实例

假设,我们有4个样本,每个样本有4个特征,每个特征我们用二进制位来表示:

x1

x2

x3

x4

0

0

0

1

0

0

1

0

0

1

0

0

1

0

0

0

我们看到我们用4个特征表示这4个样本貌似不够紧致,在这里,我们可以用两个二进制位来表示他们:

z1

z2

0

1

1

1

0

0

1

0

这个过程,我们也可用通过自动编码器自我学习来实现。我们可以定义有4个单元的输入层,2个单元的隐藏层,以及4个单元的输出层(定义4个单元,是为了和输入层保持一致,因为之后解码过程需要对数据进行还原),经过6000次迭代后,我们得到了以下结果:

需要提一句的是,在有监督学习中,我们通过分类/回归的结果计算出误差,再通过误差反向传播去调节参数,这里我们没有标签,但是我们可以用输入数据自身去计算出解码后的误差,进而调节自身参数,优化模型。

深度聚类论文分析

序号

译文

原文

1

​基于网络架构的深度学习聚类研究​

A Survey of Clustering With Deep Learning From the Perspective of Network Architecture

2

用于聚类分析的无监督深度嵌入

Unsupervised Deep Embedding for Clustering Analysis

3

​自学成才的集群​

Self-taught Clustering

4

​面向k -means友好空间,同时进行深度学习和聚类​

Towards K-means-friendly spaces Simultaneous deep learning and clustering

参考文献

[1] Erxue. M , Xifeng. G , Qiang. L , et al. A Survey of Clustering With Deep Learning: From the Perspective of Network Architecture[J]. IEEE Access, 2018, PP:1-1.

[2] Xie. J , Girshick. R , Farhadi. A . Unsupervised Deep Embedding for Clustering Analysis[J]. Computer ence, 2015.

[3] Dai. W , Yang. Q , Xue. G. R , et al. Self-taught clustering[J]. 2008:200-207.

[4] Yang. B , Fu. X , Sidiropoulos. N. D , et al. Towards K-means-friendly Spaces: Simultaneous Deep Learning and Clustering[J]. 2016.

[5] 吴岸城. 神经网络与深度学习[M]. 电子工业出版社, 2016.

[6] 张宪超. 数据聚类[M]. 科学出版社, 2020.

[7] Aston. Z, et al. 动手学深度学习[M]. 人民邮电出版社, 2019.

[8] Tariq. R. python神经网络编程[M]. 人民邮电出版社, 2018.

[9] Giuseppe. B. python无监督学习[M]. 人民邮电出版社, 2020.

[10]西尔弗. 信号与噪声:大数据时代预测的科学与艺术[M]. 中信出版社, 2013.

[11] 迪达. 模式分类[M].机械工业出版社,2003.

[12] 模式识别、机器学习的区别, https://zhuanlan.zhihu.com/p/137058168

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux下mysql 8.0.27安装
下一篇:新消费下半场,中国品牌如何借助内容营销占据消费者心智!(消费商是全新的机会营销主义)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~