我最近了解了内核技巧的使用,它将数据映射到更高维度的空间中,以尝试将这些维度中的数据线性化。有没有我应该避免使用这种技术的情况?只是找到正确的核函数的问题吗?
对于线性数据,这当然没有帮助,但对于非线性数据,这似乎总是有用的。在训练时间和可扩展性方面,使用线性分类器比非线性分类器容易得多。
我最近了解了内核技巧的使用,它将数据映射到更高维度的空间中,以尝试将这些维度中的数据线性化。有没有我应该避免使用这种技术的情况?只是找到正确的核函数的问题吗?
对于线性数据,这当然没有帮助,但对于非线性数据,这似乎总是有用的。在训练时间和可扩展性方面,使用线性分类器比非线性分类器容易得多。
一般来说,对于线性方法,您为内核技巧付出的代价是泛化界限更差。对于线性模型,它的VC 维度在维度数量方面也是线性的(例如,感知器的 VC 维度是d + 1
)。
现在,如果您要对高维空间执行复杂的非线性变换,那么假设集的 VC 维会明显更大,因为它现在就新的高维空间中的维数而言是线性的。有了它,泛化界限就上升了。
支持向量机通过做两件事以最有效的方式利用内核技巧:
硬边距 SVM 模型的泛化界限与支持向量的数量有关,而软边距与权重向量的范数有关 - 因此在第一种情况下它可能无关紧要,在第二种情况下几乎无关紧要. 无论内核目标空间有多“大”,就泛化而言,您不会丢失任何东西/太多(参考:(i)C. Cortes 和 V. Vapnik。支持向量网络。机器学习,20:273– 297, 1995 ; (ii) Shawe-Taylor, J.; Cristianini, N., “关于软边距算法的泛化”, 信息理论, IEEE Transactions on, vol.48, no.10, pp.2721,2735, 2002 年 10 月)。
支持向量机找到最大化边距的分离平面,这进一步简化了假设集(我们不考虑所有可能的分离平面,只考虑那些最大化边距的分离平面)。简单的假设集也导致更好的泛化界限(这与第一点有关,但更直观)。
对于线性数据,这当然没有帮助,但对于非线性数据,这似乎总是有用的。在训练时间和可扩展性方面,使用线性分类器比非线性分类器容易得多。
@BartoszKP 已经解释了为什么内核技巧有用。但是,为了完全解决您的问题,我想指出,内核化并不是处理非线性可分数据的唯一选择。
对于模型的去线性化,至少有三种好的、常见的替代方案:
总而言之 - 核化是一种很好的去线性化技术,当问题不是线性时,您可以使用它,但这不应该是盲目的“如果那么”方法。这只是至少为数不多的有趣方法之一,根据问题和要求,这可能会导致各种结果。特别是,ELM 倾向于找到与核化 SVM 给出的解决方案非常相似的解决方案,同时可以更快地训练行数(因此它的扩展性比核化 SVM好得多)。
我将尝试为您的问题提供非技术性的答案。
事实上,线性应该是首选,并且应该是首选,因为您提到的原因、训练时间、可扩展性、易于解释最终模型、选择处理原始模型或对偶模型、对过度拟合的容忍度更高等。
如果线性模型不能产生令人满意的性能,那么您可以尝试非线性解决方案。需要考虑的一些权衡包括: