Answers:
有人将其标记为无监督的技术并不少见。您可以对特征向量进行一些分析,这有助于解释数据的行为。当然,如果您的转换仍然具有很多功能,那么此过程可能会非常困难。不过,有可能因此我将其视为机器学习。
编辑:
由于选择了我的答案(不知道为什么),所以我想我会增加更多内容。
PCA做两件事是等效的。首先,通常所说的,它使方差最大化。其次,它通过查看成对距离将重构误差最小化。
通过查看特征向量和特征值,可以轻松地推论哪些变量和特征对方差有所贡献,以及不同变量如何与其他变量一起移动。
最后,它实际上取决于您如何定义“学习”。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中使用的编码器-解码器体系结构的重要组成部分GANs和GANs是目前ML研究的前沿。
那么回到您的问题:PCA是一种“机器学习算法”吗?好吧,如果不是,那么您应该准备就协作过滤,主题建模,社区检测,网络中心性以及嵌入模型说同样的话。
仅仅因为它是简单的线性代数并不意味着它也不是魔术。