PCA,LDA和朴素贝叶斯

6
我正试图将线性判别分析应用于一个二类问题。据我所知,LDA假设两个类别具有相同的协方差矩阵,并且使用不同的均值对似然建模为高斯分布。
我尝试过的另一种分类器是朴素贝叶斯分类器。它忽略了预测变量之间的任何关联。
现在,当我将PCA应用于数据集时,我不明白会发生什么。按其定义,PCA算法旋转数据以使协方差矩阵成为对角矩阵。旋转不会使数据失真,但是由于协方差矩阵现在是对角线,因此朴素贝叶斯也能像LDA一样出色,甚至更好,因为LDA将有更多需要估计的参数。 然而,在我的数据上,无论是否进行PCA,朴素贝叶斯都被LDA性能超越。
实际上,只要使用所有主成分,数据就完全相同,这告诉我结果确实应该是这样。然而,协方差矩阵是对角线的... 大脑崩溃!
能有人向我解释一下吗?我希望我已经表达清楚我的问题。谢谢!

请尝试在stats.stackexchange.com上提问。 - Qnan
但是你如何使用PCA进行分类?这是一种降维/缩放的方法。 - Qbik
实际上,我正在进行分类。在使用QDA时遇到了问题,因为协方差矩阵不可逆(不满秩)。我使用PCA减少了维度,使得协方差矩阵变成了满秩。然后我开始思考朴素贝叶斯,这就引出了我发表这个问题的原因 :) - halfdanr
3个回答

6
PCA在降维方面非常有用(例如,如果训练集的大小对于数据的维数来说太小)。但是,如果您使用所有主成分,PCA将不会改善线性分类器的结果 - 如果您的类在原始数据空间中无法线性分离,则通过PCA旋转坐标轴也无法改变这一点。
另一个关于PCA的要点是,它基于整个样本集的统计信息计算坐标旋转,而没有考虑类标签。即使您的类在PCA之前和之后都是完全线性可分的,也不能保证它们会被每个转换后的坐标轴独立地分开(即,线性决策边界与任何转换后的坐标轴都不平行)。在这种情况下,我期望朴素贝叶斯的精度会更低,因为按定义,它会独立地处理每个坐标轴。

非常好的观点。第二段正好解释了我做错的地方:)。感谢清晰的解释。 - halfdanr

1
据我所知,PCA本身并不能消除变量之间的依赖关系,只是找到了数据的重新参数化。如果您仅保留少数高方差维度(这被称为降维),可能会有所帮助。然而,在仅有两个类别和许多相互依赖的特征的情况下,使用判别分类器可能比PCA+bayes更有效。

谢谢你的回答!是的,我很确定PCA不会改变数据本身,但我不确定正在发生什么。毕竟,如果我在旋转后的数据上计算协方差矩阵,我得到一个对角矩阵,这似乎是朴素贝叶斯的理想条件。所以我的想法一定有错,但我看不出来错在哪里... - halfdanr
@onkel 你是否混淆了代数意义下的“线性无关”和概率意义下的“条件独立”?我认为PCA不能使变量在后一种意义上独立。 - Qnan
@onkel 另外,这里有一个关于PCA的一般讨论 http://stats.stackexchange.com/questions/2691/making-sense-of-principal-component-analysis-eigenvectors-eigenvalues 和一些有用的链接。 - Qnan
没错,我确实忘记了条件独立性!我想我已经解决了这个问题。我想把自己的解释作为答案发布,但似乎无法做到(抱歉,对这个网站还不太熟悉)。不管怎样,感谢你的帮助。 - halfdanr
@Qnan,你能再详细解释一下条件独立和线性独立之间的区别吗?毕竟,PCA使用协方差矩阵来测量条件依赖性。因此,在这种特殊情况下,消除线性依赖性是否也会消除(线性)条件依赖性?当然,可能会有PCA无法发现的非线性依赖性(如文章中第一张图所示)。但重点在于——在某些情况下,PCA确实会消除条件依赖性。或者我错了吗? - senderle

0
@bogatron,只是想指出朴素贝叶斯并不要求问题在某个维度上是线性可分的。在一个三维空间中的两类问题中,决策边界位于
p(x|1)p(y|1)p(z|1) = p(x|2)p(y|2)p(z|2) 

如果我们假设一个均匀的假设先验,则:
P(M1)=P(M2)=0.5. 

根据具体的 p(.|1) 和 p(.|2) 的形式,边界可能会复杂且非线性,并且不平行于任何轴。


我并不是在暗示朴素贝叶斯需要类在一维上线性可分。与问题相关的问题是,当它们不是线性可分时,由于其条件独立性假设,朴素贝叶斯可能会产生显着较低的准确度,并且可以轻松构造证明这一点的案例。 - bogatron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接