8.2-无监督学习-线性降维


8.2-无监督学习-线性降维

文章插图
我把 分为两种,一种做的事情叫做“化繁为简”,它可以分为两种:一种是,一种是。所谓的“化繁为简”的意思:现在有很多种不同的input,比如说:你现在找一个,它可以input看起来像树的东西,都是抽象的树,把本来比较复杂的input变成比较简单的 。那在做 的时候,你只会有的其中一边 。比如说:我们要找一个要把所有的树都变成抽象的树,但是你所拥有的train data就只有一大堆的image(各种不同的image),你不知道它的应该是要长什么样子 。
那另外一个 可以做,也就是无中生有,我们要找一个,你随机给这个一个input(输入一个数字1,然后一棵树;输入数字2,然后另外一棵树) 。在这个task里面你要找一个可以画图的,你只有这个的,但是你没有这个的input 。你这只有一大堆的image,但是你不知道要输入什么样的code才会得到这些image 。这张投影片我们先focus在 这件事上,而且我们只focus在上 。
一、聚类
那我们现在来说,什么是呢?就是说:假设有一大堆的image,然后你就把它们分成一类一类的 。之后你就可以说:这边所有的image都属于,这边都属于,这边都属于 。有些不同的image用同一个来表示,就可以做到“化繁为简”这件事 。那这边的问题是:要到底有几个,这个没有好的方法,就跟 要有几层一样 。但是你不能太多,这张有9张image,就有9个 ,这样做跟没做是一样的 。把全部的image放在一个里,这跟没做是一样的 。要怎样选择适当的,这个你要的来决定它
K-means
那在方法里面,最常用的叫做k-means 。我们有一大堆的data,他们都是(x1,…xNx1,…xN),一个xx就代表一张image ,我们要把它做成K个 。怎样做呢?我们要先找这些的 。(假设这边xx的用来表示的话,这边的也都是一样长度的)有K个就需要有K个 。那初始的咋样来呢,你可以从你的train data里面随机找K个xx出来,就是你的k个 。
接下里,你要对所有在train data 中的xx,都做以下的事情:你决定说,现在的每一个xx属于1到K中的哪一个 。现在假设xx跟第i个class 最接近的话,那xx就属于c^ici,那我们用一个 value(上标n,下标i)b^来代表说第n个xx有没有属于第i个class,如果第n个x属于第i个class的话,它的value就是1,反之就是0.接下来,你要你的,方法也是很直觉的(假设你要第i个 ,你就把所有属于第i个的x通通拿出来做平均,你就得到第i个的,然后你要反复的做)
只所以在 的时候,你会想到直接从你的里面去挑K个xx做,有一个很重要的原因是假设你是纯粹随机的(不是从里面挑的),你很有可能在第一次这个xx的时候,就没有任何一个x和某一个很像,或者某个没有一个xx,
然后你的时候纯粹就是无用功,所以最好从里面选取K个xx作为。
层次聚类()
那有另外一种方法叫做(HAC)(层级聚合聚类),那这个方法是先建一个tree 。假设你现在有5个,你想要把它做,那你先做一个tree ,咋样来建这个tree 呢?你把这5个两两去算它的相似度,然后挑最相似的那个pair出来 。假设最相似的那个pair是第一个和第二个 merge起来再平均,得到一个新的,这个代表第一个和第二个 。现在只剩下四笔data了,然后两两再算相似度,发现说最后两笔是最像的,再把他们merge 起来 。得到另外一笔data 。现在只剩下三笔data了,然后两两算他们的,发现黄色这个和中间这个最像,然后再把他们平均起来,最后发现只剩红色跟绿色,在把它们平均起来,得到这个tree 的root 。你就根据这五笔data他们之间的相似度,就建立出一个tree ,这只是建立一个tree ,这个tree 告诉我们说:哪些是比较像的 。比较早分枝代表比较不像的 。