这部分内容是紧跟着上一章LDA和QDA算法详解的,所以在这里我们不会涉及到更多的算法的推到,只是对上一章的算法做出解释。
LDA可以作为有监督学习中的降维方法使用。(我们通常说的降维是无监督学习中的,是一种数据处理的方法,比如PCA,所以遇到一个有监督学习的降维对我而言显得很难能可贵)
它很厉害,因为我们最终得到的空间的维数一定不大于类别数减1。(记类别数为K,则我们我们降维所得到的空间不会大于K-1)这是由矩阵乘法的性质决定的。
我们通常在机器学习中所说的降维,指代的是一种对数据进行处理的算法;而在对模型优化过程中所讲的降维,是一种计算方式。
那么为什么LDA可以用来降维,QDA却不行。我们知道,LDA作为QDA的一种特殊情况,它假定了所有类别的数据服从统一形式的分布,所以投影过程中,它都遵循这样的规则,不会更改数据的分布。所以,对于LDA,它在降维过程中不会破坏数据之间的原始分布,通过LDA降维获得的数据可以继续为其它模型提供服务。
但是QDA不一样,QDA在降维的时候,针对不同类别的数据,它对其作出了有关概率分布的调整(直观上表现为调整了不同类别的数据的协方差矩阵)。所以,QDA降维后的数据只能用于QDA自身算法,QDA降维不能作为一种数据处理方法为其它算法提供服务。
先解释一下开头的这句话。先前我们说降维,我们的目标维数不会大于K-1。这是很好理解的,因为两点确定一条直线,三个点(不共线)就能确定一个平面。
这个方面我不太理解,只能从数学的角度去理解。这里给出一位知乎大佬的回答。
其次,我们可以看出,sklearn中对LDA的数学算法的解读又两种:
这样,我们可以尽可能的保留原样本空间的信息并在把它投影到低维空间时通过距离体现出来。
最后,在通过LDA降维后,我们还可以通过PCA继续降维。
我们发现,在其它线性模型中,我们时常会遇到,特征数大于样本数的情况,在那种情况下,模型会很不稳定。于是,我们是通过添加正则项( l 1 , l 2 l_1,l_2 l1,l2范数)来解决问题的。(正则项是对参数的约束,因此是Shrinkage收缩的一种体现)
在LDA中,我们依然会面对这样的情况。我们依然将“收缩”和“稀疏”作为对模型的优化手段。只不过,在LDA中,因为模型的参数不再是变量系数 ω \omega ω,而是协方差矩阵。因此,我们“惩罚”的主体也是协方差矩阵。
更详细(数学)解析可以参照“混音师阿辉”写的一篇博客。
sklearn里对Oracle 近似收缩做了一个强调。Oracle 近似收缩相比于普通的收缩做了一个假设,即假设数据是高斯分布。因此,在数据真的服从高斯分布时,Oracle 近似收缩有更好的性能。
sklearn介绍了三种不同的用于计算LDA(或QDA)的算法,分别是:
这方面有点专,就不展开了。