聚类分析将数据划分成有意义的簇,如果目标是划分成有意义的组,则簇应当捕获数据的自然结构。 聚类的目的可以分为2类:
旨在理解的聚类。比如生物学,信息检索,气候模式,心理学和医学,商业等。
旨在实用的聚类。旨在汇总数据,压缩数据,有效地发现最近邻。
聚类分析将数据划分成有意义的簇,如果目标是划分成有意义的组,则簇应当捕获数据的自然结构。 聚类的目的可以分为2类:
旨在理解的聚类。比如生物学,信息检索,气候模式,心理学和医学,商业等。
旨在实用的聚类。旨在汇总数据,压缩数据,有效地发现最近邻。
关联分析是一种发现隐藏在大型数据集中有意义的数据联系的方法。所发现的联系可以用关联规则或者频繁项集的形式表示,比如以下规则: \[\{nappy\}\rightarrow\{beer\}\] 该规则表明尿布和啤酒的销售之间存在很强的联系,因为许多购买尿布的顾客也买啤酒。
分类任务就是通过学习得到一个目标函数(target function)\(f\),把每个属性集\(x\)映射到一个预先定义的类标号\(y\)。 分类和回归的区别之处就是类标号是否是离散的。回归的目标属性\(y\)是连续的。 分类的一般方法有决策树,基于规则的分类,神经网络,支持向量机和朴素贝叶斯算法。
(改动中-2014年1月24日)
先给出一般EM算法的问题定义。 给定一个训练集\(X=\{x^{\{1\}},\ldots,x^{\{m\}}\}\)。根据模型的假设,我们希望能够通过这些数据来估计参数\(\theta\),但是每个我们观察到的\(x^{i}\) 还受着一个我们观察不到的隐含变量\(z^{i}\)(也是\(\theta\)生成的)控制,我们记\(Z=\{z^{\{1\}},\ldots,z^{\{m\}}\}\), 整个模型\(p(X,Z|\theta)\)是个关于变量\(X,Z\)的联合分布。
我们通过求最大似然\(L(\theta|X)\)来估计\(\theta\)的值。
\[ \theta=\arg\max_{\theta} L(\theta|X)\]
其中
\[ L(\theta|X)=\ln p(X|\theta)=\ln \sum_{Z}{p(X,Z|\theta)}\]
这里要注意\(p(X|\theta)\)是一个边缘分布,需要通过聚合\(Z\)得到。由于右边的式子在对数函数中又存在加和,所以我们直接对似然求导是没办法得到\(\theta\)的。
这里EM算法可以比较好地解决这个问题。对于EM的一般算法,有从期望的角度解释,用Jensen不等式证明正确性的方法(见参考2)。这里我讲的是另一种从相对熵角度解释,来自PRML的方法。这两种方法各有特定,对比如下:
使用期望的角度来讲,可以地了解EM算法是如何绕过未知\(Z\)下难以计算的问题,即通过最大化它的期望。但是对E和M步如何逼近极大似然的过程,需要对Jensen不等式和单调逼近\(\theta\)最优值过程的理解。
使用相对熵角度解释,可以看清似然函数和它的下界函的迭代增长过程。但是对\(Q(Z)\)和KL散度的引入,以及为什么要最大化下界函数这一点讲的不是很明白(个人看法)。2013年9月25日更新:这里应该是设一个分布Q(z)来近似P(Z),KL散度描述了这两个分布之间的差异,这里只是没有提到下界函数刚好是似然关于后验概率的期望,要求的是下界函数也就是期望的最大值。
这周主要学习了高斯混合模型以及EM算法的经典应用。Gaussian Mixture Model (GMM)即可以用于聚类,也可以用于估计概率密度函数。假设我们有一个训练集\(x^{(1)},\ldots,x^{(m)}\), 这训练集是无监督的,所以没有分类标签。
首先,这里先给出二叉树的节点定义以及递归的二叉树先序遍历:
|
|
下面我们要将先序遍历由递归形式变成非递归形式。按照常理来说,只要模拟递归函数中的隐含的栈操作,就能够把递归变成非递归。所以,二叉树先序遍历的非递归形式应该是这样的:
|
|
这里有一个问题,将输出语句放到两个push()操作之间或者之后,能使二叉树遍历形式变成中序或者后序吗?答案是不能。要注意这里对当前节点的访问和两个子节点的压栈操作是同级别的,而子节点的访问必定在下一次循环中,所以对当前节点的访问必定在子节点之前,所以输出不管放哪儿都是先序遍历。
多项分布是二项分布的推广。二项分布(也叫伯努利分布)的典型例子是扔硬币,硬币正面朝上概率为\(p\), 重复扔\(n\)次硬币,\(k\)次为正面的概率即为一个二项分布概率。而多项分布就像扔骰子,有6个面对应6个不同的点数。二项分布时事件\(X\)只有2种取值,而多项分布的\(X\)有多种取值,多项分布的概率公式为 \[P(X_{1}=x_1,\cdots ,X_{k}=x_{k})= \begin{cases}&\frac{n!}{x_{1}!,\cdots,x_{k}!}p^{x_{1}}\cdots p^{x_{k}}\quad \textrm{when}\sum^{k}_{i=1}{x_{i}=n}\\&0 \qquad\qquad\qquad\qquad\qquad\;\textrm{otherwise.} \end{cases}\] 这个公式看上去像是莫名其妙地冒出来的,想要了解它首先必须要知道组合数学中的多项式定理。
多项式定理:当\(n\)是一个正整数时,我们有 \[(x_{1}+x_{2}+\ldots+x_{k})^n=\sum{\frac{n!}{r_1!r_2!\cdots r_k!}x_1^{r_1}\ldots x_k^{r_k}}\] 其中\(r_1+ \ldots + r_k=n,r_i \geq 0\)。