为什么在保留的总方差很小的情况下PCA效果很好?

时间:2019-01-05 05:52:40

标签: machine-learning pca

我通过在kaggle上浏览其他人的内核来学习机器学习,特别是这个Mushroom Classification kernel。作者首先将PCA应用于转换后的指标矩阵。稍后,他仅使用2个主要组件进行可视化。然后我检查了它保持了多少差异,发现只有16%的差异得以保持。

in [18]: pca.explained_variance_ratio_.cumsum()
out[18]: array([0.09412961, 0.16600686])

但是,测试结果具有90%的准确度,表明它运行良好。我的问题是,如果方差代表信息,那么当大量信息丢失时,ML模型如何才能很好地工作?

1 个答案:

答案 0 :(得分:2)

您应注意,原始向量空间中的许多变量都是稀疏编码的分类变量。 PCA并非最适合此类变量,因此不建议您在所引用的代码中使用PCA。

现在您显而易见的问题是:为什么它首先起作用?为什么只使用两个变量?问问自己:如果我告诉你颜色是红色和有ill(薄片),你能分辨出蘑菇是否有毒吗?如果您对蘑菇一无所知,那么在大多数情况下您都可以告诉您。这就是这里的算法正在做的事情。没有太多差异可以解释,因为变量很多,并且一些最有意义的变量(例如颜色)被稀疏编码,因此对于分布在许多变量上的PCA来说是有效的。

此外,我不会说它很好用,而可视化正是显示了这一点。考虑这张显示逻辑回归测试集结果的图像:logreg

根据测试结果,它具有90%的准确度。当您查看它时,您认为效果很好吗?左下角有可食用和有毒蘑菇的混合物。显然,这是我们两个计算出的特征还不够的地方。红宝石牛肝菌是红色且可食用。