1.维度灾难与数据维度
维度灾难的理解
数据特征维度非常多的时候引起的灾难。假设在每一个特征空间中,取值范围都是[0, 1]。如果一个样本能够cover住 0.1 × 0.1 × 0.1 0.1\times0.1\times0.1 0.1×0.1×0.1小空间中的所有其他样本,也就是这个样本能够作为其他所有在这个小空间中样本的预测值(KNN近邻思想)。那么如果有3个特征维度,就需要 1 0 3 10^{3} 103个这样的小立方空间去cover所有的空间。如果有4个特征维度, 就需要 1 0 4 10^{4} 104个这样的小立方空间去cover所有的空间。也就是说,如果有n个特征维度,至少要有 1 0 n 10^{n} 10n个样本去cover住所有的空间。也就是说随着空间特征维度增加,我需要的去铺满整个特征空间的样本数量呈指数级增长。
数据的维度
输入数据的维度不一定是数据真实的维度。一个三维数据集可能是在一个二维曲面上的有规律的分布,所以数据集真实维度是二维的。
比如说,一个 256 × 256 256\times256 256×256的人脸,表面上的数据维度是65536。但是假设我们随机生成一张 256 × 256 256\times256 256×256的矩阵图片,这个图像大概率没有任何含义,生成一个有意义的图片的概率几乎为0.说明一张人脸图像的真实维度其实远远小于65536。再换一个角度想,人脸其实是由一段几十对基因碱基对决定的,碱基对序列中一点微小的变化就会导致人脸不同,也就是生物本质上的数据维度可能就几十个维度。从深度学习工程实践上来说,一般人脸图像的真实维度就是64维到512维之间,就只有几十维到几百维之间。
也就是说数据维度灾难可以避免或解决,方法有:
- 减少数据维度。分为降维与特征选择两种方法。降维比特征选择复杂,新的特征是通过所有原始特征的函数变换得到的,依赖于某一种机器学习算法。
- 引入“先验”知识。
深度学习是通过引入“先验”知识来解决数据维度灾难。
特征选择是一个np hard的问题,也就是一个指数级复杂度的问题, 它的相关算法都是贪心的。
1. 过滤法:
假设 y = f ( x 1 , x 2 , x 3 , x 4 ) y=f(x_1, x_2, x_3, x_4) y=f(x1,x2,x3,x4), 我们通过计算 y y y和 x 1 x_1 x1的"相关性"(不一定是相关系数,也可能是机器模型得到,也可能是通过统计手段得到),也就是打个分,判断 x 1 x_1 x1有多大的概率预测出 y y y。然后第二步,依次计算 y y y与其他特征的"相关性"。最后只保留相关分数较高的特征。
这是个贪心方法,每次打分只考虑单个特征的相关性,但是没有考虑一组特征一起与 y y y的相关性。所以我们应该考虑 C n 1 + C n 2 + C n 3 + C n 4 C_{n}^{1}+C_{n}^{2}+C_{n}^{3}+C_{n}^{4} Cn1+Cn2+Cn3+Cn4种特征组合进行打分。也就是 2 n − 1 2^{n}-1 2n−1种特征选择。所以随着特征数量增多,使用过滤法,时间复杂度是指数级别的,所以是一个np hard的问题。
2.包裹法:
时间复杂度依然是 2 n − 1 2^{n}-1 2n−1。本质上也是贪心算法
2. 降维与特征选择
PCA是最简单的特征降维方法,本质上是找一个超平面,使得所有样本投影到这个超平面上的距离最小,投影的点在超平面上尽量分布得散。假设样本是在二维空间,超平面由 c 1 c_1 c1这条直线确定。
最小重构性
样本点到这个超平面的距离都足够小。
最大可分性
找到新的坐标轴,样本投影点的区分度要足够的大。也就是离散的越开越好,分得越开越有利于分类。表示方法就是样本投影点投影在 c 1 c_1 c1轴上的坐标离原点的距离越大越好。
基于最小重构性和最大可分性,能分别得到PCA的两种等价推导。
证明一下最大可分性。
图中的样本点投影到新的坐标轴,我们关心的是投影点到原点的距离。数据已经做了去均值化处理,因此距离就是方差,因此问题就转化为找到新的坐标系使得数据在新的坐标系下方差足够大。
假设我们有一个n个样本的数据集以及一个线性变换矩阵
W
W
W,两个相乘得到新的数据坐标:
(
x
11
,
x
12
,
…
x
1
m
x
21
,
x
22
,
…
x
2
m
x
n
1
,
x
n
2
,
⋯
x
n
m
)
n
×
m
W
=
(
x
11
′
x
12
′
⋯
x
1
m
′
x
21
′
x
22
′
x
2
m
′
x
n
1
′
x
n
2
′
⋯
x
n
m
′
)
\left(\begin{array}{l} x_{11}, x_{12}, \ldots x_{1 m} \\ x_{21}, x_{22}, \ldots x_{2 m} \\ x_{n 1}, x_{n 2}, \cdots x_{n m} \end{array}\right)_{n\times m} W = \left(\begin{array}{cccc} x_{11}^{\prime} & x_{12}^{\prime} & \cdots & x_{1 m}^{\prime} \\ x_{21}^{\prime} & x_{22}^{\prime} & & x_{2 m}^{\prime} \\ x_{n 1}^{\prime} & x_{n 2}^{\prime} & \cdots & x_{n m}^{\prime} \end{array}\right)
⎝⎛x11,x12,…x1mx21,x22,…x2mxn1,xn2,⋯xnm⎠⎞n×mW=⎝⎛x11′x21′xn1′x12′x22′xn2′⋯⋯x1m′x2m′xnm′⎠⎞
要看新的坐标的平方和。因为数据已经做了去均值化处理。针对第一列做平方和就是针对样本在第一条坐标轴上的投影求方差,也就是让方差足够的大
max
x
11
′
2
+
x
12
′
2
+
…
x
1
m
′
2
+
x
21
′
2
+
⋯
x
2
m
′
2
+
x
n
11
′
2
+
⋯
x
n
m
′
2
\begin{aligned} \max \quad&x_{11}^{\prime 2}+x_{12}^{\prime 2}+\ldots x_{1 m}^{\prime2}+x_{21}^{\prime2}+\cdots x_{2 m}^{\prime2} \\ &+x_{n 11}^{\prime 2}+\cdots x_{n m}^{\prime 2} \end{aligned}
maxx11′2+x12′2+…x1m′2+x21′2+⋯x2m′2+xn11′2+⋯xnm′2
通过矩阵迹的性质,就有
max
W
tr
(
W
T
X
T
X
W
)
s.t.
W
T
W
=
I
,
\max _{\mathbf{W}} \operatorname{tr}\left(\mathbf{W}^{\mathrm{T}} \mathbf{X^{\mathrm{T}} X} \mathbf{W}\right)\\ \text { s.t. } \mathbf{W}^{\mathrm{T}} \mathbf{W}=\mathbf{I} \text {, }
Wmaxtr(WTXTXW) s.t. WTW=I,
W一定有一个约束,因为W的每一个列向量都应该是标准正交的单位向量。这里要注意,很多博客上直接将上述最大化式子等价于样本在每一个坐标轴上的投影最大化。感觉好像对,但是证明这一步其实比较烦。也就是
max
∑
(
w
i
T
X
T
X
w
i
)
\max \sum \left(w_{i}^{\mathrm{T}} \mathbf{X^{\mathrm{T}} X} w_{i}\right)
max∑(wiTXTXwi)
但是从上一步(3)到这一步(4)其实并不显然,需要证明。可参考此博文
XGB的三种特征打分方法
Gain
首先计算出对模型中的每个树采取每个特征的贡献,然后某个特征相对于这些贡献计算出的相对贡献就是增益。与其他特征相比,此度量值的较高值意味着它对于生成预测更为重要。
Cover
覆盖度量指的是与此功能相关的观测的相对数量。比如,如果有100个观察值,4个特征和3棵树,并且假设特征1 x 1 x_1 x1分别用于决定树1, 树2和树3中的10个,5个和2个观察值的叶子节点。那么该度量将计算此功能的覆盖范围是10+5+2=17。这将针对及所有4项功能进行计算,并将以17个百分比表示所有功能的覆盖指标。
也就是由某个特征A分裂之后,下面有多少个样本落在了子树下,落入决定的样本越多,这个特征越重要。
freq
频率表示特定特征在模型树中发生的相对次数的百分比。在上面例子中,如果feature1有2个分裂,1个分裂和3个分裂在树1,树2和树3中发生,那么特征1的权重将是2+1+3=6。特征1的频率倍计算为其在所有特征的权重上的百分比权重。
其他问题
1.经过提升学习, 发现提升后的模型比某个弱学习器的正确率还低,最终应该选哪个模型?
造成提升后模型性能不佳的原因是:1. 过拟合。2.噪声太高,降低方差和偏差效果不大。最终选择验证集上效果好的模型。
2.请问在二分类问题中,当两类数据满足高斯分布且协方差矩阵相同时,线性判别分析会不会产生贝叶斯最优分类器
是的。Logistic回归也能差生贝叶斯最优分类器。