Answers:
如您所提到的,存储内核矩阵需要内存随数据点数量成倍增长。传统SVM算法的训练时间也与数据点的数量成线性关系。因此,这些算法不适用于大数据集。
一种可能的技巧是将内核化的SVM重新格式化为线性SVM。内核矩阵的每个元素表示数据点和(可能是非线性地)映射到特征空间后的点积:。特征空间映射 X 我X Ĵ ķ 我Ĵ = Φ (X 我)·&Φ (X Ĵ)Φ是由内核函数隐式定义的,内核化SVM不会显式计算要素空间表示形式。这对于中小型数据集在计算上是有效的,因为特征空间可以是非常高的维,甚至是无限的维。但是,如上所述,这对于大型数据集变得不可行。相反,我们可以将数据显式非线性地映射到特征空间,然后在特征空间表示上有效地训练线性SVM。可以将特征空间映射构造为近似给定的内核函数,但是使用的维数少于“完整”特征空间映射。对于大型数据集,这仍然可以为我们提供丰富的特征空间表示,但是维数少于数据点。
核近似的一种方法是使用Nyström近似(Williams和Seeger,2001年)。这是使用较小的子矩阵近似大矩阵的特征值/特征向量的方法。另一种方法使用随机特征,有时被称为“随机厨房水槽”(Rahimi和Recht 2007)。
在大型数据集上训练SVM的另一个技巧是用一组较小的子问题来近似优化问题。例如,对原始问题使用随机梯度下降是一种方法(在许多其他方法中)。在优化方面已经做了很多工作。Menon(2009)进行了很好的调查。
参考文献
威廉姆斯和西格(2001)。使用Nystroem方法来加速内核计算机。
Rahimi and Recht(2007)。大型内核计算机的随机功能。
梅农(2009)。大规模支持向量机:算法和理论。