Unsupervised Learning - Linear Model
无监督学习我们大致分为2种情况,聚类和无中生有化繁为简,比如呢,我们有许多个树的图片,我们经过函数输出为一个结果,另一种是我们已知一个数据code,根据不同的code输入,通过函数实现输出不同的图片
聚类很容易理解,比如我们有猫狗鸟3种图片,通过分析相似性,将图片分为K种,但问题常常就是K取多少,比如我们有9个图片,我们分9种和分1种都是没有任何意义的。
聚类常用的方法之一是K-means。具体是我们有N个样本,随机抽取K个样本作为聚类的中心,然后对于每个样本,分别对K个中心算距离,最近的b就定义为1,其余都为0,就相当于给每个数据做了临时分类,然后我们就可以更新这K个中心,通过公式,如此反复。我们最初始的K各中心之所以要从数据中取是为了防止中心离哪个都不近,无法收敛
聚类的第二种方法是HAC层状团簇,我们第一步是将数据建立树结构,将比较相近维度数据上面建立一个上级节点,直到连上根节点,以下图为例,我们开始5个样本,1,2比较接近就将1,2组合,4,5比较接近然后把4,5组合,1,2共同和3比较接近。于是又产生绿的节点,最终到根节点
我们HAC第二步就是将树结构切开,如图中所示的来一刀,我们聚类就有3个分类,不同位置就有不同的类别数量,我们K-means有时候不好决定分类的K数量,我们可以通过HAC来决定从什么位置来切,来实现分类数量的决定
Distributed Representation分布表现,聚类的结果往往是一个对象必须属于哪一类,而我们实际分类往往是考虑分布的,比如小杰是强化型,但是接近放出系,而强化系又和变化系相邻,我们就有了小杰的系别分布。最终实现将一个高纬度数据(比如图片等)通过降维转换成低维度的分布表象。
维度下降为什么会对分类有帮助呢,比如下图中的像地毯卷起来维度三维图形,我们完全可以将其展开分析其2维分布
我们举另一个例子,比如手写数字MNIST,我们的图片都是28*28维度的数据,然而分类结果我们最激活的图片可能是个灰白雪花图,其实我们往往用不到28*28这么多的维度来表示一个数字9,再极端一点,我们的3数字,可能只是一维上的变动,如图中的旋转了个角度而已,这跟我们上堂课说的杨过剪樊一翁胡子异曲同工。
降维的核心思想是找到一个函数使x经过后变成向量z,z的维度比x要小。
我们实现降维维度第一个方法就是特征选择,比如我们将数据按照某一个维度做视图,发现其特征几乎无变化(那么这个特征很可能就是无关的,可以去掉),然而有时候我们往往任何特征都不能拿掉,否则可能过拟合
另一种方法就是Principle component analysis(PCA)主成分分析,我们假设z,x为线性关系,我们就能将z通过矩阵W乘以x得到。
PCA具体怎么做的呢,我们知道z=Wx,我们考虑z的第一行,根据矩阵的关系,是W的第一行和x相乘得到的结果,而且是个数字,反应在向量层面就是x向量在w1上的投影,我们看右上角的图,我们有一组分布,我们可以选择z轴,使得z方向上的样本方差最大,换一个近乎垂直的方向,方差就会很小,我们就是需要找到这么一个W1,使得z1方向的方差最大,而且w1的模是1.
我们考虑完w1就去考虑第二行w2,w2当然也是要求方差最大,而且模是1,但是如果就这样,那可能得出的结果就是w1了,所以我们要求w1,w2的点乘是0,即2者正交。最后形成的矩阵W就是个正交阵
我们怎么求出w呢,下图就是Math Warning,需要数学推导的,但是看上去其实不难理解,我们求方差最大,可以将矩阵乘积拆分,利用1*1的矩阵转置等于自身,可以得出和w1,x的协方差阵的关系,所以我们就是要求w1TSw1最大同时w1的模是1的向量
我们要使方差最大,最终结论就是w1是协方差阵S的特征向量,而且是特征值最大的特征向量,具体怎么推导呢,我们可以看图中的式子,我们定义g函数,对每个w求偏微分使其=0,可得我们要求的最大式子就是,而其最大就是时。
我们同理可以得出w2是协方差阵S的特征向量,而且是对应特征值第二大的特征向量
我们做PCA可以使均方差最大,可以使特征间正交,这样就减少了参数量,降低了过拟合几率,我们最后就可以推导出Cov(z)其实是个对角线元都是S前K个特征值的矩阵(其余元素是0)
我们以另一种角度来理解PCA,比如我们手写数字有一些基本元素组成,像7就是u1,u3,u5构成,一般的,对于一个输入向量x,我们可以将其写成权重×元素的累加再加上输入的均值,元素与元素之间是相对独立的(正交)
我们为了将与最接近,我们其实把z=Wx的的带入就可以使偏差最小,证明可以参考bishop
我们可以考虑x的每一个维度,写出如下式子,我们为了使距离最小,就等价于最优化矩阵的乘积和左侧的距离
我们求左右最接近,就可以将右侧SVD奇异值分解,U就是协方差阵的特征向量
我们把PCA可以看做类似一个隐层的神经网络(没有激活函数,模型线性,而且其是Autoencoder,即实现了自动编码),比如w1-wk是u1-uk的向量组,我们追求趋近于,最后,比如K=2时,我们就有图左下的关系,这种构型就是一种自动解码器模型。
我们用神经网络可以得到的w各分量间是正交的,但是如果通过梯度下降求得的w却不一定能保证正交,即不能保证从第一分量开始就去除最大分散。
我们下面说说PCA的弱点,他是无监督的,所以我们对数据找最大方差方向可能会把不同标签数据融合到一起,LDA可以解决(但LDA是有监督的),而且由于PCA是线性的,如图中打的把S曲面分布的拿来分布,我们就会得到一个压扁的图形,很多颜色就混在了一起
老师又拿宝可梦来说PCA了,宝可梦有6种属性,根据PCA我们需要决定舍弃部分,只是用部分向量,怎么取呢,我们可以计算出每个向量的特征值,因为特征值反应的是特征在这个维度的方差大小,我们算出比率,看图中的后2个比率小,这证明这个维度向变化时,对输出影响很小,我们就会考虑舍弃后两个
我们给每个参数一个权重,我们就可以看出第一个宝可梦是各属性正相关的,而第二个是防御正速度负,是牺牲速度增加防御的
三只就是特防牺牲攻击和生命,第四就是生命比较强,攻击防御都很弱的
又如手写数字,我们把图片特征分解,正常是784维向量,我们取PCA前30个,每个图像分别得到如下图,即通过这30个的线性组合,我们可得到0-9的数字图像
又如人脸识别,我们可以取PCA前30个向量,他们每个向量如下,我们会觉得,哎?是不是每个图都有点像人脸,可是数字却看不懂
这是为什么呢,这是因为我们每张图引用向量的权重可以是负值,比如图片9得到8,就可能去掉一个竖然后再加一个圈,或者是从一个复杂的图形开始通过去掉一些元素就可能得到我们要的东西,这就解释了我们手写数字的元素图片看不懂。
当然我们也有NMF的方法,是使我们的系数都是正的,即都通过向量正叠加,而且w1,w2...等等的参数都是正的(PCA出来往往不一定)
我们用NMF后每个分量就有点像笔画一样,人脸识别那里就像每个脸的一部分一样
我们讲一下矩阵分解,比如A,B,C,D,E每个人都买了动漫的公仔,数据中就能看出买了第三种公仔打的往往也会买第四个公仔,背后有一定的关系
我们把A,B,C3人每个人的性格分析下,就有各自偏向傲娇和天然呆的向量,公仔性格也有对应得向量,所以当他们的内积比较大的时候,他们往往会选择买这个公仔,然而实际情况我们并不知道每个人内心都是性格,往往也不知道公仔的性格取向,唯一知道的就是他们的购买关系数据
购买公仔的数据表格形成了矩阵Matrix X,这个矩阵的行是御宅族的个数,列是公仔的种类,我们假设潜在相关的因素数量是K,那我们就可以写成M*K的矩阵(图中误写成N)和K*N的矩阵的乘积,结果就得到了矩阵X,现在就是我们已知了X,求右侧2个矩阵的过程,可以用SVD分解,因为中间有个方阵,我们可以选择把它乘到左边或者右边
我们有的时候数据却可能是不全的,我们直接将其定义成0做SVD的话,感觉也很不负责任,于是我们就想到了一个损失函数,通过梯度下降求解,ri是每个购买者的向量,rj是每个公仔的向量,nij是表格交点购买数量,我们计算后求和(其中包含空内容的项不去计算)
我们假设有2个相关因素,我们就可以将A-E分析出数据,感觉A,B是一类的,C-E是一类的,按公仔来说,前两个是一类的,后两个是1类的,于是我们就可以根据得到的矩阵,求出原来问号的地方的数值,就是对应位置的内积,于是我们就有了表格深蓝色的预测,就会分别推荐这些人买近似数量的公仔,其实这就是推荐系统的一种算法实现
我们直接用ri*rj去得到aij往往是不准确的,一般需要引入偏置,比如引入了bA就是人A他有多喜欢买公仔,b1就是这个公仔有多受欢迎等等,因此我们额度损失函数也引入了偏差,我们就可以通过梯度下降求解损失函数
为了某些需要我们可以加入正则项,比如我们要求A只喜欢哪一个公仔可以引入L1正则
矩阵分解还可以做文章分类,如下表格,每个文档谈及不同领域的次数,这个次数是根据weighted by inverse document frequency来决定的,(比如一个词在好几个文章都大量出现,那他的权值就比较低,如果这个词仅在这个文章出现,而且出现概率高,他的权值就高),我们分析出的隐藏因素就比如说财经,政治等等。除了LSA还有PLSA,LDA等等,文档已经列出,请自行查阅= =
最后老师又列举了一些PCA的衍生方法,听着的确云里雾绕的,还是需要动手实践来做一做