隐马尔可夫模型包含观测,状态和相应的转移,具体的记号不在给出。只给出其性质:其中i是状态而o是观测:
HMM可以用来标注,这个时候状态就是标记。标注问题是给定观测的序列,预测对应的标记序列。 HMM的一个比较易懂的例题在P195。 HMM的具体问题在下面三个章节分别讲述。
这里解决的问题是,给定模型和观测序列,计算在这个模型下观测序列出现的概率。 暴力的话,方法如下: a是状态转移概率,是初始状态的概率,b是给定的状态下得到相应观测的概率。
但是这里有很多这样的状态,随着时间T跳转,计算量是的,因为每次求和是的,然后给定时间,每一个时刻可以选择个状态里面的一个。 这个时间复杂度太高了,想办法改进,使用前向-后向算法。
前向算法中,定义前向概率: 注意,这里的前向概率都是已经看到了、给出来的,而不是排列的那种t!种可能性然后都算一次的东西。以及,这里就单纯是,在已经观测得的内容里,t时刻的状态是第i个状态这个意思。 因此有了前向算法:
(2)式琢磨一下,也可以很容易推出来。(3)式想到的意义,也就是对已经观测到的O,最后一个状态是什么都有可能,所以从1到N累加。时间复杂度为,因为每个给定的时间t的某个节点都会看前面N个节点,当前层又有N个节点,一共T层。 前向算法的例子在课本P200。
后向算法中和前向算法相反,定义后向概率: 就是在t时刻的第i个状态,会让它后面发生这样的观测的概率。
有了前向概率和后向概率,可以得到一些公式:
上面一节是给定了参数,跑预测用的。我们可能更希望有方法估计参数。 可以直接用极大似然估计,但是这样的估计需要大量标注,下面介绍无监督学习的算法,称为Baum-Welch算法。 课本这里一笔带过了,推导估计也不是很简单的事情,这里就贴个结论吧。
预测算法中,有两个算法可以估计中间某个状态的概率。 在近似算法中,
这个公式来自10.2节里面的P202公式。但是里面的状态序列未必会全部发生。
维特比算法是一种dp的思路,
这里的是当前从0看到t时刻的观测下(t-1和从前的时刻也是已知的)t时刻有最大概率的状态,而记录了从哪里跳到这个在看的i节点。换句话说,负责找到最大的概率,而负责找到这个概率对应的位置。注意,这里差一个。 例子见课本P210。
概率无向图模型也叫马尔可夫随机场。 这一节都是一些定义的内容,知道就可以了。
这三个性质等价。 对于联合分布,如果满足三个之中的一个,就是概率无向图模型。 对于概率无向图模型,可以进行因子分解,也就是团。团就是离散数学里面的,里面各个节点两两连接。当无向图里面的团C不能再加入G的其他节点使之变大,那么这个团C称为最大团。 有了最大团,联合概率分布可以写成所有最大团的乘积,也就是,其中Z是归一化因子,即,让这个式子变成一个概率分布。这里的叫做势函数,通常定义为。
一般的CRF,满足,是和v相连的节点w。 定义里面不要求X和Y有相同结构,不过一般都使用相同结构的X和Y。 在课本中,使用线性链CRF,也就是只有相邻的和是相连的。公式上,也就是:,而且在两侧只考虑单边,图:
线性链CRF的参数化形式如下:
课本的例子在P220。 线性链CRF可以用简化形式或者矩阵形式表示。 CRF中,表示在观测序列x下,标记序列为y的条件概率。 这里写出矩阵形式的公式,简化形式看课本吧。 ,其中的规范化因子所有矩阵乘积的元素。 矩阵形式下的例子在课本P224,较易看懂。
这里解决的是给定CRF,输入序列x和输出序列y,计算各个位置的条件概率和期望。可以使用前向-后向算法。 前向向量:初始化: 递推: 也有后向概率:初始化: 递推: 同样的,这里的概率公式和期望值都可以算出来,在课本P225。这里不再给出。
这个东西我不想看。
使用的是维特比算法。
例子在P234。 这里的特征函数就是t和算一次加权,s和算一次加权,具体的特征函数式子在上面。这里的start只是一个记号,并不需要管是什么。也就是,这个维特比算法是在让i增加的过程中跑出最后的结果。
聚类的核心是相似度。就像第三章里面说的,可以使用闵可夫斯基距离,找到合适的p值就可以。不过还有另外的一些指标:
聚类有硬聚类和软聚类之分,其中硬聚类就是每个样本只能有一个类,软聚类反之。课本只介绍了硬聚类。 对所有点,其中的一个子集G,如果任意两个样本和都有成立,T是给定的正数,那么G就是一个类或者簇。 对于类(一堆样本)这个尺度,还有一些别的性质:
然后对于类之间,还有另外的一些定义(比较好理解):
也就是对某一个层次聚类,然后合并或者继续分裂。 聚合聚类算法:
这里的距离矩阵D是一个对称矩阵,而且对角线上元素为0。 这个过程完全就是遍历贪心,课本例子很直观。
这里的聚类事实上是一种划分,即不重不漏的分类。可以用一个函数来建模这个关系,即。i是样本index,l是类别index。 k-means方法使用的损失函数是各个类到类中心的l2距离之和。算法为:
课本的例子很容易理解。
k-means的特点:
终于到了这个耳熟能详但是又不会用的东西了。
对实矩阵的SVD,就是对一个矩阵进行因子分解,其中A的形状是(m, n):,V是n阶正交矩阵,是降序排列的非负的对角线元素组成的(m, n)形状的矩形对角矩阵,这里的各个矩阵满足如下性质:
这里的称为矩阵A的奇异值,U的列向量叫左奇异向量,V的列向量叫右奇异向量。而且SVD不要求A是方阵。注意这里的并不一定要填满p这么多个对角元素,后面几个元素是0也可以的。
不过一般常用的是紧奇异值分解和截断奇异值分解,其中紧奇异值分解和原来的SVD(又称完全奇异值分解)等价,而截断SVD比原始矩阵低秩。SVD的提出就是为了对矩阵进行压缩,其中截断SVD就是有损压缩。
紧奇异值分解的矩阵可以比完全SVD更小,紧的SVD的矩阵大小是和待分解矩阵的秩相关的。对于矩阵A,,那么有,其中的形状是(m, r),的形状是(n, r),是r阶方阵,其中是完全SVD的前r列的列向量组成的,同理,是前r个元素组成的对角阵。其中。
截断奇异值分解和紧奇异值分解类似,不过会让,其中。这里的k也是取定的,的取法也是类似的。
SVD的几何解释也是有意义的。对于一个给定的矩阵A,形状是(m, n),可以考虑变换,这里是一个到的空间映射,这一个映射可以分解成三个步骤,对应SVD的三个矩阵:一个坐标系的旋转或反射变换、一个坐标轴的缩放变换和另一个坐标系的旋转或反射变换。 在SVD中,U和V都是正交矩阵,那么V的列向量构成了空间里的一组正交基,U同理。所以这里都表示旋转或反射变换。对于,是一组非负实数,表示各个轴上的缩放变换。 SVD的几何解释可以对标准正交基进行变换看效果,课本的例子比较直观。 而且SVD直觉上,感觉像对A做行变换之后得到的奇异值对角阵,因为这两个东西秩相等。
SVD还有一些相关的性质:
SVD的求法看起来比较机械化。步骤为:
课本有一个SVD的计算,把那个掌握了之后应该就会计算SVD了。不过这里的SVD计算是理论上的,工程上的计算并不是这样算的。课本没给出来。
矩阵的F范数就是各个位置平方,然后全局求和后取开方。这里有一个引理,对于A和他的各个奇异值,有: 课本这里给出了两个相关的定理,证明了在把秩压缩之后存在F范数意义下的最有近似矩阵,证明较长。
对于SVD,把写到列向量里面,也就是,然后把按行向量写成 那么就有,如果A的秩=n,那么这个式子也可以表示为,通过控制n值来降秩,达到近似效果,课本有例题。
数据的变量(特征)之间存在相关性会带来难度,PCA用了少数不相关的变量来代替这些变量。PCA先把数据在原来的各个轴上规范化处理,然后对原来的坐标轴做旋转变换,其中第一坐标轴是方差最大的方向,其余坐标轴方差逐渐变小(当然也是找最大,不过和前面的方向相比更小)。
PCA的定义:对于m维的随机变量,均值向量,协方差矩阵,这里的方差。考虑一个对x的线性变换,即:。如果这个线性变换满足一定的要求,就是PCA。这些要求是:
课本这里给出了一个定理和一种求PCA的方法,对于协方差矩阵,拿到它的特征值,对应的单位特征向量是,那么x的第k主成分就是, 这个第k主成分的方差是,也就是协方差矩阵的第k个特征值。
根据这个定理,有一个推论可以判断一个和x同维(当然也可以不同维,同维的时候叫总体主成分)的随机变量是不是x的主成分,也就是从1到m分别是第一主成分到第m主成分:
对总体主成分y,有一些性质:
那么怎么定主成分个数k?课本给出了两个定理,不管了。直接看到指标,方差贡献率定义为,也就是第k个成分和其他方差之和的比;k个主成分的累计方差贡献率定义为,累计方差贡献率反映了主成分保留信息的比例,但不能反映对某个原有的维度保留信息的比例,这个时候定义一个专门第k个主成分对原有变量的贡献率,即。一般可以考虑累计方差贡献率达到一定程度的前k个主成分,比如70%。
一般PCA还会在用之前对各个维度做归一化,然后总体主成分的性质就会更好一点,变成:(懒得打了)
前面说的总体PCA是对所有样本的,一般来说没有这么大量的数据,就做n次独立观测得到样本\bm{x}i,样本均值向量\bar{\bm{x}} = \frac{1}{n}\sum\limits{j=1}^n \bm{x}j,样本协方差矩阵S=[s{ij}]{m \times m}\ where\ s{ij} = \frac{1}{n-1}\sum\limits_{k=1}^n (x_{ik} - \bar{x}i)(x{jk} - \bar{x}j)。考虑回线性变换,这里的和上面总体的不一样,这里是对总体里面的各个维度做线性变换,而这里是直接对各个样本做线性变换,即\bm{y}i = a_i^T \bm{x} = a{1i}\bm{x_1} + a{2i}\bm{x_2} + … + a_{mi}\bm{x_m},那么这里的的样本均值\bar{y}i = \frac{1}{n}\sum\limits{j=1}^n a_i^T \bm{x}_j = a_i^T \bar{\bm{x}},样本方差var(y_i) = a_i^T S a_i,cov(y_i, y_k) = a_i^T S a_k。样本主成分的定义类似,不再给出。
PCA有两种方法,传统方法使用相关矩阵的特征值分解算法,现在常用数据矩阵的奇异值分解算法。
在传统方法中,步骤为:
课本的例题把这个过程走了一遍。
数据矩阵的奇异值分解算法中,