在 NLP 中,特征的维度总是非常巨大的。例如,对于手头的一个项目,特征的维度几乎是 2 万(p = 20,000),每个特征都是一个 0-1 的整数,以显示论文中是否呈现了特定的单词或二元组(一篇论文是一个数据点 $x \in R^{p}$)。
我知道特征之间的冗余是巨大的,所以降维是必要的。我有三个问题:
1)我有 1 万个数据点(n = 10,000),每个数据点有 10,000 个特征(p = 10,000)。进行降维的有效方法是什么?矩阵 $X \in R^{n \times p}$ 是如此巨大,以至于 PCA(或 SVD,截断 SVD 都可以,但我不认为 SVD 是减少二进制特征维度的好方法)和 Bag单词的数量(或 K-means)很难直接在 $X$ 上进行(当然,它是稀疏的)。我没有服务器,我只是用我的电脑:-(。
2)如何判断两个数据点之间的相似度或距离?我认为欧几里得距离可能不适用于二元特征。L0范数怎么样?你用什么?
3)如果我想使用SVM机器(或其他内核方法)进行分类,我应该使用哪个内核?
非常感谢!