5.24-unsupervised learning

无监督学习可以简单的分为“化繁为简”和“无中生有”两类。因为无监督只有img,没有label。
要么从这些img中提出出来共同的特征,也就是化繁为简,主要是clustering聚类和dimension reduction降维。
要么就是根据代码来生成这些img,也就是generation无中生有。
Clustering聚类
聚类理解起来很简单,如下,就是把一堆img分成不同的类别。难点是应该有几个类,这个是不确定的。聚类常用的方法是K-means和Hierarchical Agglomerative Clustering(HAC, 层次聚类)
——K-means聚类
1.首先有X个无标记的数据,需要分为K个类别。
2.先对K个类做initialize初始化,就是随机把训练数据分成K组,然后算每个类的中心,这个可以是随机指定的,K个类就有K个中心。
3.判断某个xn是否属于这个类ci,如果属于,就有一个与i和n有关的b,值为1,如果不属于,这个b值就为0。对每个x都计算。
4.重新计算类的中心c,这一步是更新。计算公式也很简单把属于这个C的x拿出来做平均,b在x不属于这个c的时候会为0,就剔除了不属于的项的计算。
5.重复3-4步,知道中心不再发生变化。
——HAC层次聚类
1.首先假如这里有5个数据,先两两之间算相似度,这里加入第一个和第二个之间最像,那么就取一个均值,然后拿这个均值与剩下3个之间再两两算相似度。假如这里最像的是最后两个,那么就给他们取一个均值,然后在进行计算,最后得到这样的一个tree树。
2.然后判断类别其实是像这样画线截断,也就是之前K-means的问题是不知道应该分成几个类,这里的问题是不知道应该把线画在哪里。比如下面画蓝的线,就有三类;画红的线,那就只有两类。

Dimension Reduction降维
如果只用聚类这样简单的给与目标唯一的属性是很以偏概全的,这里举了一个角色属性的例子,就是说应当用一个向量来描述该数据在各个类型上的属性值,所以也叫做distributed representation分布式表达。那如果今天是一个比较复杂的目标,比如image,进行分布式表达之后就相当于降维了。用人话说就是抓重点。如下图,手写数字是28*28的,但是其实很多像素点都与数字无关。比如下面这堆3,其实就是中间的3向左向右转了多少度,所以其实可以用3和度数这两个属性就描述了这个5个数据。
降维主要的方法有feature selection特征选择,和principal component analysis(PCA,主成分分析),这里主要讲PCA。
——PCA
1.z=Wx的意思是本来是x个维度,现在要变成z个维度,这个z就默认比x小了,这里假设x是2维的,z是1维的,找出W就可以实现2维降1维,也其实就是我们知道的投影,但是降维有一个原则是,需要找到可以保留最大差别度的那个投影方向,比如下面的蓝点就是x的分布,那么两个投影方向上其实有不一样的variance,这里应当选variance大的那个方向,公式计算就是下面Var(z1)这个式子。
2.如果是想投影到2维平面,则需要计算出一个z2,思路和z1是相似的,但是加了一个条件是w1·w2=0,也就是这两个正交的,然后把两个w合起来成W矩阵,这是一个orthogonal matrix正交矩阵。想投影到多少维就计算几个w即可。有一个很长的数学证明,证明每一次的投影,数据的方差都是最大的,跳过了没听。
   
