Clustering
选择适当的cluster,有比较empirical的方法。
最常用的方法K-means:
假设要把X分成K个clusters
找center,要K个clusters就需要K个center。可以随即找K个vector作为K个center。
然后重复以下的事情:
1)对training data每一个的x,判断他们属于1到K的哪个cluster,假设跟第i个cluster最接近的话,那么他就属于第i个cluster,binary就为1,反之为0.
2)接下来update cluster,假设要update第i个cluster,就把所有属于第i个cluster的object全部做取平均,然后就得到第i个cluster 的center。
clustering的第二个方法是HAC
1)先计算tree。 structure。文章有5个example,先两两计算相似度,挑最相似的pair出来。假设最相似的是第一个和第二个example,则把第一和第二个example merge起来(比如平均起来),则得到了新的vector,这代表了第一个和第二个example。
那么现在只剩下4个example了。再利用这四个example两两计算相似度。假设第三个和第四个最相似,再把他们merge起来。得到另外一个data,则现在就剩下三个data了:
再两两计算similarity,发现第一个和第二个最相似,则再把他们平均起来。
最后只剩红色和绿色了,再把他们平均起来,就得到了这个tree的root。这是一个根据相似度建立的tree structure。越早(root处)被分支的说明是越不像的。
2)给tree切一刀。
根据这一刀可以把example切成3个class:
如果切上一点,可以分成两个class:
如果往下切一点,可以切4个class:
Distributed Representation
cluster太粗糙,只能能约束object属于一个类,以偏概全了,还不够。
有些object跨了很多类,我们希望能够囊括它所有的类。可以用一个vector来概括一个object,这个vector能够概括它的特征,就叫做Distributed Representation,也叫作dimension reduction。
降维比如说将左边的3D摊平为2D,用2D就可以描述3D的infomation。
比如MNIST,大多数28x28的matrix完全组成不了digit,所以其实MNIST的digit可能不需要这么多维的信息。
比如可以用一维表示数字3的角度的变化。
最简单的办法是feature selection,比如发现data的feature集中在x2维,x1维不重要,则可以把x1维去掉。
还有一个方法是PCA
找一个W,使得它完成x到z的映射,z的维度比x低。假设考虑1维的case:
用w1代表W的第一个row,与x做inner product得到z1.
假设w1的2norm是1,x是高维空间中的一个点,w1是高维空间中的一个vector,z1是x在w1上的投影,投影的值是inner product。
那么w1怎么选?设左上角是x
可以两个方向的w1,这两个方向的w1,得到的结果截然不同:
我们希望z1的variance越大越好,而不是全部挤在一起
投影之后的分布可能在这个地方,就有比较大的varience
如果投影在这个地方的话,就比较小的varience:
我们就更倾向于将w1的方向指向右边那个方向(代表宝可梦的强度,同时影响了(防御力(纵轴)和攻击力(横轴)))。
如果用等式来描述的话,我们现在要maximize的对象是z1的varience。
我们可能不只是要1维:
那就再找一个w2,去确定z2。以此类推,把所有w找到,就得到W了。
这是一个orthogonal matrix,W中不同维度的w是相互正交的。那怎么找w1和w2呢?
拉格朗日乘子法
z1有了,那么z1的平均值有:
varience有
带回去有:
蓝色框起来的其实是Covarience协方差:
所以其实要找的是找一个w1去maximize这个式子。
协方差矩阵的半正定性质。
拉格朗日乘子法的推导:
发现w2也是covarience matrix S的eigenvector,对应的第二大的eigenvalue
我们得到:
PCA解耦
可以展开为: