UA MATH574M 统计学习II 高维数据的二元分类

UA MATH574M 统计学习II 高维数据的二元分类


上一讲提到了高维数据相比低维数据的特殊性,并介绍了处理高维数据二元分类最简单的一个模型independent rule。观察LDA的系数可以发现,仅想办法提高协方差估计的合理性不足以让模型的泛化能力达到最好,因为决定系数的其实是Σ1(μ1μ0)\Sigma^{-1} (\mu_1-\mu_0),所以应该想办法改进这一项的估计。这一讲讨论按这个思想来处理高维数据二元分类问题的模型。

LDA的直观解释

之前推导过LDA的公式:
lnP(Y=1X=x)P(Y=0X=x)=lnπ1exp{12(xμ1)TΣ1(xμ1)}π0exp{12(xμ0)TΣ1(xμ0)}=[12(xμ1)TΣ1(xμ1)+lnπ1][12(xμ0)TΣ1(xμ0)+lnπ0] \ln{\frac{P(Y=1|X=x)}{P(Y=0|X=x)}} = \ln{\frac{\pi_1 \exp{\{-\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1)\}}} {\pi_0 \exp{\{-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0)\}}}} \\ = \left[-\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1) + \ln \pi_1 \right] - \left[-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0) + \ln \pi_0 \right]
显然分类就是根据这个式子来做的,如果前面这个中括号比后面那个大,就分成label为1的那类。定义判别函数
δk(x)=(xμk)TΣ1(xμk)+2lnπk,k=0,1\delta_k(x) = -(x-\mu_k)^T\Sigma^{-1}(x-\mu_k) + 2\ln \pi_k,k=0,1
则分为label为1的那类的条件可以表示为
δ1(x)δ0\delta_1(x) \ge \delta_0
更一般的其实可以把二元分类问题表示为maxkδk(x)\max_k \delta_k(x)。在这个判别函数中,μk\mu_k叫做类别kk的Centroid(在dd维空间中,正态分布集中在超椭球体中,其均值位于这个超椭球体的中心),下面这项叫做Mahalanobis距离:
(xμk)TΣ1(xμk)(x-\mu_k)^T\Sigma^{-1}(x-\mu_k)
假设Σ=Id\Sigma=I_d,这个距离退化为欧氏距离,当ΣId\Sigma \ne I_d时,这个距离可以理解为在协方差矩阵Σ\Sigma的奇异值定义的仿射坐标中的距离。因为欧式距离是点到点的距离(更准确的是样本特征到某个类别的特征的centroid的距离),这里考虑的是点到分布的距离,所以要排除分布Spread的程度的影响,因此Mahalanobis距离更合理。因此
maxkδk(x)mink (xμk)TΣ1(xμk)2lnπk\max_k \delta_k(x) \Leftrightarrow \min_k\ (x-\mu_k)^T\Sigma^{-1}(x-\mu_k) - 2\ln \pi_k
即LDA的本质其实就是判断样本点离哪个centroid更近,然后把样本分到对应的类别。先验的意义在于给基于样本数据算出来的距离增加一个加项。因为2lnπk>0- 2\ln \pi_k>0,并且先验越大,加项越大;先验越小,加项越小。

NSC

NSC全称是Nearest Shrunken Centroid,是2002年提出来的方法。这个方法判别函数保持不变
δk(x)=(xμk)TΣ1(xμk)+2lnπk,k=0,1\delta_k(x) = -(x-\mu_k)^T\Sigma^{-1}(x-\mu_k) + 2\ln \pi_k,k=0,1
分类思路也是最大化判别函数,但在参数估计的时候做一些调整。首先是对高维数据的处理,为了保证协方差矩阵可逆,这里用的估计与IR类似,但增加了一个可调整参数:
D^=diag(Σ^)+s02Id\hat{D}=diag(\hat{\Sigma}) + s_0^2 I_d
通常s02s_0^2Σ^jj\hat{\Sigma}_{jj}的中位数。NSC最重要的思想在于shrinking,因为在LDA计算Mahalanobis距离的时候,用的是组内均值μk\mu_k和总体的pooled covariance,所以计算数据到某一class的Mahalanobis距离的时候会受到其他特征的影响,从而放大原始数据中的噪音,降低分类问题的精度。为此NSC给出的μk\mu_k的估计量是
i=1nxijn+mk(sj+s0)tkj,j=1,,d,k=1,2 \frac{\sum_{i=1}^n x_{ij}}{n}+m_k(s_j+s_0)t_{kj}',j=1,\cdots,d,k=1,2
第一项是第jj个特征的样本均值,记为μˉ^j\hat{\bar{\mu}}_j,第二项是(第kk个类别关于第jj个特征的)调整项,
mk=1nk+1n,sj2=Σ^jjtkj=sgn(tkj)(tkjΔ),tkj=μ^kjμˉ^jmk(sj+s0)m_k = \sqrt{\frac{1}{n_k} + \frac{1}{n}} , s_j^2 = \hat{\Sigma}_{jj} \\ t_{kj}'=sgn(t^*_{kj})(t^*_{kj}-\Delta), t_{kj}^* = \frac{\hat{\mu}_{kj} -\hat{\bar{\mu}}_j }{m_k(s_j+s_0)}
调整项目的构成看起来有点负责,但其实是比较直观的。mk(sj+s0)m_k(s_j+s_0)tkjt_{kj}^*的分母抵消后,剩下就是μ^kjμˉ^j\hat{\mu}_{kj} -\hat{\bar{\mu}}_j,这一项其实就是两个centroid在第jj个特征上的投影,如果两个centroid在这个特征上的投影距离非常小,我们有理由相信这两个类别的数据在这个特征上差别不明显,也就是这个特征对二分类的贡献不会很大,甚至可能因为太靠近容易混淆从而降低精度,因此设置一个阈值mk(sj+s0)Δm_k(s_j+s_0)\Delta作为标准,如果两个centroid在这个特征上的投影距离小于这个阈值,就认为两个centroid的这个特征没有1显著差别,可以将这个特征视为噪声,从而使其shrink为0;如果超过了这个阈值,就认为这个特征对分类是有帮助的,就把特征保留下来。这个模型可以用R中的PAM包实现。

除了这中改进思路外还可以用给Logistics Regression或者LDA添加penaly的方法,那一类方法在之后讲了penalty再讨论。

发布了47 篇原创文章 · 获赞 0 · 访问量 1253
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览