第7章无监督学习

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第7章无监督学习7.1无监督学习简介7.2K均值聚类7.3自编码网络7.1无监督学习简介•无监督学习:对仅有数据本身而没有标签属性的数据进行训练、学习。•对于无监督学习而言,由于输入数据没有标签,所以在学习训练时无法获取正确的标签信息,在模型构建、正确率等方面和监督学习都是不一样的,主要的模型为:聚类模型自编码网络模型•7.1.1聚类模型•聚类的思想:对于未指定明确的分类的数据,通过其本身呈现出的集群的结构,使用若干个通常是不相交的子集对样本数据进行划分,每个子集称之为“簇”(Cluster)。通过这样的划分,每个簇可能对应着一些潜在的类别。•基于不同的学习策略,人们设计出了多种类型的聚类算法,主要包括原型聚类、密度聚类和层次聚类。原型聚类算法:假设数据的聚类结构能通过一组原型进行刻画,然后对原型进行不断的迭代更新而获取到数据的聚集、分类。主要的原型聚类算法包括了k均值算法(k-means)、学习向量量化(LVQ)以及高斯混合聚类。密度聚类算法:假设数据的聚类结构能通过样本分布的紧密程度确定。最著名的的密度聚类算法就是DBSCAN算法。层次聚类算法:假设数据的聚类结构能够通过数据的分层来进行确定。最著名的层次聚类算法就是AGNES算法。7.1无监督学习简介•7.1.2自编码网络模型•自编码网络:利用信息论中对信息进行“编码-解码”原理。通过对信息进行“编码-解码”,可以对原信息进行恢复重建,而且编码后的信息虽然在形式上与原信息不同,但有效地保留了原信息的内容。•在自编码网络模型中,一般都通过构建多层神经网络来实现。将原信息作为神经网络模型的输入,通过神经网络中间层的处理对原信息进行“编码-解码”过程,形成神经网络的输出。7.1无监督学习简介7.2K均值聚类•K均值算法(K-means算法)是一种常用的聚类算法。给定的样本集D,对其进行划分为K的簇类,使得所有的簇划分C满足最小化平方误差的过程,即计算每个样本点与其所属质心的距离的误差平方和最小化的过程,计算公式为:•主要计算过程可以分为如下几步:•(1)对于给定的数据样本D,任意选择其中的K个点作为初始质心;•(2)将每个点分配到距离最近的质心,形成K个簇;•(3)对于完成分配的K个簇,再次重新计算每个簇的质心;•(4)重复步骤(2),再次将每个点分配到新的最近的簇的质心;•(5)不断迭代步骤(2)、(3),直到簇不发生变化或达到最大迭代次数为止。7.2.1K均值聚类算法简介•7.2.2K均值实践使用K均值算法来对MNIST的训练集中图片进行类型标注,最后与训练集中的正确标签进行对比。1.加载数据加载数据时,我们在无监督学习中,进行训练的样本仅仅是MNIST训练集中的图片数据,而不使用MINST训练集中的标识数据。•mnist=input_data.read_data_sets(‘data/’,one_hot=True)•X=mnist.train.images7.2K均值聚类•7.2.2K均值实践•2.实现K均值算法•K均值算法是一个循环迭代的过程,重点注意的是明确K值、初始质心、计算距离、更新质心:K值:最终样本数据的分类数量。MNIST数据的分类值为10。初始质心:在样本数据的边界内通过随机选取:start_pos=tf.Variable(X[np.random.randint(X.shape[0],size=k),:],dtype=tf.float32)centroids=tf.Variable(start_pos.initialized_value(),'S',dtype=tf.float32)簇分配:对于每个点计算该点到所有簇心的距离,然后使用tf.argmin()方法获取距离最小的簇心作为该点所有区域的簇心,划分到该簇。更新质心:完成簇的划分后,对于该簇能所有的样本数据使用方法求和、求平均值,获得簇的新质心。tf.unsorted_segment_sum()7.2K均值聚类•3.数据训练使用参数的数据进行训练,并输入其结果•4.评估模型使用K均值训练后,样本数据被划分到了10个簇中。对每一个簇内数据,我们获取其对应的正确标记,统计每一个簇内数据正确标识前三的情况。7.2K均值聚类•7.2.2K均值实践K均值划分的簇类,和真实的标记值之间存在误差:第一行按照K均值划分的簇中,其真实标识为“4”的样本有2885个、标识为“9”的样本2670个。这个簇内的数据不是很统一;第六行的簇而言,有真实标识为“0”的样本2588个、标识为“6”的样本90个。这个簇内的数据就比较统一。7.3自编码网络•1.自编码器•自编码器就是一个试图还原其原始输入的系统,,它由编码器(Encoder)和解码器(Decoder)两部分组成模型如下:•编码器将输入信号x变换成编码信号y,在由解码器将编码y转换成输出信号的过程:7.3.1自编码网络简介7.3自编码网络•2.自编码神经网络•自编码神经网络就是使用神经网络模型将输入样本编码到隐藏层,然后从隐藏层中解码到输出层进行样本重建的过程,模型如下图所示。•输入层数据x转换到隐藏层h,再转换到输出层y。整个过程可以表示为:7.3.1自编码网络简介•7.3.2自编码网络实践使用自编码神经网络来对MNIST的训练集中图片进行类型标注。1.加载数据加载数据时,我们在无监督学习中,进行训练的样本仅仅是MNIST训练集中的图片数据,而不使用MINST训练集中的标识数据。•mnist=input_data.read_data_sets(‘data/’,one_hot=True)•X=mnist.train.images7.3自编码网络•7.3.2自编码网络实践•2.自编码网络构建•通过隐藏层1和隐藏层2对输入数据进行编码和解码:•#编码函数•defencoder(x):•layer1=tf.nn.sigmoid(tf.add(tf.matmul(x,weights[‘encoder_h1’]),biases[‘encoder_b1’]))•layer2=tf.nn.sigmoid(tf.add(tf.matmul(layer1,weights[‘encoder_h2’]),biases[‘encoder_b2’]))•returnlayer2•#解码函数•defdecoder(x):•layer1=tf.nn.sigmoid(tf.add(tf.matmul(x,weights[‘decoder_h1’]),biases[‘decoder_b1’]))•layer2=tf.nn.sigmoid(tf.add(tf.matmul(layer1,weights[‘decoder_h2’]),biases[‘decoder_b2’]))•returnlayer2•#构建模型•encoder_op=encoder(x_)•decoder_op=decoder(encoder_op)7.3自编码网络•3.数据训练使用参数的数据进行训练,并输入其结果•4.评估模型从MNIST的测试集中选择10张图片,分别绘制原始图片和经过训练后的自编码神经网络的输出图片,进行对比。7.3自编码网络•7.3.2自编码网络实践

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功