PCA,LDA和朴素贝叶斯

时间:2012-08-30 08:23:30

标签: machine-learning

我正在尝试将线性判别分析应用于两类问题。据我了解,LDA假设两个类具有相同的协方差矩阵,然后将可能性建模为具有不同均值的高斯分布。

我尝试的另一个分类器是天真的贝叶斯。它忽略了预测变量之间的任何相关性。

现在,我不明白将PCA应用于数据集时会发生什么。根据其定义,PCA算法旋转数据使得协方差矩阵是对角线的。在旋转中没有任何东西丢失,但由于协方差矩阵现在是对角线的,所以天真的贝叶斯算法不应该和LDA一样好,甚至更好,因为LDA会有更多的参数来估算吗?然而,根据我的数据,朴素贝叶斯的表现优于LDA,有或没有PCA。

实际上,只要我使用所有主要组件,数据就完全相同,这告诉我结果应该确实如此。然而协方差矩阵是对角线...... 脑崩溃

有人可以向我解释一下吗?我希望我已经清楚地表达了我的问题。谢谢!

3 个答案:

答案 0 :(得分:6)

PCA可用于降低维数(例如,如果训练集的大小对于数据维度的数量而言太小)。但是如果使用所有主成分,PCA将无法改善线性分类器的结果 - 如果您的类在原始数据空间中不能线性分离,那么通过PCA旋转坐标不会改变它。 / p>

关于PCA的另一点需要注意的是,它是根据整个样本集的统计数据计算坐标旋转,而不考虑类标签。尽管您的类可以完全线性分离(在PCA之前和之后),但这并不意味着它们可以通过每个变换坐标独立分离(即,线性决策边界与您的任何变换不平行)坐标轴)。在这种情况下,我希望朴素贝叶斯能够产生较低的精度,因为根据定义,它会独立地处理每个轴。

答案 1 :(得分:1)

据我所知,PCA本身并没有消除变量之间的依赖关系,只是找到了数据的重新参数化。如果您随后丢弃了除少数顶部方差维度之外的所有维度(这称为降维),这可能会有所帮助。但是,我认为,在只有两个类的设置和使用判别分类器的许多相互依赖的特征可能比PCA +更好地工作。

答案 2 :(得分: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) and p(.|2)的具体形式,边界可能是复杂和非线性的,并且不与任何轴平行。