3.这里是比较简单的PCA的讲解,以手写数字为例,先有一系列笔画当作basic component基本组成部分,然后任意一个数字就可以用这些基本组成部分表示了,如下x这个图是手写数字7,就可以表示成c和u的式子,相当于x这个图就降维成了c这个维度的表示了。如果有其他的图像就共用同一组basic component,然后就可以进行minimize error最小错误来作为loss函数,计算‘绿色矩阵和c矩阵的乘积’与黄色矩阵的相似程度计算,然后根据一个叫做SVD的方法可以把它等价成下面这个计算,此时K就是XXt的最大特征值对应的一组prthonomal eigen vector正交特征向量。(其实没听懂)
4.PCA也是有局限性的,因为是无监督的,所以加上标签之后可能会发现分的是错误的,然后就是线性上的效果会好,但是非线性就不太行。
然后讲了PCA在宝可梦分类上的实践,讲了MNIST上的手写数字辨识,和用在人脸识别上的PCA,然后提取了一下component看看,发现这些成分并不都是我们想象中的简单笔画或者五官,甚至出现一些很复杂的成分。这个是因为在PCA的公式这种,这里的权重a值是允许是负值的,也就是说PCA的过程可能是成分的组合,也可能是在复杂的图案上减除。如果权重是负值了,对应的w成分就不一定是图案的一部分了。
然后就出现了NMF,也就是人为规定权重值a和成分w是非负值non-negative,则组装过程就只能是叠加,成分只能是图案的一部分。下面对比展示一下含负值的成分和NMF的成分。就可以明显看出来,PCA都是几乎完整的脸,但是NMF中就差不多是五官这样的成分。

——Matrix Factorization矩阵分解
这个其实和PCA里面一些东西有共同之处,老师讲这个问题的时候举了一个很有趣的买手办的例子。如下图,ABC会分别喜欢右边的四位角色,内在的机理是因为喜欢角色对应的属性,但是事实这些属性factors是隐藏的latent,是获取不到的数据。能获取的数据只有下面的这个矩阵,这个矩阵的含义是A-E拥有的各个角色的手办数量,叫做X;假设现在有M个人(宅男,otaku),有N个动漫角色,潜在的性格属性有K个,这里的r就是属性值,r在人这边是指这个人喜欢什么属性,r在角色那边是指这个角色拥有什么属性,这些r是未知的。
现在做一个假设,假设Matrix X里面的值,是两个r的乘积,比如A买了5个春日的手办,是因为rA·r1的值很大,所以他买的多。那么这样的话,将M个宅男的r写成一个矩阵(图里应该是M行,写错了),将N个角色的r写成一个矩阵,这两个矩阵的乘积就可以去minimize error最小误差近似我们已知的矩阵,也就是买手办数量的矩阵。反过来看,因为X矩阵才是已知的,r反而是未知的,所以相当于吧X矩阵拆成了两个矩阵。然后用SVD的方法做就可以计算了。
  
但是在实际情况中,X矩阵的数据会有一些缺失,比如下面?处,他不买可能是因为这个地区没有发售,这个?不能取0,因为不能确定发售之后他是不是真的不买。这个时候SVD没用了,但是也能做,用梯度下降做,定义如下的loss函数,然后只用确定已知的值来算,?的地方不算了,然后就硬train得到各个属性值r。
因为这里举例子只用了傲娇和天然呆这两个属性,也就是上面的K是2。下面是算出来的r结果。这里没有写表头,比如A在傲娇这个属性的r值是很大的,那么他就更可能买傲娇属性的春日手办。并且可以用这个r来算出前面的?值。
这个其实可以做的更精确,比如下面加上了两个bias,分别是‘这个人是否喜欢买手办’和‘角色的人气’,由此可以写出新的loss函数。甚至可以加上regularization正则化,让宅男只喜欢一个属性,萌傲娇就不萌天然呆。
      
然后呢是一个矩阵分解在主题分析中的拓展应用,这个是文字领域了,在这个领域叫做潜在语义分析LSA,内核还是矩阵分解,只是把角色换成了文件,人物换成了词汇,从宅男喜欢买什么手办-分析出宅男萌什么属性,换成了词汇出现在哪些文章-代表这个词汇属于什么主题。但是这里的X矩阵中的数字是term frequency,并不是词汇出现的频率,而是加权逆文档频率,大概就是像‘的’这种每个文件都出现的词汇反而不重要,反而只在某一个文章中出现的词汇,权重是大的。最后分析出来的词汇背后的潜在主题可能有财经、政治等。
主题分析的方法很多,思路都差不多是这个,下面列了两个其他的方法,PLSA和LDA。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值