我知道主成分分析是一种降维技术,即给定 10 个输入特征,它将产生较少数量的独立特征,这些特征是原始特征的正交和线性变换。
本身被认为是PCA
一种学习算法,或者它是一个数据预处理步骤。
我知道主成分分析是一种降维技术,即给定 10 个输入特征,它将产生较少数量的独立特征,这些特征是原始特征的正交和线性变换。
本身被认为是PCA
一种学习算法,或者它是一个数据预处理步骤。
PCA 实际上只是一个轮换。说真的,仅此而已:这是一种将数据旋转到新基础上的聪明方法。该基础具有使其可用作多个程序的预处理步骤的特性。
基是正交的。如果您的特征表现出多重共线性(两个或更多特征线性相关) ,这将非常有用:应用 PCA 保证为您提供不再是问题的基础。此过程称为主成分回归
基向量对于数据的传播是有意义的:它们是协方差矩阵的特征向量。这第二个属性产生了 PCA 作为降维技术的著名效用:在旋转数据之后,将数据投影到与总方差的很大一部分相关联的基向量的子集上会产生(通常)保留的低维表示(大多数)数据的(有趣的)结构属性。
那么:它是一种学习算法吗?这是一个哲学问题。是什么让某些东西成为学习算法?当然,PCA 不是一种“监督”学习算法,因为我们可以在有或没有目标变量的情况下进行,而且我们通常将“无监督”技术与聚类联系起来。
是的,PCA 是一个预处理程序。但是在你完全把它写成没有“学习”一些东西之前,我希望你考虑以下几点:PCA可以通过从字面上获取协方差矩阵的特征向量来计算,但这通常不是实践中的做法。一个数值等效且计算效率更高的过程是只取数据的SVD。因此,PCA 只是 SVD 的一种具体应用,所以问 PCA 是不是一种学习算法其实就是问 SVD 是不是一种学习算法。
现在,尽管您可能会觉得 PCA 不是一种学习算法,但这就是为什么您不应该对 SVD 做同样的事情感到舒服:它是主题建模和协同过滤的一种令人惊讶的强大方法。使其可用于这些应用的 SVD 的特性与使其可用于降维(即 PCA)的特性完全相同。
SVD 是特征分解的概括,即使作为 SVD 的约束版本,它也非常强大。您可以通过查看邻接矩阵的特征向量对图进行社区检测,或者通过查看转移矩阵的特征向量来确定马尔可夫模型的稳态概率,巧合的是,这也是PageRank的计算方式。
在幕后,PCA 正在执行一个简单的线性代数运算。但是,这与许多应用程序的基本操作完全相同,大多数人不会质疑将“机器学习”标签应用于这些应用程序。这类算法称为矩阵分解,甚至可以扩展到word2vec等复杂技术:实际上,您实际上可以通过将 PCA 应用于单词共现矩阵来获得类似 word2vec 的结果。再次概括,PCA 结果的另一个词是嵌入。Word2vec 可能是最著名的嵌入示例,但构建嵌入(作为中介)也是RNN中使用的编码器-解码器架构的重要组成部分和GAN,它们是目前 ML 研究的前沿。
回到你的问题:PCA 是“机器学习算法”吗?好吧,如果不是,您应该准备好对协同过滤、主题建模、社区检测、网络中心性和嵌入模型说同样的话。
仅仅因为它是简单的线性代数并不意味着它不是魔法。
有人将其标记为无监督技术并不少见。您可以对特征向量进行一些分析,这有助于解释数据的行为。当然,如果您的转换仍然有很多功能,那么这个过程可能会非常困难。尽管如此,这是可能的,因此我认为它是机器学习。
编辑:
由于选择了我的答案(不知道为什么),我想我会添加更多细节。
PCA 做了两件等效的事情。首先,也就是通常所说的,它使方差最大化。其次,它通过查看成对距离来最小化重建误差。
通过查看特征向量和特征值,推断哪些变量和特征导致方差以及不同变量如何与其他变量一起移动变得相当简单。
最后,这真的取决于你如何定义“学习”。PCA 学习一个新的特征空间来捕捉原始空间的特征。我倾向于认为这可能是有意义的。
复杂吗?不,不是真的,但这会削弱它作为一种算法的能力吗?不,我不这么认为。
当然,它不是一种学习算法,因为您在 PCA 中没有学到任何东西。但是,它可以用于不同的学习算法以在实际中达到更好的性能,就像大多数其他降维方法一样。
PCA 用于消除冗余特征。它找到数据高度分布的方向。它不关心数据的标签,因为它是一个以最小二乘意义表示数据的投影。多重判别分析,MDA
尝试找到最能分离数据的投影。后者考虑标签并找到可以最好地分离数据的方向,尽管它有一些关于找到的决策类型的细节。总结一下,PCA
这不是一种学习算法。它只是试图找到数据高度分布的方向,以消除相关特征。类似的方法,例如MDA
尝试寻找方向以对数据进行分类。虽然MDA
很像PCA
,但前者用于分类,它考虑了标签,而后者不直接用于分类。